我在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失败或者不加入群集,但是他们都能够找到对方并形成群集。
如何避免这种情况?如果配置中存在不匹配,我应该设置一些属性来拒绝群集形成的节点吗?
因为在这种情况下,我需要知道的是组名和集群成员之一。我可以轻松加入群集并修改/删除缓存吗?
答案 0 :(得分:1)
Hazelcast成员和客户端至少需要一个进入集群的入口点,即具有匹配的groupname和grouppassword的集群成员的任何IP地址都可以作为这样一个入口点。如果它们不应该连接,为什么要将所有IP放入每个节点?
一般情况下,建议使用eureka,zookeeper,etcd等发现服务,这比设置固定IP地址更灵活。