付録A JBoss Data Grid 向けの推奨 JGroups 値
A.1. サポート対象 JGroups プロトコル
以下の表には、JBoss Data Grid でサポートされる JGroups プロトコルのリストが含まれます。
表A.1 サポート対象 JGroups プロトコル
プロトコル | 詳細 |
---|---|
TCP |
TCP/IP は、IP マルチキャストが使用できなくなる状況で使用できる UDP の代替トランスポートです。このような状況には、ルーターが IP マルチキャストパケットを破棄する可能性のある WAN 上の操作が実行される場合などが含まれます。
TCP は、ユニキャストおよびマルチキャストメッセージを送信するために使用されるトランスポートプロトコルです。
IP マルチキャストは初期メンバーを検出するために使用することができないため、初期メンバーを見つけるには別のメカニズムを使用する必要があります。
Red Hat JBoss Data Grid の Hot Rod はカスタム TCP クライアント/サーバープロトコルです。
|
UDP |
UDP は、以下を使用するトランスポートプロトコルです。
UDP トランスポートが開始すると、トランスポートはユニキャストソケットとマルチキャストソケットを開きます。ユニキャストソケットは、ユニキャストメッセージの送受信に使用され、マルチキャストソケットは、マルチキャストソケットの送受信を行います。チャネルの物理アドレスは、ユニキャストソケットのアドレスおよびポート番号と同じです。
|
PING |
PING プロトコルは、メンバーの内部検出に使用されます。PING 要求を IP マルチキャストアドレスにマルチキャストすることにより、最も古いメンバーであるコーディネーターを検出するために使用されます。
各メンバーはコーディネーターのアドレスと自身のアドレスを含むパケットで ping に応答します。指定されたミリ秒数 (N) または応答数 (M) のあとに、参加者が応答からコーディネーターを決定し、コーディネーターに JOIN 要求 (GMS により処理されます) を送信します。応答がない場合、参加者はグループの最初のメンバーと見なされます。
PING は、動的検出を使用するため、TCPPING とは異なります。つまり、メンバーは他のクラスターメンバーの場所を事前に知る必要がありません。PING はトランスポートの IP マルチキャスト機能を使用して検出要求をクラスターに送信します。結果として PING はトランスポートとして UDP を必要とします。
|
TCPPING | TCCPING プロトコルは、既知の一連のメンバーを使用して、検出のために ping を送信します。このプロトコルは静的設定です。 |
MPING | MPING (マルチキャスト PING) プロトコルは IP マルチキャストを使用して初期メンバーシップを検出します。すべてのトランスポートで使用できますが、通常は TCP と共に使用されます。 |
S3_PING |
S3_PING は、Amazon の Elastic Compute Cloud (EC2) で使用するのに理想的な検出プロトコルです。これは、EC2 ではマルチキャストが許可されず、MPING も許可されないためです。
それぞれの EC2 インスタンスは小さいファイルをバケットとして知られる S3 データコンテナーに追加します。その後、各インスタンスはバケット内のファイルを読み込み、クラスターの他のメンバーを検出します。
|
MERGE3 | MERGE3 プロトコルは JGroups 3.1 以降で利用可能です。MERGE2 とは異なり、MERGE3 では、すべてのメンバーがアドレス (UUID)、論理名、物理アドレス、およびビュー ID を使用して周期的に INFO メッセージを送信します。周期的に、各コーディネーターは不整合が発生しないように INFO 詳細情報を確認します。 |
FD_ALL | 障害検出に使用される FD_ALL は単純なハートビートプロトコルを使用します。各メンバーは他のすべてのメンバー (メンバー自身を除く) のテーブルを維持し定期的にハートビートをマルチキャストします。たとえば、P からデータまたはハートビートを受け取ると、P のタイムスタンプが現在の時刻に設定されます。周期的に、失効したメンバーはタイムスタンプ値を使用して識別されます。 |
FD_SOCK | FD_SOCK は、クラスターメンバー間で作成された TCP ソケットのリングに基づいた障害検出プロトコルです。各クラスターメンバーは近接メンバーに接続し (最後のメンバーは最初のメンバーに接続します)、リングが形成されます。メンバー B は、近接メンバー A が TCP ソケットの異常な終了 (通常はノード B のクラッシュのため) を検出したときに疑われます。ただし、メンバー B が正常に脱退した場合、メンバー B はメンバー A に通知し、脱退しても疑われません。 |
FD_HOST |
FD_HOST は、すべてのホストのクラッシュまたはハングを検出し、ICMP ping メッセージまたはカスタムコマンドを介して該当するホストのすべてのクラスターメンバーを疑う障害検出プロトコルです。FD_HOST は、ローカルホストの 1 つのメンバーのクラッシュまたはハングを検出しませんが、クラスター内の他のすべてのホストがライブ状態であり利用可能であるかどうかのみチェックします。したがって、FD_HOST は、FD_ALL や FD_SOCK などの他の障害検出プロトコルとともに使用されます。このプロトコルは通常、複数のクラスターメンバーが同じ物理的なボックス上で実行されている場合に使用されます。
FD_HOST プロトコルは、JBoss Data Grid 向けの Windows でサポートされます。
cmd パラメーターを ping.exe に設定し、ping 数を指定する必要があります。
|
VERIFY_SUSPECT | VERIFY_SUSPECT プロトコルは、メンバーを除外する前にメンバーに ping を送信することにより、疑われたメンバーがダウンしているかどうかを確認します。メンバーが応答した場合は、疑いに関するメッセージが破棄されます。 |
NAKACK2 |
NAKACK2 プロトコルは、NAKACK プロトコルの後継プロトコルであり、JGroups 3.1 で導入されました。
NACKACK2 プロトコルはマルチキャストメッセージに使用され、NAK を使用します。各メッセージは、シーケンス番号でタグ付けされます。受信側はシーケンス番号を追跡し、メッセージを順番に配信します。シーケンス番号のギャップが検出されると、受信側は不明なメッセージを再送信するよう送信側に要求します。
|
UNICAST3 |
UNICAST3 プロトコルは、安定した配信を提供し (送信側が送信したメッセージは番号付けされたシーケンスで送信されるため、失われません)、送信側と受信側間のポイントツーポイントメッセージに FIFO (First In First Out) プロパティーを使用します。
UNICAST3 は、再送信にポジティブ ack を使用します。たとえば、送信側 A は、受信側 B がメッセージ M を受診するまでメッセージ M を送信し続け、正常な送信を示すために ack を返します。送信側 A は、B から ack を受信するまで、B がクラスターを脱退するまで、または A がクラッシュするまでメッセージ M を再送信し続けます。
|
STABLE | STABLE プロトコルは、クラスター内のすべてのメンバーによって参照されたメッセージのガーベッジコレクターです。再送信が必要なことがあるため、各メンバーはすべてのメッセージを格納します。メッセージは、すべてのメンバーがメッセージを参照したときにのみ再送信バッファーから削除できます。STABLE プロトコルは、参照された最大値のメッセージと最小値のメッセージを定期的に拡散します。最小値は、min (すべてのメンバーに対して最小のシーケンス番号すべて) を計算するために使用され、min 値よりも小さいシーケンス番号のメッセージは破棄できます。 |
GMS | GMS プロトコルは、グループメンバーシッププロトコルです。このプロトコルは、参加/脱退/クラッシュ (疑い) を処理し、新しいビューを適切に生成します。 |
MFC | MFC は、フロー制御プロトコルのマルチキャストバージョンです。 |
UFC | UFC は、フロー制御プロトコルのユニキャストバージョンです。 |
FRAG2 | FRAG2 プロトコルは、大きいメッセージを小さいメッセージに断片化し、小さいメッセージを送信します。受信側では、小さい断片が、大きく完全なメッセージに再び組み立てられ、アプリケーションに配信されます。FRAG2 はマルチキャストメッセージとユニキャストメッセージの両方に使用されます。 |
ENCRYPT |
JGroups には、クラスタートラフィック向けの暗号化を提供する ENCRYPT プロトコルが含まれます。デフォルトでは、暗号化によりメッセージ本文のみが暗号化され、メッセージヘッダーは暗号化されません。すべてのヘッダーを含むメッセージ全体と宛先アドレスおよびソースアドレスを暗号化するには、プロパティー encrypt_entire_messagemust が true である必要があります。また、ENCRYPT は、暗号化する必要があるヘッダーではすべてのプロトコル以下である必要があります。
ENCRYPT レイヤーは、JGroups で通信を暗号化および復号化するために使用されます。JGroups ENCRYPT プロトコルは、以下の 2 つの方法で使用できます。
各メッセージは、暗号化ヘッダーを示す特定の暗号化ヘッダーとメッセージを暗号化および復号化するために使用するキーのバージョンを示す MD5 ダイジェストで暗号化済みとして識別されます。
|
SASL | SASL (Simple Authentication and Security Layer) プロトコルは、置き換え可能なメカニズムを使用した接続指向プロトコルで認証およびデータセキュリティーサービスを提供するフレームワークです。また、SASL はプロトコルとメカニズム間で構造化インターフェースを提供します。 |
RELAY2 |
RELAY プロトコルは、各サイトの 1 つのノード間の接続を作成することによって 2 つのリモートクラスターをブリッジします。これにより、1 つのサイトに送信されたマルチキャストメッセージを他のサイトにリレーし、他のサイトからそのサイトにもリレーすることができます。
JGroups には、Red Hat JBoss Data Grid のサイト間レプリケーションにおけるサイト間の通信に使用される RELAY2 プロトコルが含まれます。
RELAY2 プロトコルは RELAY のように動作しますが、若干の違いがあります。RELAY とは異なり、RELAY2 プロトコルは以下のことを行います。
|