2017-09-21 53 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地址的默認值