java Hazelcast使用临时端口进行出站通信,尽管配置了特定端口
背景:
- 我使用的是Hazelcast 3.5.2
- 3个节点被配置为单个集群的成员
每个节点都有以下网络配置:
<network> <port auto-increment="false">5701</port> <outbound-ports> <ports>10000-10005</ports> </outbound-ports> <join> <multicast enabled="false" /> <tcp-ip enabled="true"> <member-list> <member>{assume ip of node 1}</member> <member>{assume ip of node 2}</member> <member>{assume ip of node 3}</member> </member-list> </tcp-ip> </join>
因此,每个节点都有6个出站通信端口,根据我目前对hazelcast的了解,这足以支持3个节点。然而,当在每个节点上执行netstat时,我注意到类似于在每个节点上执行以下操作(假设{n}是一些非零数)
@node1 tcp {n} 0 {ip of node 1}:5701 {ip of node 2}:35576 ESTABLISHED tcp {n} 0 {ip of node 1}:5701 {ip of node 3}:10001 ESTABLISHED tcp 0 {n} {ip of node 1}:54941 {ip of node 2}:5701 ESTABLISHED tcp 0 {n} {ip of node 1}:10000 {ip of node 3}:5701 ESTABLISHED @node2 tcp {n} 0 {ip of node 2}:5701 {ip of node 1}:54941 ESTABLISHED tcp {n} 0 {ip of node 2}:5701 {ip of node 3}:10000 ESTABLISHED tcp 0 {n} {ip of node 2}:10003 {ip of node 1}:5701 ESTABLISHED tcp 0 {n} {ip of node 2}:35576 {ip of node 3}:5701 ESTABLISHED @node3 tcp {n} 0 {ip of node 3}:5701 {ip of node 1}:10000 ESTABLISHED tcp {n} 0 {ip of node 3}:5701 {ip of node 2}:10003 ESTABLISHED tcp 0 {n} {ip of node 3}:10001 {ip of node 1}:5701 ESTABLISHED tcp 0 {n} {ip of node 3}:10000 {ip of node 2}:5701 ESTABLISHED
查询:
- 入站通信配置。受到所有节点的尊重李>
- 但是,两个节点(三个节点中的两个)总是为出站通信打开一些临时端口(并且不遵守为它们设置的网络配置)李>
- 有人知道为什么吗?如何规避这个问题李>
注意:我是hazelcast的新手,因此请询问具体细节,以防我未能提供
# 1 楼答案
你能在每个节点上分享
lsof -a -i -n -P -p ${HAZELCAST_PID}
和ifconfig
的结果吗据我所知(请参见SocketConnector),当属性
hazelcast.socket.client.bind
为true
(这是默认值)时,Hazelcast将尝试绑定到<outbound-ports>
元素中提供的特定端口进行多次重试,然后失败,出现异常,与您看到打开的超出范围的客户端端口不一致