2017-09-21 135 views
0

在我的macOs上安装了dockerForMac和virtualbox后,本地hazelcast成员无法使用hazelcast(不在容器中)的多播配置看到对方。看起来他们俩都是不同端口的集群中的主人。Hazelcast多播不起作用,因为docker-machine使用的vboxnet

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

This comment is about the port usage of multicast discovery function:它看起来像Hazelcast用来发现上的UDP端口54327多播地址224.2.2.3 (默认)中,然后端口5701用于 TCP通信。在防火墙中打开UDP端口54327修复了 发现。 (我也打开TCP端口5701,但是这不是 足够。)

反正有做hazelcast运用到我的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] c.h.i.cluster.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] c.h.i.cluster.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] c.h.i.cluster.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] c.h.i.cluster.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! 

Hazelcast配置:

@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; 
} 

回答

0

我改变多播组224.0.0.1偶然和令人惊讶它的工作。成员们开始看到对方。

multicastConfig.setMulticastGroup("224.0.0.1"); 

任何其他IP地址为“224.0.0.0到239.255.255.255”之间的多播组除了224.0.0.1不起作用。

因此,在这一点上,我的问题是为什么选择224.2.2.3作为默认多播组IP地址?它不起作用vboxnet适配器。

看起来224.0.0.1的描述是"The All Hosts multicast group addresses all hosts on the same network segment."这意味着它应该是多播组IP地址的默认值