第6章 クラスター化された JBoss EAP の起動
6.1. クラスター化された JBoss EAP AMI の起動 (mod_cluster および VPC なし)
このトピックでは、mod_cluster および VPC なしでクラスター化された JBoss EAP AMI を起動する手順について説明します。
- イメージで提供される設定スクリプトサンプルを使用できます。
クラスター化された JBoss EAP AMI をスタンドアロンサーバーインスタンスで開始するには、事前設定された S3_PING JGroups スタックが含まれる /opt/rh/eap8/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml
ファイルのサンプルを使用できます。詳細は、Reliable group communication with JGroups ドキュメントの S3_PING を参照してください。この standalone-ec2-ha.xml
プロファイルファイルは、/opt/rh/eap/root/usr/share/wildfly/docs/examples/configs/
から JBoss EAP 設定ディレクトリー /opt/rh/eap8/root/usr/share/wildfly/standalone/configuration/
にコピーされる必要があります。その後、以下の行を JBoss EAP サービス設定ファイルに追加する必要があります。
WILDFLY_SERVER_CONFIG=standalone-ec2-ha.xml
undertow
サブシステムのスタンドアロンサーバーインスタンスごとに、固有の instance-id
を設定する必要があります。instance-id
の値は、standalone-ec2-ha.xml
ファイルを編集して、あるいは管理 CLO を使用して手動で設定できます。たとえば、以下のように管理 CLI を使用して instance-id
を設定できます。
/subsystem=undertow:write-attribute(name=instance-id,value={${jboss.jvmRoute}})
Jboss.jvmRoute
の値は JAVA_OPTS
変数を使用して standalone.conf
に指定できます。
EC2 設定ファイルの jgroups
サブシステムでは、クラスターメンバーを検出するために S3_PING
固有のプロパティーが必要です。S3、シークレットアクセスキー、および検出に使用する S3 バケットにアクセスキーを指定する必要があります。これらのプロパティーは Java オプションとして指定するか、編集して、あるいは CLI を使用して XML ファイルに直接追加することができます。
検出用に S3 バケットを作成する必要があります。詳細は、Amazon Simple Storage Service Documentation を参照してください。必要なパーミッションの設定が必要になることもあります。JGroups スタックは、他のノードとの通信に使用される IP アドレスにバインドする必要があります。これは、S3 Java オプションとともに /opt/rh/eap8/root/usr/share/wildfly/bin/standalone.conf
ファイルに Java オプションを追加することで行うことができます。たとえば、プライベート IP アドレスが 10.10.10.10
の場合は、以下の行を standalone.conf
ファイルに追加します。
JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.private=10.10.10.10 -Djboss.jgroups.aws.s3_ping.region_name=<S3_REGION_NAME> -Djboss.jgroups.aws.s3_ping.bucket_name=<S3_BUCKET_NAME>"
サンプルアプリケーション: /opt/rh/eap8/root/usr/share/java/eap8-jboss-ec2-eap-samples/cluster-demo.war
をデプロイして、/opt/rh/eap8/root/usr/share/wildfly/standalone/log/server.log
でログを確認し、JBoss EAP サーバーがクラスターを作成していることを確認できます。
6.1.1. ドメインコントローラーインスタンス用の mod_cluster と VPC を使用せずにクラスター化された AMI の起動
手順
-
domain-ec2.xml
ファイルを/opt/rh/eap8/root/usr/share/wildfly/docs/examples/configs
から JBoss EAP 設定ディレクトリーにコピーします。 以下の変数を適切なサービス設定ファイルに設定します。
WILDFLY_SERVER_CONFIG=domain-ec2.xml WILDFLY_HOST_CONFIG=host-master.xml
S3 ドメインコントローラー検出設定を
host-master.xml
ファイルに追加します。<local> <discovery-options> <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery"> <property name="access-key" value="S3_ACCESS_KEY"/> <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/> <property name="location" value="S3_BUCKET_NAME"/> </discovery-option> </discovery-options> </local>
- ユーザーを設定し、ユーザーのシークレット値をホストコントローラーインスタンスに追加します。詳細は、設定ガイド の 2 台のマシンで管理対象ドメインを作成 を参照してください。
6.1.2. ホストコントローラー用の mod_cluster と VPC を使用せずにクラスター化された AMI を起動
手順
以下の変数を適切なサービス設定ファイルに設定します。
WILDFLY_HOST_CONFIG=host-slave.xml
S3 ドメインコントローラー検出設定を
host-slave.xml
ファイルに追加します。<remote security-realm="ManagementRealm"> <discovery-options> <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery"> <property name="access-key" value="S3_ACCESS_KEY"/> <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/> <property name="location" value="S3_BUCKET_NAME"/> </discovery-option> </discovery-options> </remote>
注記S3 ドメインコントローラーの検出に関する情報は、1 以上のインスタンスを起動し、ホストコントローラーとして提供 を参照してください。
24 ビットより小さいネットワークマスクを持つサブネットで JBoss EAP クラスターを実行するか、複数のサブネットにまたがると、各クラスターメンバーの一意のサーバーピア ID の取得が複雑になります。
Amazon EC2 の自動スケーリング機能は、JBoss EAP クラスターノードで使用できます。ただし、デプロイする前に必ずテストしてください。必要なノード数に特定のワークロードがスケーリングし、使用する予定のインスタンスタイプで必要とされるパフォーマンスを満たすようにする必要があります。インスタンスタイプが受信する EC2 クラウドリソースのシェアは、それぞれによって異なります。
さらに、インスタンスのローカリティーおよび現在のネットワーク/ ストレージ/ ホストマシン/RDS 使用率は、クラスターのパフォーマンスに影響を与える可能性があります。予想される実際の負荷をテストし、予期しない状況を考慮するようにしてください。
Amazon EC2 スケールダウン アクションは、正常にシャットダウンする可能性なしにノードを終了します。また、一部のトランザクションが中断する可能性があるため、他のクラスターノードおよびロードバランサーには、フェイルオーバーの時間が必要です。これは、アプリケーションユーザーエクスペリエンスに影響を与える可能性があります。
処理されるセッションが完了するまで mod_cluster 管理インターフェイスからサーバーを無効にしてアプリケーションクラスターを手動でスケールダウンするか、インスタンスまたは Red Hat JBoss Operations Network への SSH アクセスを使用して JBoss EAP インスタンスを正常にシャットダウンして、アすることが推奨されます。
スケールダウンの手順をテストしても、ユーザーエクスペリエンスに悪影響が及ぶことはありません。特定のワークロード、ロードバランサー、および設定には、追加の対策が必要になる場合があります。