我在我的软件中使用hazelcast 3.3进行群集缓存。我的代码基于以下示例 Stackoverflow tcp hazelcast example。 (更新2) 现在我面临以下问题: 我运行程序的主机有各种网卡(=>多个IP号码)。我想使用不同的接口(IP号)在同一台机器上启动我的程序的各种实例 这个tcp配置似乎是
network.getInterfaces().setEnabled(true).addInterface("<MY IP NUMBER>");
无论我在这里给出什么IP,在操作系统方面,hazelcast始终绑定到0.0.0.0(所有IP)。 这需要吗?我希望hazelcast只能绑定到特定的IP。 hazelcast是否自己进行包过滤,因此同时绑定到所有接口? 这意味着我不能为我的各种正在运行的程序实例使用相同的端口号,因为绑定到0.0.0.0当然会无法启动第二个客户端(实际发生)
答案 0 :(得分:2)
研究Hazelcast文档(网络)默认情况下,Hazelcast默认绑定到所有网络接口。要更改它有这个系统属性: hazelcast.socket.bind.any 文档说:设置为false,它只会绑定到指定的接口。 我没有检查出来,但这听起来像是我问题的解决方案。
编辑:我现在尝试了,但它有效。 Hazelcast仅连接到给定的接口。答案 1 :(得分:0)
在Windows上运行“ ipconfig”(在Linux上运行“ ifconfig”,等等)以查看所有网络接口。您应该至少看到127.0.0.1和其他一些。如果您的计算机是多宿主的(有多个网卡连接到多个网络),请确保选择正确的计算机。
最下面一行,将接口IP(而不是您的IP)放入:
network.getInterfaces().setEnabled(true).addInterface("<INTERFACE IP>");
对于XML配置,就像这样:
<network>
... snip...
<join>
... snip...
</join>
... snip...
<interfaces enabled="true">
<interface> <INTERFACE IP> </interface>
</interfaces>
... snip...
</network>
ALSO:请小心地将