配置双节点hazelcast集群 - 避免多播

Mar*_*wie 8 hazelcast

上下文

  • Hazelcast集群的两个节点,每个节点位于一个独立的子网上,因此多播不适用于节点定位.

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

这个问题

Hazelcast文档很好地展示了如何以编程方式实现这一点,以及如何hazelcast.jar/hazelcast-default.xml保持(可观的)默认配置.

不清楚的是:我提供的任何XML配置是否覆盖在其中的设置hazelcast-default.xml- 或者仅仅用于替代?

Mar*_*wie 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>
    
    Run Code Online (Sandbox Code Playgroud)


pve*_*jer 5

我不熟悉 hazelcast.conf 文件。

主要使用的是 XML 或 Programmatic 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

-- 不清楚的是:我提供的任何 XML 配置是否覆盖在 hazelcast-default.xml 中的设置上——或者只是代替它使用?

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