第8章 Web、HTTP コネクター、および HTTP クラスタリング
8.1. mod_cluster ワーカーノードの設定
mod_cluster ワーカーノードは、負荷分散されたクラスターに参加するアプリケーションサーバーです。ユーザーからのリクエストは web サーバーが受信した後、mod_cluster ワーカーノードのプールへ転送します。ワーカーノードは、管理対象ドメインまたはスタンドアロンサーバーのサーバーグループの一部にすることができます。web サーバーの負荷分散については『管理および設定ガイド』の「HTTP コネクターの概要」を参照してください。
mod_cluster
サブシステムより設定されます。mod_cluster
サブシステムを設定する場合は『管理および設定ガイド』の「mod_cluster サブシステムの設定」を参照してください。
ワーカーノード設定
- スタンドアロンサーバーは
standalone-ha
またはstandalone-full-ha
プロファイルで起動する必要があります。 - 管理対象ドメインのサーバーグループは、
ha
またはfull-ha
プロファイルと、ha-sockets
またはfull-ha-sockets
ソケットバインディンググループを使用する必要があります。JBoss EAP 6 には、これらの要件を満たすother-server-group
という名前のクラスター対応サーバーグループが同梱されます。
注記
/profile=full-ha
部分を削除します。
手順8.1 ワーカーノードの設定
ネットワークインターフェースの設定
デフォルトでは、ネットワークインターフェースがすべて127.0.0.1
に設定されます。スタンドアロンサーバーまたはサーバーグループ内の 1 つまたは複数のサーバーをホストする各物理ホストでは、インターフェースが他のサーバーが見つけることができるパブリック IP アドレスを使用するよう設定する必要があります。JBoss EAP 6 ホストの IP アドレスを変更するには、ホストをシャットダウンし、設定ファイルを直接編集する必要があります。これは、管理コンソールと管理 CLI を駆動する管理 API は固定管理アドレスに依存するためです。クラスター内の各サーバーの IP アドレスをマスターのパブリック IP アドレスに変更するには、次の手順を実行します。- 本トピックでこれまでに説明したプロファイルを使用して JBoss EAP サーバーを起動します。
EAP_HOME/bin/jboss-cli.sh
コマンド (Linux の場合) またはEAP_HOME\bin\jboss-cli.bat
コマンド (Microsoft Windows Server の場合) を使用して管理 CLI を起動します。connect
と入力して localhost 上のドメインコントローラーに接続するか、connect IP_ADDRESS
と入力してリモートサーバー上のドメインコントローラーに接続します。- 以下のコマンドを入力し、
management
、public
、およびunsecure
インターフェースの外部 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
要素を削除し、ドメインコントローラーを示すhost
属性のremote
要素を追加する必要があります。この手順はスタンドアロンサーバーには適用されません。- 以下の構文を使用して、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 AS インスタンスに対して認証する必要があるかどうか尋ねられた場合は、yes
と回答します。パスワードchangeme
を使用した、slave1
という名前のスレーブに対するコマンドの入出力例は以下のとおりです。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=" />add-user.sh
の出力から Base64 でエンコードされた<secret>
要素をコピーします。認証に Base64 でエンコードされたパスワード値を指定したい場合、add-user.sh
の出力の最終行より<secret>
要素値をコピーします。次の手順でこの値が必要になります。新しい認証を使用するようスレーブホストのセキュリティーレルムを変更します。
以下の方法の 1 つを用いて秘密の値を指定できます。管理 CLI を使用して、サーバー設定ファイルに Base64 でエンコードされたパスワード値を指定します。
EAP_HOME/bin/jboss-cli.sh
コマンド (Linux の場合) またはEAP_HOME\bin\jboss-cli.bat
コマンド (Microsoft Windows Server の場合) を使用して管理 CLI を起動します。connect
と入力して localhost 上のドメインコントローラーに接続するか、connect IP_ADDRESS
と入力してリモートサーバー上のドメインコントローラーに接続します。- 以下のコマンドを入力して秘密の値を指定します。必ず
SECRET_VALUE
を前の手順のadd-user
出力から返された秘密の値に置き換えてください。
各コマンドに対して以下のような結果が表示されるはずです。/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE")
:reload
"outcome" => "success"
ホストを設定し、vault よりパスワードを取得します。
vault.sh
スクリプトを使用してマスクされたパスワードを生成します。次のような文字列が生成されます:VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0
。vault に関する詳細は、「機密性の高い文字列のパスワード vault」の項にある 「パスワード valut システム」 を参照してください。EAP_HOME/bin/jboss-cli.sh
コマンド (Linux の場合) またはEAP_HOME\bin\jboss-cli.bat
コマンド (Microsoft Windows Server の場合) を使用して管理 CLI を起動します。connect
と入力して localhost 上のドメインコントローラーに接続するか、connect IP_ADDRESS
と入力してリモートサーバー上のドメインコントローラーに接続します。- 以下のコマンドを入力して秘密の値を指定します。必ず
SECRET_VALUE
を前の手順で生成されたマスクされたパスワードに置き換えてください。
各コマンドに対して以下のような結果が表示されるはずです。/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::SECRET_VALUE}")
:reload
"outcome" => "success"
注記
vault でパスワードを作成する場合、Base64 エンコードではなくプレーンテキストで指定する必要があります。
システムプロパティーとしてパスワードを指定します。
次の例は、server.identity.password
をパスワードのシステムプロパティー名として使用します。- 管理 CLI を使用してサーバー設定ファイルにパスワードのシステムプロパティーを指定します。
EAP_HOME/bin/jboss-cli.sh
コマンド (Linux の場合) またはEAP_HOME\bin\jboss-cli.bat
コマンド (Microsoft Windows Server の場合) を使用して管理 CLI を起動します。connect
と入力して localhost 上のドメインコントローラーに接続するか、connect IP_ADDRESS
と入力してリモートサーバー上のドメインコントローラーに接続します。- 以下のコマンドを入力し、システムプロパティーを使用する秘密のアイデンティティーを設定します。
各コマンドに対して以下のような結果が表示されるはずです。/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}")
:reload
"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 サーバーを設定するには、『管理および設定ガイド』の「外部 Web サーバーを JBoss EAP 6 アプリケーションの Web フロントエンドとして使用」を参照してください。