我们有一个 Linux 服务器,它在端口 5701 上运行 java 进程(Hazelcast)。但是,我们在连接到该服务器时遇到问题,并导致连接被拒绝问题。以下是详细信息:
我们有 3 个节点。其中两个节点(节点 A 和节点 B)通过 telnet 通过端口 5701 相互连接。但是,还有第三个节点(节点 C)。当节点 C 尝试通过 telnet 连接到节点 A 时,它可以工作。但是,当节点 C 尝试通过 telnet 连接到节点 B 时,会导致连接被拒绝。
这是 telnet 的输出:
节点 A 连接到节点 B
11:54:16 # telnet <node B hostname> 5701
Trying <node B hostname>...
Connected to <node B hostname>.
Escape character is '^]'.
节点 C 连接到节点 B
11:38:44 # telnet <node B hostname> 5701
Trying <node B hostname>...
telnet: connect to address <node B hostname>: Connection refused
我还检查了节点 B 上的防火墙状态。
12:30:57 # firewall-cmd --list-all
public
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 5701/tcp 8089/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
节点A的防火墙状态
12:32:02 # firewall-cmd --list-all
public (active)
target: DROP
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client ssh
ports: 5701/tcp 8089/tcp 8000/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
防火墙状态节点 C:
12:32:30 # firewall-cmd --list-all
public (active)
target: DROP
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client ssh
ports: 8443/tcp 8089/tcp 5701/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
注:我发帖于堆栈溢出但还没有收到任何回复。所以,在这里发布。
答案1
这个问题是由于我们使用的云提供商的 NAT 设计造成的。同一可用区内的节点之间通过浮动 IP 的通信受到限制,导致连接被拒绝。由于我们的 DNS 别名始终映射到浮动 IP,因此我们必须更新节点 C 上的 /etc/hosts 以将私有 IP 映射到 dns 别名。云提供商允许使用私有 IP 进行同一 AZ 内和跨 AZ 的通信