Java Hazelcast使用临时端口进行出站通信,尽管配置了特定端口

Java Hazelcast使用临时端口进行出站通信,尽管配置了特定端口,java,hazelcast,Java,Hazelcast,背景: 我使用的是Hazelcast 3.5.2 3个节点被配置为单个集群的成员 每个节点具有以下网络配置: <network> <port auto-increment="false">5701</port> <outbound-ports> <ports>10000-10005</ports> </outbound-ports> <join> <multicast enab

背景:

  • 我使用的是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>
    
    
    5701
    10000-10005
    {假设节点1的ip}
    {假设节点2的ip}
    {假设节点3的ip}
    

  • 因此,每个节点都有6个出站通信端口,根据我目前对hazelcast的了解,这足以支持3个节点。然而,当在每个节点上执行netstat时,我注意到在每个节点上都有类似的情况(假设{n}是一些非零数)

    @node1
    tcp{n}0{节点1的ip}:5701{节点2的ip}:35576已建立
    tcp{n}0{1号节点的ip}:5701{3号节点的ip}:10001已建立
    tcp 0{n}{1号节点的ip}:54941{2号节点的ip}:5701已建立
    tcp 0{n}{1号节点的ip}:10000{3号节点的ip}:5701已建立
    @节点2
    tcp{n}0{节点2的ip}:5701{节点1的ip}:54941已建立
    tcp{n}0{节点2的ip}:5701{节点3的ip}:10000已建立
    tcp 0{n}{节点2的ip}:10003{节点1的ip}:5701已建立
    tcp 0{n}{节点2的ip}:35576{节点3的ip}:5701已建立
    @节点3
    tcp{n}0{3号节点的ip}:5701{1号节点的ip}:10000已建立
    tcp{n}0{节点3的ip}:5701{节点2的ip}:10003已建立
    tcp 0{n}{3号节点的ip}:10001{1号节点的ip}:5701已建立
    tcp 0{n}{3号节点的ip}:10000{2号节点的ip}:5701已建立

查询:

  • 入站通信配置。所有节点都很尊重它
  • 但是,两个节点(三个节点中的两个)总是为出站通信打开一些临时端口(并且不遵守为它们设置的网络配置)
  • 有人知道为什么吗?如何才能避免这个问题

注意:我是hazelcast的新手,因此,如果我没有提供,请询问具体细节。

您能否在每个节点上共享
lsof-a-I-n-p-p${hazelcast\u PID}
ifconfig
的结果


据我所知(请参阅),当属性
hazelcast.socket.client.bind
true
(这是默认值)时,hazelcast将尝试绑定到
元素中提供的特定端口,进行多次重试,然后失败,出现一个异常,该异常与您看到打开的超出范围的客户端端口不一致。

为什么关心出站端口号?不要约束它们,也要消除任何影响它们的无用防火墙规则。我同意你的观点@EJP。但不幸的是,我们为其开发解决方案的公司确实有这样的防火墙限制,因此他们确实需要知道应用程序将使用的出站端口。您能否在github.com/hazelcast/hazelcast/issues/new上打开一个新问题