web-dev-qa-db-ja.com

2ノードヘーゼルキャストクラスターの構成-マルチキャストの回避

コンテキスト

  • Hazelcastクラスターの2つのノード。それぞれが個別のサブネット上にあるため、マルチキャストはノードの場所に適しておらず、機能していません。

  • TCP/IPを使用して2つのノードを接続するようにHazelcastを構成するには、最小限のXML構成ファイル(hazelcast.xmlなど)を使用する必要があります。理想的には、2つのノードのIPアドレスのディレクトリです。

質問

Hazelcastのドキュメントは、 これはプログラムで実現できます 、およびhazelcast.jar/hazelcast-default.xmlが(かなりの)デフォルト構成をどのように保持するかをうまく示しています。

不明確なのは、私が提供するXML構成がhazelcast-default.xml内の設定にオーバーレイされているのか、それとも単に代わりに使用されているのかということです。

8
Martin Cowie

私は両方の答えを持っています、そしてそれらを共有したいと思います

  1. プログラマティックAPIと同様に、XML構成はhazelcast.jar/hazelcast-default.xmlにあるデフォルトをオーバーレイします。その結果、...

  2. クラスパスでこのhazelcast.xmlを使用して、非常に単純な2メンバークラスターを確立できます。

    <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>
    
14
Martin Cowie

私は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になります。

4
pveentjer