Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
17.6.6. mod_cluster ワーカーノードの設定
概要
mod_cluster ワーカーノードは、JBoss EAP 6 サーバーで構成されます。このサーバーは、管理対象ドメインまたはスタンドアロンサーバーのサーバーグループの一部にすることができます。個別のプロセスは JBoss EAP 6 内で実行され、クラスターのワーカーノードをすべて管理します。これはマスターと呼ばれます。ノードの概念の詳細については、「ノードのタイプ」 を参照してください。Web サーバーの負荷分散の概要は、「HTTP コネクターの概要」 を参照してください。
ワーカーノード設定
- スタンドアロンサーバーは
standalone-ha
またはstandalone-full-ha
プロファイルで起動する必要があります。 - 管理対象ドメインのサーバーグループは、
ha
またはfull-ha
プロファイルを使用し、ha-sockets
またはfull-ha-sockets
ソケットバインディンググループを使用する必要があります。JBoss EAP 6 には、これらの要件を満たすother-server-group
という名前のクラスター対応サーバーグループが同梱されます。
/profile=full-ha
の部分を削除します。
手順17.14 ワーカーノードの設定
ネットワークインターフェースの設定
デフォルトでは、ネットワークインターフェースがすべて127.0.0.1
に設定されます。スタンドアロンサーバーまたはサーバーグループ内の 1 つまたは複数のサーバーをホストする各物理ホストでは、インターフェースが他のサーバーが見つけることができるパブリック IP アドレスを使用するよう設定する必要があります。JBoss EAP 6 ホストの IP アドレスを変更するには、ホストをシャットダウンし、設定ファイルを直接編集する必要があります。これは、管理コンソールと管理 CLI を駆動する管理 API が安定した管理アドレスに依存するためです。クラスター内の各サーバーの IP アドレスをマスターのパブリック IP アドレスに変更するには、次の手順を実行します。- 本トピックでこれまでに説明したプロファイルを使用して JBoss EAP サーバーを起動します。
- Linux の
EAP_HOME/bin/jboss-cli.sh
コマンド、Microsoft Windows Server ではEAP_HOME\bin\jboss-cli.bat
コマンドを使用して、管理 CLI を起動します。localhost 上のドメインコントローラーに 接続 するか、 IP_ADDRESSに接続 してリモートサーバーのドメインコントローラーに接続する場合は connect と入力します。 - 以下のコマンドを入力して、
管理
、パブリック
、およびセキュアでない
インターフェースの外部 IP アドレスを変更します。コマンドのEXTERNAL_IP_ADDRESS
はホストの実際の外部 IP アドレスに置き換えてください。/interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:EXTERNAL_IP_ADDRESS}" /interface=public:write-attribute(name=inet-address,value="${jboss.bind.address.public:EXTERNAL_IP_ADDRESS}" /interface=unsecure:write-attribute(name=inet-address,value="${jboss.bind.address.unsecure:EXTERNAL_IP_ADDRESS}" reload
各コマンドに対して以下のような結果が表示されるはずです。"outcome" => "success"
- 管理対象ドメインに参加し、マスターではないホストの場合、ホスト名を
master
から一意の名前に変更する必要があります。この名前はスレーブ全体で一意になる必要があり、スレーブがクラスターを識別するために使用されるため、使用する名前を覚えておくようにしてください。- 以下の構文を使用して、JBoss EAP スレーブホストを起動します。
bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
以下に例を示します。bin/domain.sh --host-config=host-slave01.xml
- 管理 CLI を起動します。
- 以下の構文を使用してホスト名を置き換えます。
/host=master:write-attribute(name="name",value=UNIQUE_HOST_SLAVE_NAME)
以下に例を示します。/host=master:write-attribute(name="name",value="host-slave01")
以下の結果が表示されるはずです。"outcome" => "success"
これにより、host-slave01.xml
ファイルの XML が以下のように変更されます。<host name="host-slave01" xmlns="urn:jboss:domain:1.6">
- 新たに設定されたホストが管理対象ドメインに参加する必要がある場合は、
local
要素を削除し、ドメインコントローラーを示すremote
要素host
属性を追加する必要があります。このステップはスタンドアロンサーバーには適用されません。- 以下の構文を使用して、JBoss EAP スレーブホストを起動します。
bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
以下に例を示します。bin/domain.sh --host-config=host-slave01.xml
- 管理 CLI を起動します。
- 次の構文を使用してドメインコントローラーを指定します。
/host=UNIQUE_HOST_SLAVE_NAME/:write-remote-domain-controller(host=DOMAIN_CONTROLLER_IP_ADDRESS,port=${jboss.domain.master.port:9999},security-realm="ManagementRealm")
以下に例を示します。/host=host-slave01/:write-remote-domain-controller(host="192.168.1.200",port=${jboss.domain.master.port:9999},security-realm="ManagementRealm")
以下の結果が表示されるはずです。"outcome" => "success"
これにより、host-slave01.xml
ファイルの XML が以下のように変更されます。<domain-controller> <remote host="192.168.1.200" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/> </domain-controller>
各スレーブサーバーの認証を設定します。
各スレーブサーバーには、ドメインコントローラーまたはスタンドアロンマスターのManagementRealm
で作成されたユーザー名とパスワードが必要です。ドメインコントローラーまたはスタンドアロンマスターで、EAP_HOME/bin/add-user.sh
コマンドを実行します。スレーブと同じユーザー名を持つユーザーをManagementRealm
に追加します。このユーザーが外部 JBoss EAP 6 インスタンスに対して認証する必要があるかどうかを尋ねられたら、yes
と回答します。以下は、slave1
と呼ばれるスレーブの passwordchangeme
と出力の例です。user:bin user$ ./add-user.sh What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a):
a
Enter the details of the new user to add. Realm (ManagementRealm) : Username :slave1
Password :changeme
Re-enter Password :changeme
About to add user 'slave1' for realm 'ManagementRealm' Is this correct yes/no?yes
Added user 'slave1' to file '/home/user/jboss-eap-6.0/standalone/configuration/mgmt-users.properties' Added user 'slave1' to file '/home/user/jboss-eap-6.0/domain/configuration/mgmt-users.properties' Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller? yes/no? yes To represent the user add the following to the server-identities definition <secret value="Y2hhbmdlbWU=" /><secret>
出力から Base64 でエンコードされたadd-user.sh
要素をコピーします。認証に Base64 でエンコードされたパスワード値を指定する予定がある場合は、以下の手順で必要なように、<secret>
出力の最後の行からadd-user.sh
要素の値をコピーします。新しい認証を使用するようスレーブホストのセキュリティーレルムを変更します。
以下の方法の 1 つを用いて秘密の値を指定できます。管理 CLI を使用して、サーバー設定ファイルに Base64 でエンコードされたパスワード値を指定します。
- Linux の
EAP_HOME/bin/jboss-cli.sh
コマンド、Microsoft Windows Server ではEAP_HOME\bin\jboss-cli.bat
コマンドを使用して、管理 CLI を起動します。localhost 上のドメインコントローラーに 接続 するか、 IP_ADDRESSに接続 してリモートサーバーのドメインコントローラーに接続する場合は connect と入力します。 - 以下のコマンドを入力して秘密の値を指定します。
SECRET_VALUE
は、直前の手順の add-user 出力から返された秘密の値に置き換えてください。/host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE") reload --host=master
各コマンドに対して以下のような結果が表示されるはずです。"outcome" => "success"
ホストを設定し、vault よりパスワードを取得します。
vault.sh
スクリプトを使用してマスクされたパスワードを生成します。VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0
のような文字列が生成されます。パスワード vault の詳細は、セキュリティー 『アーキテクチャー』 およびその他の JBoss EAP セキュリティードキュメントを参照してください。- Linux の
EAP_HOME/bin/jboss-cli.sh
コマンド、Microsoft Windows Server ではEAP_HOME\bin\jboss-cli.bat
コマンドを使用して、管理 CLI を起動します。localhost 上のドメインコントローラーに 接続 するか、 IP_ADDRESSに接続 してリモートサーバーのドメインコントローラーに接続する場合は connect と入力します。 - 以下のコマンドを入力して秘密の値を指定します。
SECRET_VALUE
は、必ず前のステップで生成したマスクされたパスワードに置き換えてください。/host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::SECRET_VALUE}") reload --host=master
各コマンドに対して以下のような結果が表示されるはずです。"outcome" => "success"
注記vault でパスワードを作成する場合、Base64 エンコードではなくプレーンテキストで指定する必要があります。
システムプロパティーとしてパスワードを指定します。
次の例は、server.identity.password
をパスワードのシステムプロパティー名として使用します。- 管理 CLI を使用してサーバー設定ファイルにパスワードのシステムプロパティーを指定します。
- Linux の
EAP_HOME/bin/jboss-cli.sh
コマンド、Microsoft Windows Server ではEAP_HOME\bin\jboss-cli.bat
コマンドを使用して、管理 CLI を起動します。localhost 上のドメインコントローラーに 接続 するか、 IP_ADDRESSに接続 してリモートサーバーのドメインコントローラーに接続する場合は connect と入力します。 - 以下のコマンドを入力し、システムプロパティーを使用する秘密のアイデンティティーを設定します。
/host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}") reload --host=master
各コマンドに対して以下のような結果が表示されます。"outcome" => "success"
- システムプロパティーとしてパスワードを指定する場合、次の方法のいずれかを用いてホストを設定できます。
- 次の例のように、プレーンテキストのパスワードをコマンドライン引数として入力し、サーバーを起動します。
-Dserver.identity.password=changeme
注記パスワードはプレーンテキストで入力する必要があります。ps -ef コマンドを実行すると、パスワードを確認できます。 - パスワードをプロパティーファイルに格納し、プロパティーファイルの URL をコマンドライン引数として渡します。
- キーと値のペアをプロパティーファイルに追加します。以下に例を示します。
server.identity.password=changeme
- コマンドライン引数を用いてサーバーを起動します。
--properties=URL_TO_PROPERTIES_FILE
.
サーバーを再起動します。
ホスト名をユーザー名として使用し、暗号化された文字列をパスワードとして使用してスレーブがマスターに対して認証されます。
結果
スタンドアロンサーバーまたは管理対象ドメインのサーバーグループ内のサーバーが mod_cluster ワーカーノードとして設定されます。クラスター化されたアプリケーションをデプロイする場合、セッションはフェイルオーバーのためにすべてのクラスターノードに複製され、外部 Web サーバーまたはロードバランサーからのリクエストを許可できます。クラスターの各ノードは、デフォルトで自動検出を使用して他のノードを検出します。自動検出や mod_cluster
サブシステムのその他の固有の設定を設定するには、「mod_cluster
サブシステムの設定」 を参照してください。Apache HTTP Server を設定するには、「外部 Web サーバーを JBoss EAP 6 アプリケーションの Web フロントエンドとして使用」 を参照してください。