25.2.3.11. クラスターインスタンス
25.2.3.11.1. クラスター化された JBoss EAP 6 AMI の起動
概要
このトピックでは、クラスター JBoss EAP 6 AMI を起動するのに必要な手順について説明します。
前提条件
警告
JBoss EAP クラスターを、24 ビット未満のネットワークマスクがあるサブネットで実行したり、複数のサブネットにまたがるようにすると、各クラスターメンバーに対して一意のサーバーピア ID を取得することが複雑になります。
このような設定作業を安定的に行う方法については、
JBOSS_CLUSTER_ID
変数を参照してください (「永続的な設定パラメーター」)。
重要
自動スケーリング Amazon EC2 機能は、JBoss EAP 6 クラスターノードで使用できます。ただし、デプロイメント前にテストする必要があります。特定のワークロードが必要な数のノードにスケールされ、パフォーマンスが、使用予定のインスタンスタイプの要件に見合うようにする必要があります (異なるインスタンスタイプは、異なる EC2 クラウドリソースを受け取ります)。
さらに、インスタンスローカリティーと現在のネットワーク/ストレージ/ホストマシン/RDS の使用率は、クラスターのパフォーマンスに影響を与えます。想定される実際のロードでテストし、予期しない状況を考慮するようにします。
警告
Amazon EC2 scale-down アクションは、正常にシャットダウンせずにノードを終了します。一部のトランザクションは中断される可能性があるため、他のクラスターノード (およびロードバランサー) はフェールオーバーする時間が必要です。そのため、多くの場合でアプリケーションの使用に影響を与えます。
処理されたセッションが完了するまで mod_cluster 管理インターフェースからサーバーを無効にして手動でアプリケーションクラスターをスケールダウンするか、JBoss EAP 6 インスタンスを正常にシャットダウンすることが推奨されます (インスタンスへの SSH アクセスまたは JON を使用できます)。
選択したスケールダウンの手順が原因で、ユーザーに悪影響が出ないようにテストします。特定のワークロード、ロードバランサー、およびセットアップに対して追加措置が必要になることがあります。
手順25.13 クラスター化された JBoss EAP 6 AMI の起動
- AMI を選択します。
- 必要な数のインスタンス (クラスターサイズ) を定義します。
- VPC およびインスタンスタイプを選択します。
- Security Group をクリックします。
- JBoss EAP 6 クラスターサブネットからのすべてのトラフィックが許可されることを確認します。
- 必要に応じて他の制限を定義します。
- 以下の内容を User Data フィールドに追加します。
例25.7 User Data フィールドの例
## mod cluster proxy addresses MOD_CLUSTER_PROXY_LIST=10.0.0.4:7654 ## clustering setup JBOSS_JGROUPS_S3_PING_SECRET_ACCESS_KEY=<your secret key> JBOSS_JGROUPS_S3_PING_ACCESS_KEY=<your access key> JBOSS_JGROUPS_S3_PING_BUCKET=<your bucket name> ## password to access admin console JBOSSAS_ADMIN_PASSWORD=<your password for opening admin console> ## database credentials configuration JAVA_OPTS="$JAVA_OPTS -Ddb.host=instancename.something.rds.amazonaws.com -Ddb.database=mydatabase -Ddb.user=<user> -Ddb.passwd=<pass>" ## subnet prefix this machine is connected to SUBNET=10.0.1. #### to run the example no modifications below should be needed #### PORTS_ALLOWED="1024:65535" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Get the application to be deployed from an Internet URL # mkdir -p /usr/share/java/jboss-ec2-eap-applications # wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war ## install the JDBC driver as a core module yum -y install mysql-connector-java mkdir -p /usr/share/jbossas/modules/com/mysql/main cp -v /usr/share/java/mysql-connector-java-*.jar /usr/share/jbossas/modules/com/mysql/main/mysql-connector-java.jar cat > /usr/share/jbossas/modules/com/mysql/main/module.xml <<"EOM" <?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java.jar"/> </resources> <dependencies> <module name="javax.api"/> </dependencies> </module> EOM cat > $USER_CLI_COMMANDS << "EOC" ## Deploy sample application from local filesystem deploy --force /usr/share/java/jboss-ec2-eap-samples/cluster-demo.war ## ExampleDS configuration for MySQL database data-source remove --name=ExampleDS /subsystem=datasources/jdbc-driver=mysql:add(driver-name="mysql",driver-module-name="com.mysql") data-source add --name=ExampleDS --connection-url="jdbc:mysql://${db.host}:3306/${db.database}" --jndi-name=java:jboss/datasources/ExampleDS --driver-name=mysql --user-name="${db.user}" --password="${db.passwd}" /subsystem=datasources/data-source=ExampleDS:enable /subsystem=datasources/data-source=ExampleDS:test-connection-in-pool EOC ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF
結果
クラスター JBoss EAP 6 AMI が正常に設定および起動されます。