有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你能在每个节点上分享lsof -a -i -n -P -p ${HAZELCAST_PID}ifconfig的结果吗

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