【问题标题】:Hazelcast configuration - instance with mismatching network config is able to form join the clusterHazelcast 配置 - 网络配置不匹配的实例能够形成加入集群
【发布时间】:2017-08-17 12:59:08
【问题描述】:

我有 2 个 hz 实例在 ip1 和 ip2 中运行。 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 失败或不加入集群,因为配置不匹配,但它们都能够找到彼此并形成集群。

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

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

【问题讨论】:

    标签: hazelcast


    【解决方案1】:

    Hazelcast 成员和客户端至少需要一个进入集群的入口点,也就是说,具有匹配组名和组密码的集群成员的任何 IP 地址都可以充当这样的入口点。如果不应该连接,为什么要将所有 IP 放入每个节点?

    一般建议使用eureka、zookeeper、etcd等发现服务...比设置固定IP地址更灵活。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2016-01-11
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多