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 | グループメンバーシップ |
新規メンバーのクラスター参加、既存メンバーによる離脱リクエスト、およびクラッシュしたメンバーの |
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 |
ノードがクライアントとして動作するときに使用する | |
client_name | ノードがクライアントとして動作するときに使用する名前。JAAS ログインモジュールを使用する場合、この名前はサブジェクトの取得にも使用されます。 | |
client_password | ノードがクライアントとして動作するときに使用するパスワード。JAAS ログインモジュールを使用する場合、このパスワードはサブジェクトの取得にも使用されます。 | |
login_module_name |
SASL クライアントおよびサーバーを作成するためにサブジェクトとして使用する JAAS ログインモジュールの名前。この属性は、GSSAPI などの一部の | |
mech |
SASL 認証メカニズムの名前。この名前にはローカル SASL プロバイダーがサポートするすべてのメカニズムを指定でき、JDK はデフォルトで | |
sasl_props |
定義された | |
server_callback_handler |
ノードがサーバーとして動作するときに使用する | |
server_name | 完全修飾サーバー名。 | |
timeout | 5000 | チャレンジへの応答を待つ時間 (ミリ秒単位)。 |
検出プロトコル
以下のプロトコルはクラスターの最初のメンバーシップを見つけるために使用され、その後現在のコーディネーターを決定するために使用できます。検出プロトコルのリストは次のとおりです。
- AZURE_PING
- JDBC_PING
- MPING
- PING
- S3_PING
- TCPGOSSIP
- TCPPING
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 |
| web サービスがリッスンしているポート。 |
pre_signed_put_url | PUT 操作に使用する事前署名付き URL。 | |
prefix |
設定され、 | |
secret_access_key | S3 バケットのアクセスに使用される Amazon S3 のシークレットアクセスキー。 | |
use_ssl | true | ホストとポートの組み合わせと通信するときに SSL が使用されるかどうかを決定します。 |
TCPGOSSIP の属性
表A.128 TCPGOSSIP の属性
属性 | デフォルト | 説明 |
---|---|---|
socket-binding |
このプロトコル層のソケットバインディング仕様。非推奨: 代わりに | |
socket-bindings | このプロトコルのアウトバウンドソケットバインディング。 |
TCPGOSSIP
プロトコルを定義するとき、protocol
要素の代わりに socket-discovery-protocol
要素が使用されます。
TCPPING の属性
表A.129 TCPPING の属性
属性 | デフォルト | 説明 |
---|---|---|
socket-binding |
このプロトコル層のソケットバインディング仕様。非推奨: 代わりに | |
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