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

时间:2017-09-21 10:37:09

标签: java docker networking hazelcast multicast

在我的macOs上安装dockerForMac和virtualbox后,本地hazelcast成员无法使用hazelcast的多播配置(不在容器中)看到彼此。看起来它们都是具有不同端口的集群中的主人。

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

  

This comment is about the port usage of multicast discovery function:看起来Hazelcast使用多播地址224.2.2.3   在UDP端口54327上(默认情况下)用于发现,然后用于端口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] 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;
}

1 个答案:

答案 0 :(得分:0)

我偶然将多播组更改为 224.0.0.1 并且令人惊讶地工作了。成员们开始互相见面。

multicastConfig.setMulticastGroup("224.0.0.1");

除了224.0.0.1之外,“224.0.0.0和239.255.255.255”之间的组播组的任何其他IP地址都不起作用。

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

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