配置一个两个节点的Hazelcast集群 - 避免使用组播

9

背景

  • 一个Hazelcast集群的两个节点,每个节点位于不同的子网中,因此组播不适用也无法用于节点定位。

  • 我希望使用最小的XML配置文件,例如hazelcast.xml,来配置Hazelcast以使用TCP/IP连接这两个节点。理想情况下是两个节点的IP地址目录。

问题

Hazelcast文档很好地展示了如何通过编程实现此目标,以及hazelcast.jar/hazelcast-default.xml包含(相当大量的)默认配置。

不清楚的是:我提供的任何XML配置是否覆盖hazelcast-default.xml中的设置 - 还是仅代替它使用?

2个回答

14

我已经得出了答案,并且想要分享它们

  1. 与程序化API一样,XML配置会覆盖在hazelcast.jar/hazelcast-default.xml中找到的默认值,因此...

  2. 我可以使用这个在类路径中的hazelcast.xml建立一个非常简单的两个成员集群。

<hazelcast>
  <network>
    <join>
      <multicast enabled="false"></multicast>
      <tcp-ip enabled="true">
        <member>192.168.100.001</member> <!-- server A -->
        <member>192.168.102.200</member> <!-- server B, on separate subnet -->
      </tcp-ip>
    </join>
  </network>

</hazelcast>

我们能否在不硬编码IP地址的情况下定义成员(仅使用负载均衡器IP)?因为我的节点集合会随时间而改变。 - Shivanshu Goyal

5

我对hazelcast.conf文件不熟悉。

通常使用的是XML或编程API。有很好的示例,请参见:

https://github.com/hazelcast/hazelcast-code-samples/tree/master/network-configuration

编程示例:

public class Main {

    public static void main(String[] args){
        Config config = new Config();
        config.getNetworkConfig().getJoin().getTcpIpConfig().addMember("localhost").setEnabled(true);
        config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
        HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
    }
}

不清楚的是:我提供的任何XML配置是否会覆盖hazelcast-default.xml中的设置,还是仅代替它使用?

您的意思是什么?如果您使用编程API,则其余部分无关紧要。如果在构建HazelcastInstance时未提供显式的Config对象,则会使用默认机制。最终它会默认为hazelcast-default.xml。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接