在我的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;
}