A.34. JGroups Protocols

プロトコルプロトコルタイプ説明

ASYM_ENCRYPT

暗号化

クラスターのコーディネーターに保存されるシークレットキーを使用して、クラスターメンバー間のメッセージを暗号化します。

AUTH

認証

認証のレイヤーをクラスターメンバーに提供します。

azure.AZURE_PING

検出

Microsoft Azure の blob ストレージを使用したノード検出をサポートします。

FD_ALL

障害検出

簡単なハートビートプロトコルを基にした障害検出を提供します。

FD_SOCK

障害検出

クラスターメンバー間で作成された TCP ソケットのリングを基にした障害検出を提供します。

JDBC_PING

検出

メンバーがアドレスを書き込む共有データベースを使用してクラスターメンバーを検出します。

MERGE3

マージ

クラスターの分割が発生したときにサブクラスターをマージします。

MFC

フロー制御

送信元とすべてのクラスターメンバーとの間でマルチキャストフロー制御を提供します。

MPING

検出

IP マルチキャストでクラスターメンバーを検出します。

pbcast.GMS

グループメンバーシップ

新規メンバーのクラスター参加、既存メンバーによる離脱リクエスト、およびクラッシュしたメンバーの SUSPECT メッセージを含む、グループメンバーシップを処理します。

pbcast.NAKACK2

メッセージの送信

メッセージの信頼性および順序を確実にし、1 つの送信元から送信されたすべてのメッセージが送信順に受信されることを保証します。

pbcast.STABLE

メッセージの安定性

すべてのメンバーによって送信されたメッセージを削除します。

PING

検出

クラスターメンバーの動的検出のサポートによる、メンバーの最初の検出。

SASL

認証

SASL メカニズムを使用してクラスターメンバーに認証のレイヤーを提供します。

SYM_ENCRYPT

暗号化

共有キーストアを使用して、クラスターメンバー間のメッセージを暗号化します。

S3_PING

検出

Amazon S3 を使用して最初のメンバーを検出します。

TCPGOSSIP

検出

外部のゴシップルーターを使用してクラスターメンバーを検出します。

TCPPING

検出

クラスターを形成するクラスターメンバーのアドレスの静的リストが含まれます。

UFC

フロー制御

送信元とすべてのクラスターメンバーとの間でユニキャストフロー制御を提供します。

UNICAST3

メッセージの送信

ユニキャストメッセージのメッセージの信頼性および順序を確実にし、1 つの送信元から送信されたすべてのメッセージが送信順に受信されることを保証します。

VERIFY_SUSPECT

障害検出

疑わしいメンバーをエビクトする前に最終的に ping してそのメンバーが不能になったことを検証します。

汎用プロトコルの属性

すべてのプロトコルは以下の属性にアクセスできます。

表A.121 protocol 属性

属性デフォルト説明

module

org.jgroups

プロトコルタイプを解決するモジュール。

properties

 

このプロトコルのプロパティー。

statistics-enabled

false

統計を有効にするかどうか。

認証プロトコル

認証プロトコルは、認証を実行するために使用されます。主な役目は、認証されたメンバーのみがクラスターに参加できるようにすることです。これらのプロトコルは、GMS プロトコルの下に位置するため、クラスター参加のリクエストをリッスンする可能性があります。

AUTH 属性

AUTH プロトコルにはその他の属性は含まれませんが、トークンが子要素として定義されている必要があります。

注記

このプロトコルを定義するとき、protocol 要素の代わりに auth-protocol 要素が使用されます。

トークンタイプ

Elytron をセキュリティーに使用する場合、以下の認証トークンの 1 つを使用することが推奨されます。これらの認証トークンは、Elytron と使用する目的で設計されており、レガシーのセキュリティー設定とは使用できない可能性があります。

表A.122 Elytron トークンタイプ

トークン説明

cipher-token

共有の秘密が変換される認証トークン。変換に使用されるデフォルトのアルゴリズムは RSA です。

digest-token

共有の秘密が変換される認証トークン。変換に使用されるデフォルトのアルゴリズムは SHA-256 です。

plain-token

共有の秘密に追加の変換を行わない認証トークン。

以下の認証トークンは JGroups から継承されます。認証が望ましいすべての設定で使用の対象となります。

表A.123 JGroups トークンタイプ

トークン説明

MD5Token

共有の秘密が MD5 または SHA ハッシュを使用して暗号化される認証トークン。この暗号化に使用されるデフォルトのアルゴリズムは MD5 です。

