用于多个网络接口的Hazelcast编程TCPIP配置

用于多个网络接口的Hazelcast编程TCPIP配置,tcp,config,hazelcast,Tcp,Config,Hazelcast,我在我的软件中使用hazelcast 3.3进行集群缓存。我的代码基于以下示例 . (更新2) 现在我面临以下问题: 我运行程序的主机有各种网卡(=>多个IP号码)。我想使用不同的接口(IP号)在同一台机器上启动我的程序的不同实例 这个的tcp配置似乎是 network.getInterfaces().setEnabled(true).addInterface("<MY IP NUMBER>"); network.getInterfaces().setEnabled(true).a

我在我的软件中使用hazelcast 3.3进行集群缓存。我的代码基于以下示例 . (更新2) 现在我面临以下问题: 我运行程序的主机有各种网卡(=>多个IP号码)。我想使用不同的接口(IP号)在同一台机器上启动我的程序的不同实例 这个的tcp配置似乎是

network.getInterfaces().setEnabled(true).addInterface("<MY IP NUMBER>");
network.getInterfaces().setEnabled(true).addInterface(“”);
无论我在这里给出什么IP,在操作系统端hazelcast总是绑定到0.0.0.0(所有IP)。 这是通缉犯吗?我希望hazelcast只绑定到特定的IP。 hazelcast是否自行进行数据包过滤,从而同时绑定到所有接口?
这意味着我不能为我的各种运行程序实例使用相同的端口号,因为绑定到0.0.0.0当然会无法启动第二个客户端(实际发生)

研究Hazelcast文档(网络)。明确地说,Hazelcast默认绑定到所有网络接口。要更改是否存在此系统属性,请执行以下操作: hazelcast.socket.bind.any 文档中说:设置为false,它将只绑定到指定的接口。 我没有查出来,但这听起来像是解决我问题的办法

编辑:我现在试过了,成功了。Hazelcast仅连接到给定接口。

在windows上运行“ipconfig”(或在Linux上运行“ifconfig”,等等)以查看所有网络接口。您至少应该看到127.0.0.1和其他一些。如果您的机器是多主机(有多个网卡连接到多个网络),请确保选择正确的网卡

总之,将接口IP而不是您的IP放入:

network.getInterfaces().setEnabled(true).addInterface("<INTERFACE IP>");
network.getInterfaces().setEnabled(true).addInterface(“”);
对于XML配置,如下所示:

<network>
       ... snip...
    <join>
       ... snip... 
    </join>
       ... snip... 
    <interfaces enabled="true">
        <interface> <INTERFACE IP> </interface>
    </interfaces>
       ... snip... 
</network>

... 剪
... 剪
... 剪
... 剪

另外:注意将元素放在元素下面。您也可以将元素放在元素中,但如果将它放在那里,它意味着其他东西:如果将元素放在元素中,它将被视为标记的别名/同义词,这是完全不同的!所以,把它放在下,否则它不会工作

也许这个解决方案也有助于: