hazelcast 实例和组名称:最佳实践

Bar*_*pan 2 hazelcast hazelcast-imap

我已经为开发和 QA 环境配置了 hazelcast,并保持 hazelcast 实例名称相同但组名称不同(在每个 yml 文件中)。它是否正确 ?另外,有没有办法限制集群成员。它只会加入端口号显式配置的成员。您能指导一些示例吗?

谢谢。

kwa*_*art 5

避免加入无关的集群

定义不同的组名称(3.y 版本)或集群名称(4.y 版本)是正确的方法。

如果您想坚持使用默认的多播加入机制(请参阅下一节),您还应该更改每个 Hazelcast 集群(dev、QA、prod)的多播组(IP 地址)或端口。

示例 3.12.6:

Config config = new Config();
config.getGroupConfig().setName("devCluster");
config.getNetworkConfig()
  .getJoin()
  .getMulticastConfig()
  .setMulticastGroup("224.0.190.1");
Hazelcast.newHazelcastInstance(config);
Run Code Online (Sandbox Code Playgroud)

yaml:

示例4.0:

Config config = new Config().setClusterName("devCluster");
config.getNetworkConfig()
  .getJoin()
  .getMulticastConfig()
  .setMulticastGroup("224.0.190.1");
Hazelcast.newHazelcastInstance(config);
Run Code Online (Sandbox Code Playgroud)

yaml:

按主机和端口定义成员 - 使用 TCP/IP joiner

Hazelcast IMDG 默认使用多播集群发现方法。如果您想通过 IP 地址和端口指定成员,请禁用多播并改用 TCP/IP 发现。

样本:

JoinConfig joinConfig = config.getNetworkConfig().getJoin();
joinConfig.getMulticastConfig().setEnabled(false);
joinConfig.getTcpIpConfig().setEnabled(true)
  // either without port (then port range 5701-5703 is tried)
  .addMember("172.17.0.2")
  // or with the port specified
  .addMember("172.17.0.3:25001")
  .addMember("172.17.0.3:25002");
Run Code Online (Sandbox Code Playgroud)

yaml: