我在我的软件中使用 hazelcast 3.3 在集群中缓存。我的代码基于以下示例Stackoverflow tcp hazelcast 示例。(更新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 当然会无法启动第二个客户端(实际发生)
文档(网络) 可以肯定地说,Hazelcast 默认绑定到所有网络接口。要更改此设置,请保留此系统属性:hazelcast.socket.bind.any文档说:设置为 false,它只会绑定到指定的接口。我没有检查出来,但这听起来像是我问题的解决方案。
编辑:我现在尝试了,它奏效了。Hazelcast仅连接到给定的接口。
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>
另外:小心将<接口>元素放在<网络>元素下。您也可以将<接口>元素放在