Hazelcast配置 - 具有不匹配网络配置的实例能够形成加入群集

时间:2017-08-17 12:59:08

标签: hazelcast

我在ip1和ip2中运行了2个hz实例。 hazelcast的配置如下所示:

Config config = new Config();

config.getGroupConfig().setName("dev");
config.getGroupConfig().setPassword("dev");

config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true);
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
config.getNetworkConfig().getJoin().getAwsConfig().setEnabled(false);
config.getNetworkConfig().getJoin().getTcpIpConfig().addMember(ip1).addMember(ip2);

config.getNetworkConfig().setInterfaces(new InterfacesConfig().setEnabled(true).addInterface(ip1).addInterface(ip2));

return Hazelcast.newHazelcastInstance(config);

现在我在ip3上运行了另一个具有相同配置的实例,但是ip3被添加到tcp成员

config.getNetworkConfig().getJoin().getTcpIpConfig().addMember(ip1).addMember(ip2).addMember(ip3);

由于配置不匹配,我希望实例ip3失败或者不加入群集,但是他们都能够找到对方并形成群集。

如何避免这种情况?如果配置中存在不匹配,我应该设置一些属性来拒绝群集形成的节点吗?

因为在这种情况下,我需要知道的是组名和集群成员之一。我可以轻松加入群集并修改/删除缓存吗?

1 个答案:

答案 0 :(得分:1)

Hazelcast成员和客户端至少需要一个进入集群的入口点,即具有匹配的groupname和grouppassword的集群成员的任何IP地址都可以作为这样一个入口点。如果它们不应该连接,为什么要将所有IP放入每个节点?

一般情况下,建议使用eureka,zookeeper,etcd等发现服务,这比设置固定IP地址更灵活。

相关问题