如何确定连接被拒绝问题?

如何确定连接被拒绝问题?

我们有一个 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 的通信

相关内容