由于docker-machine使用的vboxnet,Hazelcast多播不起作用

在我的macOs上安装dockerForMac和virtualbox之后,本地hazelcast成员不能使用hazelcast的多播configuration(不在容器中)看到对方。 看来他们俩都是不同港口的集群中的主人。

docker等东西安装后的差异是成员的IP地址。 这是我的本地IP地址,但现在它有192.168.99.1被vboxnet使用。 看我的ifconfig。

这个注释是关于多播发现function的端口使用的:看起来Hazelcast在UDP端口54327(默认情况下)使用多播地址224.2.2.3进行发现,然后使用端口5701进行TCP通信。 打开防火墙中的UDP端口54327为我解决了发现问题。 (我也打开了TCP端口5701,但这还不够。)

反正有榛树使用我的IP地址? 或者有无论如何打开vnetbox这些端口?

使用ifconfig:

vboxnet0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether XX:XX:XX:00:00:00 vboxnet1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether XX:XX:XX:00:00:01 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255 

节点1:

 2017-09-21 12:52:20.882 DEBUG 74783 --- [ main] chicluster.impl.MulticastJoiner : [192.168.99.1]:5701 [OSMAN] [3.8.4] PostJoin master: [192.168.99.1]:5701, isMaster: true 2017-09-21 12:52:20.882 INFO 74783 --- [ main] chicluster.impl.MulticastJoiner : [192.168.99.1]:5701 [OSMAN] [3.8.4] Members [1] { Member [192.168.99.1]:5701 - c38919ff-d992-4d2e-a7f8-afaae146e5d5 this } 2017-09-21 12:52:20.906 INFO 74783 --- [ main] com.hazelcast.core.LifecycleService : [192.168.99.1]:5701 [OSMAN] [3.8.4] [192.168.99.1]:5701 is STARTED 

节点2:

 2017-09-21 12:52:21.513 DEBUG 74800 --- [ main] chicluster.impl.MulticastJoiner : [192.168.99.1]:5702 [test-group] [3.8.4] PostJoin master: [192.168.99.1]:5702, isMaster: true 2017-09-21 12:52:21.513 INFO 74800 --- [ main] chicluster.impl.MulticastJoiner : [192.168.99.1]:5702 [test-group] [3.8.4] Members [1] { Member [192.168.99.1]:5702 - e21bbd01-b55f-4e6e-8a04-eff4402e300a this } 2017-09-21 12:52:21.513 WARN 74800 --- [ main] com.hazelcast.instance.Node : [192.168.99.1]:5702 [test-group] [3.8.4] Config seed port is 5701 and cluster size is 1. Some of the ports seem occupied! 

Hazelcastconfiguration:

 @Bean public Config hazelCastConfig() { Config config = new Config(); config.getGroupConfig().setName("test-group"); config.getGroupConfig().setPassword("test-password"); config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(false); config.getNetworkConfig().getJoin().getAwsConfig().setEnabled(false); config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true); return config; } 

我偶然地将多播组更改为224.0.0.1 ,并且令人惊讶地发现它工作正常。 成员们开始看到对方。

 multicastConfig.setMulticastGroup("224.0.0.1"); 

224.0.0.0到239.255.255.255之间的组播组的任何其他IP地址都不起作用。

所以在这一点上, 我的问题是为什么224.2.2.3被选为默认的多播组IP地址? 它不工作vboxnet适配器。

看起来224.0.0.1的描述是“所有主机组播组地址在同一个网段上的所有主机”。 这意味着它应该是组播组IP地址的默认值