コンテキスト
Hazelcastクラスターの2つのノード。それぞれが個別のサブネット上にあるため、マルチキャストはノードの場所に適しておらず、機能していません。
TCP/IPを使用して2つのノードを接続するようにHazelcastを構成するには、最小限のXML構成ファイル(hazelcast.xml
など)を使用する必要があります。理想的には、2つのノードのIPアドレスのディレクトリです。
質問
Hazelcastのドキュメントは、 これはプログラムで実現できます 、およびhazelcast.jar/hazelcast-default.xml
が(かなりの)デフォルト構成をどのように保持するかをうまく示しています。
不明確なのは、私が提供するXML構成がhazelcast-default.xml
内の設定にオーバーレイされているのか、それとも単に代わりに使用されているのかということです。
私は両方の答えを持っています、そしてそれらを共有したいと思います
プログラマティックAPIと同様に、XML構成はhazelcast.jar/hazelcast-default.xml
にあるデフォルトをオーバーレイします。その結果、...
クラスパスでこの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>
私は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になります。