Hazelcast 配置 - 网络配置不匹配的实例能够加入集群
Hazelcast configuration - instance with mismatching network config is able to form join the cluster
我在 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 会失败或不会加入集群,因为配置不匹配,但它们都能找到彼此并形成集群。
如何避免这种情况?如果配置中有任何不匹配,我是否应该设置一些 属性 以拒绝集群形成中的节点?[=12=]
因为在这种情况下,我只需要知道组名和集群成员之一。我可以轻松加入集群和 modify/delete 缓存,对吗?
Hazelcast 成员和客户端至少需要一个进入集群的入口点,也就是说,具有匹配组名和组密码的集群成员的任何 IP 地址都可以充当这样的入口点。如果不应该连接,为什么要将所有 IP 放入每个节点?
一般情况下,建议使用 eureka、zookeeper、etcd 等发现服务,这比设置固定 ip 地址更灵活。
我在 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 会失败或不会加入集群,因为配置不匹配,但它们都能找到彼此并形成集群。
如何避免这种情况?如果配置中有任何不匹配,我是否应该设置一些 属性 以拒绝集群形成中的节点?[=12=]
因为在这种情况下,我只需要知道组名和集群成员之一。我可以轻松加入集群和 modify/delete 缓存,对吗?
Hazelcast 成员和客户端至少需要一个进入集群的入口点,也就是说,具有匹配组名和组密码的集群成员的任何 IP 地址都可以充当这样的入口点。如果不应该连接,为什么要将所有 IP 放入每个节点?
一般情况下,建议使用 eureka、zookeeper、etcd 等发现服务,这比设置固定 ip 地址更灵活。