【Hazelcastシリーズ2】Hazelcastクラスタの作成

6025 ワード

Hazelcastシリーズでは、Hazelcastとは何か、Hazelcastクラスタを構成する方法について説明します.
1、クラスター発見メカニズム
Hazelcastクラスタは、Hazelcastインスタンスを実行することによって構成されるネットワークであり、メンバーは自動的にクラスタに参加し、メンバーは自動的にクラスタ依存クラスタ発見メカニズムに参加する.Hazelcastクラスタの確立が完了すると、クラスタ間メンバーはTCP/IPを使用して互いに通信し、これはクラスタ発見機構の制約を受けない.Hazelcastは、次の発見メカニズムをサポートします.
  • TCP
  • マルチキャストマルチキャストはUDPプロトコルを使用しており、生産環境ではUDPの使用がしばしば禁止されているため、マルチキャスト発見メカニズムの使用は推奨されない.
  • GCP Cloud Discovery
  • AWS Cloud Discovery
  • Apache jclouds Cloud Discovery
  • Azure Cloud Discovery
  • Zookeeper
  • Consul
  • Etcd
  • PCF
  • OpenShift
  • Eureka
  • Heroku
  • Kubernetes

  • Hazelcastは業界の主流のクラスタ発見メカニズムをサポートし、自分のニーズと条件に応じて自分に適したクラスタ発見メカニズムを選択することができる.
    2、TCP発見メカニズム
    あなたの環境でマルチキャストが適切な選択でない場合は、Hazelcastを完全なTPC/IPクラスタに構成することができます(TCP/IPプロトコルを使用していることがわかりました).TCP/IP構成Hazelcastクラスタメンバー検出を使用する場合は、すべてまたは一部のメンバーのホスト名またはIPアドレスをリストする必要があります.すべてのクラスタメンバーをリストする必要はありませんが、新しいメンバーが追加されると、少なくとも1つのリストされたメンバーがクラスタでアクティブになる必要があります.
    xml構成TPC/IPを使用して発見された簡単な構成は以下の通りである.
    
        ...
        
            
                
                
                
                    machine1
                    machine2
                    machine3:5799
                    192.168.1.0-7
                    192.168.1.21
                
            
        
        ...
    
    

    xmlを使用した構成を除いて、Hazelcastのすべての構成はyamlファイルで構成することをサポートしています.上記のxmlに対応するyaml等価構成は以下の通りです.
  • memberは、ホスト名およびIPを構成してもよいし、IPアドレス範囲を構成してもよい.
  • memberが複数のIPアドレスである場合、membersを使用して構成を簡略化することができる:
  • .
    192.168.1.0-7,192.168.1.21
    
  • ポートが提供されていない場合、Hazelcastは5701、5702などから試行されます.
  • デフォルトのHazelcastはすべてのネットワークインタフェースをバインドしてトラフィックを受信するが、hazelcast.socket.bind.any=falseを設定することによって変更し、interfaceによってバインドされたネットワークインタフェースを決定することができ、interfaceの値が構成されていない場合、Hazelcastはネットワークインタフェースバインド
  • を選択する.
    Hazelcastはyamlですべての構成をサポートしています.上記のxml等価yaml構成は以下の通りです.
    hazelcast:
      network:
        join:
          multicast:
            enabled: false
            multicast-group: 224.2.2.3
            multicast-port: 54327
          tcp-ip:
            enabled: true
            member-list:
              - machine1
              - machine2
              - machine3:5799
              - 192.168.1.0-7
              - 192.168.1.21
    

    3、マルチキャスト発見メカニズム
    Hazelcastは、クラスタメンバー間でマルチキャスト通信を使用して相互に発見することを可能にする.クラスタメンバー間では、互いに相手の特定のアドレスを知る必要はなく、クラスタ内のすべての傍受メンバーにメッセージをブロードキャストするだけです.マルチキャストが利用可能かどうかは環境に依存しますが、使用前に環境が使用不可で機能異常を起こさないように慎重に確認してください.
    xmlを使用してマルチキャスト検出メカニズムを構成する最も簡単な構成は、次のとおりです.
    
        ...
        
            
                
                    224.2.2.3
                    54327
                    32
                    2
                    
                        169.254.82.121
                    
                
            
        
        ...
    
    

    パラメータmulticast-timeout-secondsには、1つのメンバーが合法的なマルチキャスト応答を待つ時間を示すことに注意が必要であり、単位はsであり、設定された時間内に合法的な応答が受信されなければ、そのメンバーは自分がleaderとなり、自分のクラスタを作成する.このパラメータは、クラスタにリーダーがなく、新しいメンバーが起動したばかりのシーンにのみ適用されます.パラメータの値が60 sなど大きく設定されている場合、これは、leaderが選択される前に60 sを待つ必要があることを意味します.値の設定が大きすぎるか小さすぎるかは慎重に処理する必要があります.値の設定が小さすぎると、メンバーが早期に放棄して次の試行を開始する可能性があります.
    4、ローカルクライアントの発見
    マルチキャストプラグインを使用すると、ローカルjavaクライアントとHazelcastメンバーの間で相互に発見され、プラグインはSPIメカニズムで提供されます.マルチキャストを使用してHazelcastメンバーとjavaクライアントを検出するには、プラグインを構成する必要があります.
    次のxmlは、クラスタ構成マルチキャスト検出プラグインの最も簡単な構成を提供します.
    
        ...
        
            true
        
        
            
                
                
                
                
                
                    
                        
                            224.2.2.3
                            54327
                        
                    
                
            
        
        ...
    
    
  • groupマルチキャストグループ
  • portマルチキャストポート
  • 5、クラスタの作成cluster-nameはクラスタを作成する最も簡単な方法であり、cluster-nameはクラスタを分離する簡単な方法でもあり、以下にIoTという名前のHazelcastクラスタを作成します.
    
        IoT
    
    

    符号化方式を用いてクラスタを構成することもできる.1つのJVMは複数のHazelcastインスタンスを実行することができ、各インスタンスは1つのグループ(クラスタ)しか追加できず、各インスタンスは所属するクラスタのインスタンスとのみ対話し、他のクラスタのインスタンスから分離される.
            GroupConfig iotGroupConfig = new GroupConfig();
            iotGroupConfig.setName("IoT");
            Config iotConfig = new Config();
            iotConfig.setGroupConfig(iotGroupConfig);
    
            GroupConfig edgeGroupConfig = new GroupConfig();
            edgeGroupConfig.setName("edge");
            Config edgeConfig = new Config();
            edgeConfig.setGroupConfig(iotGroupConfig);
    
            HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(iotConfig);
            HazelcastInstance instance2 = Hazelcast.newHazelcastInstance(iotConfig);
            HazelcastInstance instance3 = Hazelcast.newHazelcastInstance(edgeConfig);
    

    上記のコードは、instance 1、instance 2、およびinstance 3の3つのインスタンスを作成します.instance 1およびinstanceはIoTクラスタに属し、instance 3はedgeクラスタに属します.