Hazelcast程序化TCPIP配置多个网络接口

时间:2015-04-27 14:20:01

标签: tcp config hazelcast

我在我的软件中使用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当然会无法启动第二个客户端(实际发生)

2 个答案:

答案 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:请小心地将元素放在元素下面。您也可以将元素放在元素内,但是,这意味着其他事情:如果将元素放在元素内,它将被处理。作为标签的别名/同义词,这是完全不同的!因此,请将其放在<网络>下,否则将无法正常工作!