SimpleToken

共有の秘密に追加の変換を行わない認証トークン。このトークンは大文字と小文字を区別せず、文字列の一致を判断するときに大文字と小文字を考慮しません。

X509Token

共有の秘密が X509 証明書を使用して暗号化される認証トークン。

SASL の属性

表A.124 SASL の属性

属性デフォルト説明

client_callback_handler

 

ノードがクライアントとして動作するときに使用する CallbackHandler のクラス名。

client_name

 

ノードがクライアントとして動作するときに使用する名前。JAAS ログインモジュールを使用する場合、この名前はサブジェクトの取得にも使用されます。

client_password

 

ノードがクライアントとして動作するときに使用するパスワード。JAAS ログインモジュールを使用する場合、このパスワードはサブジェクトの取得にも使用されます。

login_module_name

 

SASL クライアントおよびサーバーを作成するためにサブジェクトとして使用する JAAS ログインモジュールの名前。この属性は、GSSAPI などの一部の mech 値でのみ必要です。

mech

 

SASL 認証メカニズムの名前。この名前にはローカル SASL プロバイダーがサポートするすべてのメカニズムを指定でき、JDK はデフォルトで CRAM-MD5DIGEST-MD5GSSAPI、および NTLM を提供します。

sasl_props

 

定義された mech のプロパティー。

server_callback_handler

 

ノードがサーバーとして動作するときに使用する CallbackHandler のクラス名。

server_name

 

完全修飾サーバー名。

timeout

5000

チャレンジへの応答を待つ時間 (ミリ秒単位)。

検出プロトコル

以下のプロトコルはクラスターの最初のメンバーシップを見つけるために使用され、その後現在のコーディネーターを決定するために使用できます。検出プロトコルのリストは次のとおりです。

AZURE_PING の属性

表A.125 AZURE_PING の属性

属性デフォルト説明

container

 

PING データに使用する blob コンテナーの名前。有効な DNS 名を指定する必要があります。

storage_access_key

 

ストレージアカウントのシークレットアクセスキー。

storage_account_name

 

blob コンテナーが含まれる Microsoft Azure ストレージアカウントの名前。

JDBC_PING の属性

表A.126 JDBC_PING の属性

属性デフォルト説明

data-source

 

接続および JNDI ルックアッププロパティーの代わりに使用されるデータソース参照。

注記

JDBC_PING プロトコルを定義するとき、protocol 要素の代わりに jdbc-protocol 要素が使用されます。

S3_PING の属性

表A.127 S3_PING の属性

属性デフォルト説明

access_key

 

S3 バケットのアクセスに使用される Amazon S3 アクセスキー。

host

s3.amazonaws.com

S3 web サービスの宛先。

location

 

使用する Amazon S3 バケットの名前。バケットが存在する必要があり、一意な名前を使用する必要があります。

pre_signed_delete_url

 

DELETE 操作に使用する事前署名付き URL。

port

  • use_ssltrue の場合は 443。
  • use_sslfalse の場合は 80。

web サービスがリッスンしているポート。

pre_signed_put_url

 

PUT 操作に使用する事前署名付き URL。

prefix

 

設定され、location が設定されている場合、バケット名を PREFIX-LOCATION として定義します。設定され、指定の PREFIX-LOCATION にバケットが存在しない場合は、 PREFIX の後に無作為の UUID が続くバケット名になります。

secret_access_key

 

S3 バケットのアクセスに使用される Amazon S3 のシークレットアクセスキー。

use_ssl

true

ホストとポートの組み合わせと通信するときに SSL が使用されるかどうかを決定します。

TCPGOSSIP の属性

表A.128 TCPGOSSIP の属性

属性デフォルト説明

socket-binding

 

このプロトコル層のソケットバインディング仕様。非推奨: 代わりに socket-bindings を使用してください。

socket-bindings

 

このプロトコルのアウトバウンドソケットバインディング。

注記

TCPGOSSIP プロトコルを定義するとき、protocol 要素の代わりに socket-discovery-protocol 要素が使用されます。

TCPPING の属性

表A.129 TCPPING の属性

属性デフォルト説明

socket-binding

 

このプロトコル層のソケットバインディング仕様。非推奨: 代わりに socket-bindings を使用してください。

socket-bindings

 

このプロトコルのアウトバウンドソケットバインディング。

注記

TCPPING プロトコルを定義するとき、protocol 要素の代わりに socket-discovery-protocol 要素が使用されます。

暗号化プロトコル

以下のプロトコルは通信スタックをセキュアにするために使用されます。暗号化はクラスターのすべてのメンバーが持つ共有のシークレットキーを基にします。このキーは、SYM_ENCRYPT を使用している場合は共有のキーストアから取得され、ASYM_ENCRYPT を使用している場合はパブリック/プライベートキーの交換から取得されます。以下のプロトコルのいずれかを定義すると、結果となる XML に encrypt-protocol 要素が作成されます。

注記

ASYM_ENCRYPT を使用している場合は、同じスタックに AUTH プロトコルが定義されている必要があります。SYM_ENCRYPT を使用している場合、AUTH プロトコルは任意です。

ASYM_ENCRYPT の属性

表A.130 ASYM_ENCRYPT の属性

属性デフォルト説明

key-alias

 

指定されたキーストアから取得される暗号化キーのエイリアス。

key-credential-reference

 

キーストアから暗号化キーを取得するために必要な認証情報。

key-store

 

暗号化キーが含まれるキーストアへの参照。

SYM_ENCRYPT の属性

表A.131 SYM_ENCRYPT の属性

属性デフォルト説明

key-alias

 

指定されたキーストアから取得される暗号化キーのエイリアス。

key-credential-reference

 

キーストアから暗号化キーを取得するために必要な認証情報。

key-store

 

暗号化キーが含まれるキーストアへの参照。

障害検出プロトコル

以下のプロトコルは、クラスターのメンバーを調査して生存の有無を判断するために使用されます。これらのプロトコルには、汎用属性以外の属性はありません。

  • FD_ALL
  • FD_SOCK
  • VERIFY_SUSPECT

フロー制御プロトコル

以下のプロトコルは、メッセージの送信側の速度を最も遅い受信側に合わせて処理するフロー制御を行います。送信側が送信するメッセージの速度が継続して受信側よりも速い場合、受信側はメッセージをキューに置くか破棄するため、再送信が発生します。これらのプロトコルには、汎用属性以外の属性はありません。

  • MFC - マルチキャストフロー制御
  • UFC - ユニキャストフロー制御

グループメンバーシッププロトコル

pbcast.GMS プロトコルは、新規メンバーのクラスターへの参加、既存メンバーによるクラスターからの離脱、およびクラッシュした疑いのあるメンバーに対応します。このプロトコルには、汎用属性以外の属性はありません。

マージプロトコル

クラスターが分割された場合、MERGE3 プロトコルによってサブクラスターが元どおりにマージされます。このプロトコルはクラスターメンバーを元どおりにマージするロールを果たしますが、クラスターの状態はマージしません。マージ状態のコールバックはアプリケーションが対応します。このプロトコルには、汎用属性以外の属性はありません。

メッセージの安定性

pbcast.STABLE プロトコルは、クラスターのすべてのメンバーが受け取ったメッセージをガベッジコレクションで処理します。このプロトコルは、ダイジェストと呼ばれるメンバーのメッセージ番号が含まれる安定したメッセージを送信します。クラスターのすべてのメンバーが他のメンバーのダイジェストを受信した後、メッセージを再送信テーブルから削除することができます。このプロトコルには、汎用属性以外の属性はありません。

信頼できるメッセージの送信

以下のプロトコルは、信頼できるメッセージの配信と、クラスターのすべてのノードに送信されたメッセージの FIFO プロパティーを提供します。信頼できる配信では、すべてのメッセージに番号が付けられ、シーケンス番号が受信されなかった場合に再送信リクエストが送信されるため、送信元が送ったメッセージを損失することはありません。これらのプロトコルには、汎用属性以外の属性はありません。

  • pbcast.NAKACK2
  • pbcast.UNICAST3

非推奨となったプロトコル

以下のプロトコルは非推奨となり、クラス名のみが含まれるプロトコルによって置き換えられました。たとえば、org.jgroups.protocols.ASYM_ENCRYPT を指定する代わりに、プロトコル名は ASYM_ENCRYPT になります。

  • org.jgroups.protocols.ASYM_ENCRYPT
  • org.jgroups.protocols.AUTH
  • org.jgroups.protocols.JDBC_PING
  • org.jgroups.protocols.SYM_ENCRYPT
  • org.jgroups.protocols.TCPGOSSIP
  • org.jgroups.protocols.TCPPING