第7章 Microsoft Azure での JBoss EAP 高可用性の使用
Microsoft Azure は、UDP マルチキャストを基にした JGroups 検出プロトコルをサポートしていません。他の JGroups 検出プロトコル (静的設定 (TCPPING
))、共有データベース (JDBC_PING
)、共有ファイルシステムベースの ping (FILE_PING
)、または TCPGOSSIP
などを使用することは可能ですが、AZURE_PING
は Azure 用に特別に開発した共有ファイル検出プロトコルを使用することを強くお勧めします。
7.1. JBoss EAP の高可用性のための AZURE_PING の設定
ここでは、AZURE_PING JGroups 検索プロトコルを使用するよう JBoss EAP クラスターを設定する方法を説明します。仮想マシンの作成時に前提条件を 満たしていることを確認します。
AZURE_PING は、Microsoft Azure ストレージアカウント内で共通の Blob コンテナーを使用します。AZURE_PING が使用できる Blob コンテナーがない場合は、仮想マシンがアクセスできる Blob コンテナーを作成します。
Blob コンテナーの作成後に、AZURE_PING を設定するために以下の情報が必要になります。
-
storage_account_name
: blob コンテナーが含まれる Microsoft Azure ストレージアカウントの名前。 -
storage_access_key
: ストレージアカウントのシークレットアクセスキー。 -
container
:PING
データに使用する blob コンテナーの名前。
AZURE_PING を JGroups 検索プロトコルとして使用するように JBoss EAP を設定するには、事前設定された JBoss EAP 設定ファイルのサンプルを使用するか 、既存の設定を変更する ことができます。
以下の手順では、UDP JGroups スタックを使用して AZURE_PING を設定します。Azure で JBoss EAP メッセージング高可用性 を設定する場合は、代わりに TCP JGroups スタックで AZURE_PING を設定する必要があります。
7.1.1. サンプル設定ファイルの使用
JBoss EAP には、Microsoft Azure のスタンドアロンサーバーのクラスターリングを設定するための設定ファイルのサンプルが含まれています。これらのファイルは EAP_HOME/docs/examples/configs/
にあり、standalone-azure-ha.xml
と standalone-azure-full-ha.xml
です。
サーバープロファイル間の相違点は、JBoss EAP設定ガイド の相違点の説明 を参照してください。
これらの設定ファイルのサンプルは、Microsoft Azure でクラスターリングを使用するために事前設定されており、必要なのは Azure ストレージアカウントおよび blob コンテナーの値を指定することのみです。
必要な設定ファイルのサンプルを EAP_HOME/standalone/configuration/
にコピーします。
7.1.2. 既存設定の変更
既存の JBoss EAP の高可用性設定を変更する場合は、jgroups
サブシステムに以下の変更を加える必要があります。
管理 CLI を起動し、サーバーを埋め込み、選択した設定ファイルにオフライン変更を行います。以下に例を示します。
$ EAP_HOME/bin/jboss-cli.sh [disconnected /] embed-server --server-config=standalone-ha.xml
デフォルトでは、JGroups は UDP スタックを使用します。別のスタックを使用していた場合は、UDP スタックの使用に戻ります。
[standalone@embedded /] /subsystem=jgroups/channel=ee:write-attribute(name=stack,value=udp)
以下のバッチコマンドを実行して既存の UDP スタックを削除し、Microsoft Azure 用に設定された新しい UDP スタックを挿入します。
batch /subsystem=jgroups/stack=udp:remove /subsystem=jgroups/stack=udp:add() /subsystem=jgroups/stack=udp/transport=UDP:add(socket-binding=jgroups-udp,properties={ip_mcast=false}) /subsystem=jgroups/stack=udp/protocol=azure.AZURE_PING:add(properties={storage_account_name="${jboss.jgroups.azure_ping.storage_account_name}", storage_access_key="${jboss.jgroups.azure_ping.storage_access_key}", container="${jboss.jgroups.azure_ping.container}"}) /subsystem=jgroups/stack=udp/protocol=MERGE3:add /subsystem=jgroups/stack=udp/protocol=FD_SOCK:add(socket-binding=jgroups-udp-fd) /subsystem=jgroups/stack=udp/protocol=FD:add /subsystem=jgroups/stack=udp/protocol=VERIFY_SUSPECT:add /subsystem=jgroups/stack=udp/protocol=pbcast.NAKACK2:add(properties={use_mcast_xmit=false,use_mcast_xmit_req=false}) /subsystem=jgroups/stack=udp/protocol=UNICAST3:add /subsystem=jgroups/stack=udp/protocol=pbcast.STABLE:add /subsystem=jgroups/stack=udp/protocol=pbcast.GMS:add /subsystem=jgroups/stack=udp/protocol=UFC:add /subsystem=jgroups/stack=udp/protocol=FRAG2:add run-batch
注記設定ファイルで Microsoft Azure ストレージアカウントおよび blob コンテナーの値を保存する場合は、上記の設定のシステムプロパティーの参照を Azure 環境の値に置き換えます。以下のコマンドは、JBoss EAP を起動する例で、システムプロパティーを使用します。
設定ファイルのスタック XML は以下のようになります。
<stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"> <property name="ip_mcast"> false </property> </transport> <protocol type="azure.AZURE_PING"> <property name="storage_account_name"> ${jboss.jgroups.azure_ping.storage_account_name} </property> <property name="storage_access_key"> ${jboss.jgroups.azure_ping.storage_access_key} </property> <property name="container"> ${jboss.jgroups.azure_ping.container} </property> </protocol> <protocol type="MERGE3"/> <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/> <protocol type="FD"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="pbcast.NAKACK2"> <property name="use_mcast_xmit"> false </property> <property name="use_mcast_xmit_req"> false </property> </protocol> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="FRAG2"/> </stack>
埋め込みサーバーを停止し、管理 CLI を終了します。
[standalone@embedded /] stop-embedded-server [disconnected /] exit