知道为什么无法从另一个 GCP 实例访问此端口吗?
Any idea why this port is not reachable from another GCP instance?
我已经创建了一个 Ignite 数据库实例,它应该在端口 10800 上接受来自瘦客户端的连接。在 SSH-ing 到该实例和 运行 netstat -tunlp
之后,我可以看到:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp 0 0 0.0.0.0:10800 0.0.0.0:* LISTEN 871/java
...
来自另一台主机的端口扫描却显示:
abcdef@ssh-instance:~$ sudo nmap -sS -p10800-10800 x.x.x.x
Starting Nmap 7.70 ( https://nmap.org ) at 2020-03-08 03:33 UTC
Nmap scan report for a.b.d.e.f (x.x.x.x)
Host is up (0.00020s latency).
PORT STATE SERVICE
10800/tcp filtered gap
Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds
所以它似乎无法访问。一开始以为是GCP防火墙屏蔽了端口,但是启用了规则default-allow-internal
,所以端口应该是暴露的。我也尝试在连接时启用防火墙日志,但没有生成日志。
知道会发生什么吗?
Apache Ignite 使用更多端口和端口范围,而不仅仅是端口 10800(这只是 JDBC 连接器端口)
看看这里,这些是标准配置中使用的端口:
- https://dzone.com/articles/a-simple-checklist-for-apache-ignite-beginners
- Ports required for Apache Ignite Cluster
可能端口 10800 不是您需要的端口,或者不仅如此。
因此,根据您的配置,它可能会有很大变化。
你如何设置集群?
如何启动服务器节点并指定节点列表?
通过Java代码,您可以指定节点列表做这样的事情...
TcpDiscoverySpi discover = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder();
finder.setAddresses(Arrays.asList("10.10.10.1", "10.10.10.2")); // input the relevant IP addresses
discover.setIpFinder(finder);
...当然要使用正确的(本地、内部)IP 地址。
关于 GCP 测试的最后一个说明,请 运行 在您的节点上进行一些 netcat 测试。
如果您在一台服务器上启动侦听器,您应该能够从另一台服务器连接。
在第一台服务器上启动 netcat 侦听器(例如:此服务器具有私有 IP 10.0.0.1)
# netcat -l -p 10800
然后从另一台服务器(在您的 GCP 专用网络内)连接到侦听器
# netcat 10.10.10.1 10800
请根据需要测试更多端口。
默认 GCP 设置:
- 您应该能够在 internal/private IP 上从 GCP 连接到 GCP
地址(甚至实例 运行ning 在不同的 GCP 区域)
- 您应该无法连接到 public/external 个 IP 地址
即使连接来自 GCP 实例
希望对您有所帮助!
感谢您的回答!我又尝试了一些东西,最后发现我的实例需要有一个外部 IP。使用外部 IP 创建实例后,实例可以访问! (我仍在使用内部 IP 连接,幸运的是我的防火墙仍然阻止来自互联网的连接)
我已经创建了一个 Ignite 数据库实例,它应该在端口 10800 上接受来自瘦客户端的连接。在 SSH-ing 到该实例和 运行 netstat -tunlp
之后,我可以看到:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp 0 0 0.0.0.0:10800 0.0.0.0:* LISTEN 871/java
...
来自另一台主机的端口扫描却显示:
abcdef@ssh-instance:~$ sudo nmap -sS -p10800-10800 x.x.x.x
Starting Nmap 7.70 ( https://nmap.org ) at 2020-03-08 03:33 UTC
Nmap scan report for a.b.d.e.f (x.x.x.x)
Host is up (0.00020s latency).
PORT STATE SERVICE
10800/tcp filtered gap
Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds
所以它似乎无法访问。一开始以为是GCP防火墙屏蔽了端口,但是启用了规则default-allow-internal
,所以端口应该是暴露的。我也尝试在连接时启用防火墙日志,但没有生成日志。
知道会发生什么吗?
Apache Ignite 使用更多端口和端口范围,而不仅仅是端口 10800(这只是 JDBC 连接器端口)
看看这里,这些是标准配置中使用的端口:
- https://dzone.com/articles/a-simple-checklist-for-apache-ignite-beginners
- Ports required for Apache Ignite Cluster
可能端口 10800 不是您需要的端口,或者不仅如此。
因此,根据您的配置,它可能会有很大变化。 你如何设置集群? 如何启动服务器节点并指定节点列表?
通过Java代码,您可以指定节点列表做这样的事情...
TcpDiscoverySpi discover = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder finder = new TcpDiscoveryVmIpFinder();
finder.setAddresses(Arrays.asList("10.10.10.1", "10.10.10.2")); // input the relevant IP addresses
discover.setIpFinder(finder);
...当然要使用正确的(本地、内部)IP 地址。
关于 GCP 测试的最后一个说明,请 运行 在您的节点上进行一些 netcat 测试。 如果您在一台服务器上启动侦听器,您应该能够从另一台服务器连接。
在第一台服务器上启动 netcat 侦听器(例如:此服务器具有私有 IP 10.0.0.1)
# netcat -l -p 10800
然后从另一台服务器(在您的 GCP 专用网络内)连接到侦听器
# netcat 10.10.10.1 10800
请根据需要测试更多端口。
默认 GCP 设置:
- 您应该能够在 internal/private IP 上从 GCP 连接到 GCP 地址(甚至实例 运行ning 在不同的 GCP 区域)
- 您应该无法连接到 public/external 个 IP 地址 即使连接来自 GCP 实例
希望对您有所帮助!
感谢您的回答!我又尝试了一些东西,最后发现我的实例需要有一个外部 IP。使用外部 IP 创建实例后,实例可以访问! (我仍在使用内部 IP 连接,幸运的是我的防火墙仍然阻止来自互联网的连接)