Amazon Web サービスにおける JBoss EAP のディプロイ

Red Hat JBoss Enterprise Application Platform 7.4

高可用性の設定など、Amazon Web Services で Red Hat JBoss Enterprise Application Platform を使用する手順

Red Hat Customer Content Services

概要

本書では、Amazon EC2 に Red Hat JBoss Enterprise Application Platform をデプロイする方法について説明します。

JBoss EAP ドキュメントへのフィードバック (英語のみ)

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. このリンクをクリック してチケットを作成します。
  2. ドキュメント URLセクション番号課題の説明 を記入してください。
  3. Summary に課題の簡単な説明を入力します。
  4. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL を含めてください。
  5. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

第1章 Amazon EC2 について

Amazon.com が運営サービスである Amazon Elastic Compute Cloud (Amazon EC2) は、カスタマイズ可能な仮想コンピューティング環境をお客様に提供します。このサービスでは、Amazon Machine Image (AMI) を起動して仮想マシンまたはインスタンスを作成できます。ユーザーは、インスタンスに必要なソフトウェアをインストールできます。料金は、使用する容量に応じて課金されます。Amazon EC2 は柔軟性が高く、デプロイされたアプリケーションを迅速にスケーリングできるように設計されています。

詳細は Amazon Web Services の web サイトを参照してください。

Amazon Machine Images について

Amazon Machine Image (AMI) は EC2 仮想マシンインスタンスのテンプレートです。ユーザーは、インスタンスを作成するための適切な AMI を選択して EC2 インスタンスを作成します。AMI の主要コンポーネントは、インストール済みのオペレーティングシステムやその他のソフトウェアを含む読み取り専用ファイルシステムです。AMI ごとに、さまざまなユースケース用にインストールされるソフトウェアが異なります。Amazon EC2 には、Amazon Web Services およびサードパーティーが提供する多くの AMI が含まれます。また、ユーザーは独自のカスタム AMI を作成することもできます。

JBoss EAP Amazon マシンイメージのタイプ

パブリックまたはプライベートの Amazon Machine Image (AMI) をデプロイして、Amazon Elastic Compute Cloud (Amazon EC2) で JBoss EAP を使用します。

重要

Red Hat は、スタンドアロンインスタンスまたは管理対象ドメインのいずれかで full-ha プロファイルに現在対応していません。

JBoss EAP パブリック AMI
AWS マーケットプレイス https://aws.amazon.com/marketplace から JBoss EAP パブリック AMI にアクセスします。パブリック AMI は、従量課金制 (PAYG) モデルで提供されます。PAYG モデルでは、使用したコンピューティングリソースの数に基づいてのみ料金が発生します。
JBoss EAP プライベート AMI
既存のサブスクリプションを使用して、Red Hat Cloud Access を介して JBoss EAP プライベート AMI にアクセスできます。Red Hat Cloud Access の詳細は、Red Hat Cloud Access について を参照してください。

Red Hat Cloud Access 製品ページ

既存の Red Hat サブスクリプションがある場合、Red Hat Cloud Access は、Amazon EC2 や Microsoft Azure などの Red Hat 認定クラウドインフラストラクチャープロバイダーで JBoss EAP をサポートします。Red Hat Cloud Access を使用すると、サブスクリプションを従来のサーバーおよびパブリッククラウドベースのリソースの間で費用対効果の高い方法で移動できます。

詳細は、Red Hat Cloud Access on the Customer Portal を参照してください。

Red Hat Cloud Access の機能

Red Hat Cloud Access プログラムのメンバーシップでは、Red Hat によって作成されるサポート対象のプライベート Amazon Machine Images (AMI) へのアクセスを利用できます。

Red Hat AMI には、以下のソフトウェアが事前にインストールされており、Red Hat によって完全にサポートされています。

  • Red Hat Enterprise Linux
  • JBoss EAP
  • Red Hat Update Infrastructure を使用した RPM による製品の更新

Red Hat AMI はそれぞれ開始点に S ぎません。アプリケーションの要件をさらに設定する必要があります。

サポートされる Amazon EC2 インスタンスタイプ

Red Hat Cloud Access は、以下の Amazon EC2 インスタンスタイプをサポートします。各インスタンスの詳細は、Amazon Elastic Compute Cloud User Guide for Linux Instances を参照してください。

JBoss EAP をデプロイするための AMI の最小仮想ハードウェア要件は次のとおりです。

  • 仮想 CPU: 2
  • メモリー: 4 GB

ただし、JBoss EAP にデプロイするアプリケーションによっては、追加のプロセッサーとメモリーが必要になる場合があります。

サポート対象の Red Hat AMI

サポートされている Red Hat AMI は、次の例に示すように、名前で識別できます。

プライベートイメージの例

RHEL-7-JBEAP-7.4.0_HVM_GA-20210909-x86_64-0-Access2-GP2

パブリックイメージの例

RHEL-7-JBEAP-7.4.0_HVM_GA-20220804-x86_64-0-Marketplace-GP2

  • RHEL-x は、AMI にインストールされている Red Hat Enterprise Linux のバージョン番号です。例 7
  • JBEAP-x.y.z は、AMI にインストールされている JBoss EAP のバージョン番号です。例 7.4.0
  • 20220804 は、AMI が YYYYMMDD の形式で作成された日付です。
  • x86_64 は、AMI のアーキテクチャーです。これは x86_64 または i386 です。
  • Access2 または Marketplace は、AMI がプライベートかパブリックかを次のように示します。

    • プライベートイメージには Access2 が含まれています。
    • パブリックイメージには Marketplace が含まれています。

第2章 JBoss EAP インスタンスの起動

以下の手順は、Amazon Web Services (AWS) マーケットプレイスからパブリック JBoss EAP インスタンスを起動し、Amazon EC2 コンソールで JBoss EAP インスタンスを起動する方法を示しています。

2.1. AWS マーケットプレイスからの JBoss EAP インスタンスの起動

従量課金制 (PAYG) モデルで提供されるパブリック JBoss EAP Amazon Machine Image (AMI) は、Amazon Web Services (AWS) マーケットプレイスで入手できます。

前提条件

  • AWS アカウントがある。
  • Amazon Web Services CLI がインストールされ、アカウントの認証情報で設定されている。

手順

  1. URL: https://aws.amazon.com/marketplace で AWS マーケットプレイスに移動します。
  2. 検索バーで「JBoss EAP」を検索します。Red Hat LimitedRed Hat を選択して、Publisher で結果をフィルタリングします。
  3. 起動するイメージをクリックします。

    注記

    EU に拠点を置く場合は、パブリッシャー "Red Hat Limited" からのイメージを選択してください。それ以外の場合は、パブリッシャー "Red Hat" からのイメージを選択してください。

    ソフトウェアサブスクリプションページにリダイレクトされます。

  4. 購読設定を選択し、Continue to Subscribe をクリックします。
  5. Accept Terms をクリックして条件に同意し、Continue to Configuration をクリックします。

    設定ページにリダイレクトされます。

  6. 設定オプションを選択し、Continue to Launch をクリックします。

    ソフトウェアページを起動するように指示されます。

  7. 起動設定の詳細を確認し、Launch をクリックしてインスタンスを起動します。

2.2. AWS EC2 コンソールを使用してプライベート AMI から JBoss EAP インスタンスを起動

AWS EC2 コンソールを使用してプライベート AMI から JBoss EAP インスタンスを起動できます。

AWS コマンドラインインターフェイスを使用してインスタンスを起動することもできます。AWS CLI の詳細は AWS CLI を参照してください。

前提条件

  • Red Hat サブスクリプションがある。
  • AWS アカウントがある。
  • Amazon Web Services CLI がインストールされ、アカウントの認証情報で設定されている。

手順

  1. Amazon EC2 コンソール を開きます。
  2. Amazon EC2 コンソールから、AMI をクリックします。
  3. Amazon Machine Images (AMIs) パネルにある Private imagesjbeap AMI を検索し、AMI を選択します。

    たとえば、RHEL-7-JBEAP-7.4.0_HVM_GA-20210909-x86_64-0-Access2-GP2 です。

  4. インスタンスタイプを選択します。対応の Amazon EC2 インスタンスタイプの詳細は、Supported Amazon EC2 Instance Types を参照してください。
  5. Configure Instance Details のセクションで、インスタンス設定を設定します。
  6. Advanced Details セクションの User data ボックスで、インスタンスの起動時に JBoss EAP を実行するサンプルスクリプトを貼り付けできます。サンプルスクリプトの詳細は、Launching JBoss EAP on Amazon EC2 Using Script を参照してください。

    注記

    必要に応じて、ストレージを指定し、インスタンスにタグを付け、セキュリティーグループの詳細を設定します。

  7. Review and Launch をクリックします。これにより、インスタンスの起動の確認ページに移動します。
  8. Launch をクリックしてキーペアを選択し、インスタンスを起動します。
注記

キーペアを選択していない場合は、インスタンスを起動する前にキーペアを指定します。

第3章 クラスター化されていない JBoss EAP インスタンスの起動

この章では、プライベート AMI またはパブリック Marketplace のリストから作成された Red Hat Amazon Machine Image (AMI) で JBoss EAP のクラスター化されていないインスタンスを起動する手順を示します。

前提条件

  • 適切な Red Hat AMI。詳細は、サポート対象の Red Hat AMI を参照してください。
  • 少なくともポート 22、8080、および 9990 での受信要求を許可する事前設定されたセキュリティーグループ。

クラスター化されていない JBoss EAP インスタンスの起動

注記

sshec2-user ユーザーとして EC2 インスタンスに接続できます。管理者権限が必要な場合は、後で root ユーザーに変更できます。以下に例を示します。

$ ssh -l ec2-user ${INSTANCE_PUBLIC_IP}
...
$ sudo su -
  • Red Hat AMI インスタンスを起動します。

    JBoss EAP のクラスター化されていないインスタンスが Red Hat AMI で設定され、起動されている。

  • JBoss EAP を設定するには、サービスに引数を直接渡すことができます。この方法で処理できない引数もあります。サービス設定ファイルの場所は次のとおりです。

    • RHEL 6: /etc/sysconfig/eap7-standalone
    • RHEL 7: /etc/opt/rh/eap7/wildfly/eap7-standalone.conf

    システムパスの詳細は、システムパス を参照してください。

注記
  • 複雑な設定の場合は、 JBoss EAP bin directory: /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf ファイルを使用するか、JBoss EAP サービスを起動し、CLI を使用してサーバーを設定できます。このスクリプトは bin ディレクトリーにあります。次に、設定を再読み込みします。
  • セキュリティー修正および機能強化を適用するには、yum -y update を定期的に実行する必要があります。
  • RHEL 6 で JBoss EAP を起動するには、以下のコマンドを実行します。

    $ service eap7-standalone start

    RHEL 7 で JBoss EAP を起動するには、以下のコマンドを実行します。

    $ systemctl start eap7-standalone
  • RHEL 6 で JBoss EAP を停止するには、以下のコマンドを実行します。

    $ service eap7-standalone stop

    RHEL 7 で JBoss EAP を停止するには、以下のコマンドを実行します。

    $ systemctl stop eap7-standalone
    注記

    Systemctl コマンドは、RHEL 7 にのみ関連します。

注記

JBoss EAP を別の IP アドレスにバインドする場合は、RHEL 7 の /etc/opt/rh/eap7/wildfly/eap7-standalone.conf ファイルに以下の行を追加します。内部 IP アドレスは EC2 によりパブリック IP アドレスに変換されます。

WILDFLY_BIND=$YOUR_PRIVATE_IP_ADDRESS

第4章 クラスター化していない管理対象ドメインの起動

4.1. インスタンスをドメインコントローラーとして提供するための起動

このトピックでは、プライベート AMI またはパブリック Marketplace のリストから作成された Red Hat Amazon Machine Image (AMI) でクラスター化されていない JBoss EAP 管理ドメインを起動する手順を示します。

前提条件

クラスター化されていない JBoss EAP インスタンスの起動

注記

sshec2-user ユーザーとして EC2 インスタンスに接続できます。管理者権限が必要な場合は、後で root ユーザーに変更できます。以下に例を示します。

$ ssh -l ec2-user ${INSTANCE_PUBLIC_IP}
...
$ sudo su -
  • Red Hat AMI インスタンスを起動します。

    JBoss EAP のクラスター化されていないインスタンスが Red Hat AMI で設定され、起動されている。

  • JBoss EAP を設定するには、サービスに引数を直接渡すことができます。この方法で処理できない引数もあります。サービス設定ファイルの場所は次のとおりです。

    • RHEL 6: /etc/sysconfig/eap7-domain
    • RHEL 7: /etc/opt/rh/eap7/wildfly/eap7-domain.conf

システムパスの詳細は、システムパス を参照してください。

Amazon EC2 の JBoss EAP サブシステムの詳細は、JBoss EAP サブシステムを Cloud Platform で機能するように設定する を参照してください。

注記
  • 複雑な設定の場合は、JBoss EAP bin directory: /opt/rh/eap7/root/usr/share/wildfly/bin/domain.conf ファイルを使用するか、JBoss EAP サービスを起動し、管理 CLI を使用してサーバーを設定できます。このスクリプトは bin ディレクトリーにあります。次に、設定を再読み込みします。
  • セキュリティー修正および機能強化を適用するには、yum -y update を定期的に実行する必要があります。
  • RHEL 6 で JBoss EAP を起動するには、以下のコマンドを実行します。

    $ service eap7-domain start

    RHEL 7 で JBoss EAP を起動するには、以下のコマンドを実行します。

    $ systemctl start eap7-domain
  • RHEL 6 で JBoss EAP を停止するには、以下のコマンドを実行します。

    $ service eap7-domain stop

    RHEL 7 で JBoss EAP を停止するには、以下のコマンドを実行します。

    $ systemctl stop eap7-domain
    注記

    Systemctl コマンドは、RHEL 7 にのみ関連します。

注記

JBoss EAP を別の IP アドレスにバインドする場合は、RHEL 7 の /etc/opt/rh/eap7/wildfly/eap7-domain.conf ファイルに以下の行を追加します。内部 IP アドレスは EC2 によりパブリック IP アドレスに変換されます。

WILDFLY_BIND=$YOUR_PRIVATE_IP_ADDRESS

4.2. 1 以上のインスタンスを起動し、ホストコントローラーとして提供

このトピックでは、JBoss EAP の 1 つ以上のインスタンスを起動して、プライベート AMI またはパブリック Marketplace のリストから作成された Red Hat AMI でクラスター化されていないホストコントローラーとして機能する手順を示します。

クラスター化されていないドメインコントローラーを設定して起動します。インスタンスをドメインコントローラーとして提供するための起動 を参照してください。

システムパスの詳細は、システムパス を参照してください。

Amazon EC2 の JBoss EAP サブシステムの詳細は、JBoss EAP サブシステムを Cloud Platform で機能するように設定する を参照してください。

ドメインコントローラーインスタンスの場合

Amazon EC2 で実行している管理対象ドメインでは、静的ドメインコントローラーの検出の他に、ホストコントローラーは Amazon Simple Storage (Amazon S3) システムを使用してドメインコントローラーを動的に検出できます。特に、ホストコントローラーとドメインコントローラーは、Amazon S3 バケットにアクセスするために必要な情報で設定できます。

この設定を使用すると、ドメインコントローラーが起動したときに、その通信情報がバケットの S3 ファイルに書き込まれます。ホストコントローラーがドメインコントローラーとの通信を試行するたびに、S3 ファイルからドメインコントローラーの通信情報を取得します。

たとえば、Amazon EC2 インスタンスの IP アドレスが停止および起動すると変更するのが一般的です。このシナリオでは、ドメインコントローラーの通信情報が変更された場合に、ホストコントローラーを再設定する必要はありません。ホストコントローラーは、S3 ファイルからドメインコントローラーの新しい通信情報を取得できます。

ユーザーデータのサンプルスクリプトの詳細は、Example User Data for Clustered JBoss EAP Instances を参照してください。

手動によるドメインコントローラーの検出設定は、以下のプロパティーを使用して指定します。

  • access-key: Amazon AWS ユーザーアカウントのアクセスキー。
  • secret-access-key: Amazon AWS ユーザーアカウントのシークレットアクセスキー。
  • location: 使用する Amazon S3 バケット。

    1. domain-ec2.xml ファイルを /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs から JBoss EAP 設定ディレクトリーにコピーします。
    2. 以下の変数を適切なサービス設定ファイルに設定します。

      WILDFLY_SERVER_CONFIG=domain-ec2.xml
      WILDFLY_HOST_CONFIG=host-master.xml
    3. S3 ドメインコントローラー検出設定を domain-ec2.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>

第5章 クラスター化された JBoss EAP の起動

5.1. クラスター化された JBoss EAP AMI の起動 (mod_cluster および VPC なし)

このトピックでは、mod_cluster および VPC なしでクラスター化された JBoss EAP AMI を起動する手順について説明します。

注記
  • イメージで提供される設定スクリプトサンプルを使用できます。

システムパスの詳細は、システムパス を参照してください。

Amazon EC2 の JBoss EAP サブシステムの詳細は、JBoss EAP サブシステムを Cloud Platform で機能するように設定する を参照してください。

クラスター化された JBoss EAP AMI をスタンドアロンサーバーインスタンスで開始するには、事前設定された S3_PING JGroups スタックが含まれる /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml ファイルのサンプルを使用できます。詳細は、Reliable group communication with JGroups ドキュメントの S3_PING を参照してください。この standalone-ec2-ha.xml プロファイルファイルは、/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/ から JBoss EAP 設定ディレクトリー /opt/rh/eap7/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/eap7/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"

サンプルアプリケーション: /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war をデプロイして、/opt/rh/eap7/root/usr/share/wildfly/standalone/log/server.log でログを確認し、JBoss EAP サーバーがクラスターを作成していることを確認できます。

ドメインコントローラーインスタンスの場合

  1. domain-ec2.xml ファイルを /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs から JBoss EAP 設定ディレクトリーにコピーします。
  2. 以下の変数を適切なサービス設定ファイルに設定します。

    WILDFLY_SERVER_CONFIG=domain-ec2.xml
    WILDFLY_HOST_CONFIG=host-master.xml
  3. 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>
  4. ユーザーを設定し、ユーザーのシークレット値をホストコントローラーインスタンスに追加します。詳細は、設定ガイド 2 台のマシンで管理対象ドメインを作成 を参照してください。

ホストコントローラーインスタンスの場合

  1. 以下の変数を適切なサービス設定ファイルに設定します。

    WILDFLY_HOST_CONFIG=host-slave.xml
  2. 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 インスタンスを正常にシャットダウンして、アすることが推奨されます。

スケールダウンの手順をテストしても、ユーザーエクスペリエンスに悪影響が及ぶことはありません。特定のワークロード、ロードバランサー、および設定には、追加の対策が必要になる場合があります。

5.2. クラスター化された JBoss EAP AMI の起動 (mod_cluster および VPC を使用)

このトピックでは、Apache HTTP サーバーインスタンスを起動して mod_cluster プロキシーとして機能し、Virtual Private Cloud (VPC) の NAT インスタンスとして機能する手順について説明します。

システムパスの詳細は、システムパス を参照してください。

Amazon EC2 の JBoss EAP サブシステムの詳細は、JBoss EAP サブシステムを Cloud Platform で機能するように設定する を参照してください。

注記
  • イメージで提供される設定スクリプトサンプルを使用できます。

Amazon Virtual Private Cloud (Amazon VPC) は、プライベートネットワークで AWS リソースのセットを分離できるようにする Amazon Web Services (AWS) の機能です。このプライベートネットワークのトポロジーおよび設定は、ニーズに合わせてカスタマイズできます。

Amazon VPC の詳細は、Amazon Virtual Private Cloud を参照してください。

注記

VPC 内で mod_cluster ロードバランサーを使用してクラスターを起動すると、JBoss EAP サーバーはパブリックにアクセスできなくなります。mod_cluster ロードバランサーは、インターネットに接続されるエンドポイントのみにすることができます。

ドメインコントローラーインスタンスの設定は、Launch an Instance to Serve as a Domain Controller を参照してください。

ホストコントローラーインスタンスの設定は、1 以上のインスタンスを起動し、ホストコントローラーとして提供 を参照してください。

S3 ドメインコントローラーの検出に関する情報は、1 以上のインスタンスを起動し、ホストコントローラーとして提供 を参照してください。

5.2.1. VPC および mod_cluster を使用してクラスター化された AMI を起動する

注記

VPC の設定は任意です。詳細は、Amazon VPC ユーザーガイドの Detecting Your Supported Platforms and Whether You Have a Default VPC セクションを参照してください。

  1. Jbcs-httpd24-mod_cluster-native パッケージとそのすべての依存関係をインストールします。mod_cluster 設定ファイルは /opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/mod_cluster.conf にインストールされています。

Red Hat JBoss Core Services Apache HTTP Server のインストールの詳細は、Apache HTTP Server Installation Guide を参照してください。

  1. mod_cluster のアドバタイズの無効化以下を /opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/mod_cluster.conf 設定ファイルの VirtualHost に追加します。

    ServerAdvertise Off
    EnableMCPMReceive
    # AdvertiseFrequency # comment out AdvertiseFrequency if present
  2. SELinux のポートを許可します。必要に応じて iptables を設定します。ポートは、semanage port -a -t http_port_t -p tcp $PORT_NR コマンドを使用して SELinux で許可できます。
  3. mod_cluster がリッスンするアドレスで mod_cluster プロキシーを検索するよう JBoss EAP を設定します。

    注記

    /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml 設定ファイルのサンプルが提供されます。modcluster サブシステムで proxies の一覧を設定する必要があります。

    以下の方法のいずれかを使用して proxies のリストを定義できます。

    • mod-cluster-proxy1 という outbound-socket-binding を適切なホストとポートで定義します。

      <outbound-socket-binding name="mod-cluster-proxy1">
          <remote-destination host="${jboss.modcluster.proxy1.host}" port="${jboss.modcluster.proxy1.port}"/>
      </outbound-socket-binding>
    • modclusterproxies 属性を適切なホストとポートで mod-cluster-proxy1 に設定します。

      /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=mod-cluster-proxy1:add(host={${jboss.modcluster.proxy1.host}}, port={${jboss.modcluster.proxy1.port}})

第6章 トラブルシューティング

6.1. Amazon EC2 のトラブルシューティングについて

EC2 は、インスタンスごとに Alarm Status を提供します。これは、致命的なインスタンスの誤動作を示します。ただし、このような警告がなくても、インスタンスが正しく起動し、サービスが正しく実行されていることが保証されるわけではありません。Amazon CloudWatch をカスタムメトリクス機能とともに使用すると、インスタンスサービスの健全性を監視することができますが、エンタープライズ管理ソリューションを使用することが推奨されます。

6.2. 診断情報

JBoss Operations Network、Amazon CloudWatch、または手動の検査によって問題が検出された場合、診断情報の一般的なソースは以下のようになります。

  • /var/log には、マシンの起動、JBoss EAP、httpd およびその他のサービスから収集されたすべてのログも含まれます。

JBoss EAP ログファイルは /opt/rh/eap7/root/usr/share/wildfly/ にあります。

これらのファイルへのアクセスは、SSH セッションのみで可能です。

Amazon EC2 を使用して SSD セッションを設定して確立する詳細は、Getting Started with Amazon EC2 Linux Instances を参照してください。

付録A リファレンス資料

A.1. Red Hat Cloud Access プログラム用の Amazon EC2 AMI

AMI は、Red Hat Enterprise Linux イメージでの JBoss EAP + JDK の基本的な RPM インストールで、Amazon EC2 の設定例がある可能性があります。高度なスクリプトは利用できなくなりましたが、通常の bash スクリプトは使用できます。

プラットフォーム/JDK の組み合わせの AMI:

  • RHEL 6 + Open JDK 8 (1 イメージ)
  • RHEL 7 + Open JDK 8 (1 イメージ)
注記

どちらのプラットフォームも 64 ビットアーキテクチャーである必要があります。

AMI のメンテナンス

EC2 に z リリース (パッチ) を適用するには、yum update を定期的に実行する必要があります。Y リリース (マイナーリリース) の新しい AMI は、Red Hat から提供されます。

シナリオ 1 (サポートあり)

  1. EC2 にサインアップします。
  2. Red Hat Cloud Access にサインアップします。
  3. 利用可能な AMI の一覧から Red Hat AMI を選択します。
  4. (オプション) ユーザースクリプトまたは ssh で JBoss EAP 設定をカスタマイズします。
  5. メンテナンス:y リリースの新しい AMI z リリース用の yum update

A.2. 設定ファイルおよびデプロイメントの例

以下のパッケージでは、RHEL 7 AMI バージョンのデプロイメント例が追加されます。

$ rpm -ql eap7-jboss-ec2-eap-samples
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/hello.war
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/jboss-as-helloworld-mdb-7.0.0.ER5-redhat-1.war

JBoss EAP 設定ファイルのサンプルには、EC2 全体でクラスターを作成するのに使用できる S3_PING プロトコル用にセットアップされた JGroups スタックが含まれます。設定ファイルのサンプルの正確な場所は、System Paths を参照してください。

マルチキャストは EC2 で無効になっているため、両方の設定ファイルには、アドバタイズの代わりにプロキシー mod_cluster 検出を使用するための modcluster サブシステムが含まれます。

A.3. システムパス

サービス設定ファイル:

  • RHEL 6: /etc/sysconfig/*
  • RHEL 7: /etc/opt/rh/eap7/wildfly/*

JBoss EAP Home:

  • /opt/rh/eap7/root/usr/share/wildfly/

JBoss EAP 設定の場所:

スタンドアロンインスタンス
  • /opt/rh/eap7/root/usr/share/wildfly/standalone/configuration
  • /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf
管理対象ドメイン
  • /opt/rh/eap7/root/usr/share/wildfly/bin/domain.conf
  • /opt/rh/eap7/root/usr/share/wildfly/domain/configuration

JBoss EAP の設定場所の例:

  • /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml
  • /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-full-ha.xml

A.4. スクリプトを使用した Amazon EC2 での JBoss EAP の起動

以下のサンプルスクリプトを使用して、Amazon EC2 で JBoss EAP インスタンスを起動すると、パブリック IP アドレスにバインドされる JBoss EAP を開始できます。

#!/bin/bash

# platform dependent variables
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-standalone.conf
    START_COMMAND="systemctl start eap7-standalone"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-standalone
    START_COMMAND="service eap7-standalone start"
fi

# set up addresses
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`
echo "JAVA_OPTS=\"$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf

# start EAP
$START_COMMAND

A.5. JBoss EAP サブシステムを Cloud Platform で機能するように設定する

Amazon EC2 や Microsoft Azure などのクラウドプラットフォームで適切に動作するように、一部の JBoss EAP サブシステムを設定する必要があります。これは、JBoss EAP サーバーは通常、クラウドプラットフォームからのみ確認可能な 10.x.x.x などのクラウド仮想マシンのプライベート IP アドレスにバインドされているために必要です。特定のサブシステムでは、このアドレスをサーバーのパブリック IP アドレスにマッピングする必要もあります。これは、クラウド外から見えるものです。

A.5.1. Web サービス

クライアントが Service.create(SELECTURL, serviceName) を使用して Web サービスリクエストを行うと、ユーザーはサーバーのパブリック IP アドレスに接続しますが、その後、webservices サブシステムのサーバー設定ファイルに定義されたアドレスにリダイレクトされます。デフォルトでは、このアドレスは ${jboss.bind.address:127.0.0.1} です。つまり、クラウドプラットフォームでは呼び出し元はサーバーのプライベート IP アドレスにリダイレクトされ、要求を解決できません。サーバーのパブリック IP アドレスは、以下のコマンドを使用して ogg-host 要素で設定する必要があります。

/subsystem=webservices:write-attribute(name=wsdl-host,value=PUBLIC_IP_ADDRESS)

A.5.2. Messaging

クラウドプラットフォームでメッセージングを使用する場合は、クライアントが使用する接続ファクトリーには、サーバーのパブリック IP アドレスを指すコネクターが必要です。

そのため、完全な プロファイルを実行している JBoss EAP サーバーに対して新しいコネクターとソケットバインディングを作成する必要があります。

  1. 参照される http-public ソケットバインディングは socket-binding-group 内に作成する必要があります。

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=http-public:add(host=PUBLIC_IP_ADDRESS,port=${jboss.http.port:8080})
  2. messaging サブシステムに新しい http-connector 要素を作成します。

    /subsystem=messaging-activemq/server=default/http-connector=http-public-connector:add(endpoint=http-acceptor, socket-binding=http-public)
  3. connection-factoryconnectors を設定します。これは、クライアントによって使用されます。たとえば、デフォルトの接続としての RemoteConnectionFactory の設定は以下のようになります。

    /subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:write-attribute(name=connectors, value=["http-public-connector"]

A.5.3. 高可用性のリモーティング設定

クラウドプラットフォーム上のクラスター化された Jakarta Enterprise Beans で JBoss EAP HA 機能を使用している場合は、Jakarta Enterprise Beans クライアントがクラスタービューの更新を受け取るために remoting サブシステムに追加の設定が必要になります。

これは remoting サブシステムのソケットバインディングに client-mappings を設定して行います。

/socket-binding-group=standard-sockets/socket-binding=http:write-attribute(name=client-mappings,value=[{ "destination-address" => "PUBLIC_IP_ADDRESS", "destination-port" => "8080" }])

A.6. クラスター化された JBoss EAP インスタンスのユーザーデータの例

以下の例は、いくつかの異なるサーバー設定用に設定されたユーザーデータを示しています。

例: RHEL6/7 でのスタンドアロンモードのファイル

#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a standalone instance using the ec2-ha profile
# This file is for RHEL 6/7, standalone mode only
### This script makes use of the following four Bash variables for clustering setup,
### be sure to add in your own values for these variables here when copy/pasting this
### script into the EC2 user data field

ACCESS_KEY_ID=<your AWS access key>
SECRET_ACCESS_KEY=<your AWS secret access key>
S3_PING_BUCKET=<your bucket name>
NODE_NAME=<your node name>

#### No further modifications should be needed below to run this example ####
# Set the location of JBoss EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly

# Set the internal IP address of this EC2 instance which is mapped to a public address
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`

# Set the location of the standalone.conf file and set the command used to start EAP in standalone mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-standalone.conf
    START_COMMAND="systemctl start eap7-standalone"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-standalone
    START_COMMAND="service eap7-standalone start"
fi

# Configure JBoss EAP to use the ec2-ha profile
cp /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml $JBOSS_HOME/standalone/configuration/standalone-ec2-ha.xml
echo "WILDFLY_SERVER_CONFIG=standalone-ec2-ha.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET' -Djboss.jvmRoute=$NODE_NAME\"" >> $JBOSS_HOME/bin/standalone.conf
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/standalone.conf

# Deploy the sample application from the local filesystem
cp /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war $JBOSS_HOME/standalone/deployments/

# Start JBoss EAP, note that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.

$START_COMMAND

例: クラスター化されたドメインコントローラーを起動するファイル

#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a domain controller with clustering enabled
# This file is for RHEL 6/7, domain controller, domain mode only
### This script makes use of the following Bash variables for clustering and domain
### controller discovery setup, be sure to add in your own values for these variables here
### when copy/pasting this script into the EC2 user data field

ACCESS_KEY_ID=<your access key id>
SECRET_ACCESS_KEY=<your secret access key>
S3_PING_BUCKET=<your s3 ping bucket>

#### No further modifications should be needed below to run this example ####
# Set the location of JBoss EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly
CONF_FILE=/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/domain-ec2.xml

# Set the internal IP address of this EC2 instance which is mapped to a public address

INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`



# Set the location of the domain.conf file and set the command used to start EAP in domain mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-domain.conf
    START_COMMAND="systemctl start eap7-domain"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-domain
    START_COMMAND="service eap7-domain start"
fi

# Configure JBoss EAP to use the domain-ec2.xml and host-master.xml configuration files
cp ${CONF_FILE} $JBOSS_HOME/domain/configuration/domain-ec2.xml

echo "WILDFLY_SERVER_CONFIG=domain-ec2.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_HOST_CONFIG=host-master.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET'\"" >> $JBOSS_HOME/bin/domain.conf

echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/domain.conf

echo 'HOST_CONTROLLER_JAVA_OPTS="$HOST_CONTROLLER_JAVA_OPTS $JAVA_OPTS"' >> $JBOSS_HOME/bin/domain.conf

# Add a management user with the following credentials:
# User name: admin
# Password: secret_Passw0rd
$JBOSS_HOME/bin/add-user.sh -u admin -p secret_Passw0rd -e -g Management

# Update the main-server-group in domain-ec2.xml to use the ec2-ha profile
$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --domain-config=domain-ec2.xml, /server-group=main-server-group:write-attribute(name=profile, value=ha)"

# Need to modify permissions since this script is executed as the root user
chgrp jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chgrp jboss $JBOSS_HOME/domain/log/audit.log
chgrp jboss $JBOSS_HOME/domain/log/host-controller.log
chown jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chown jboss $JBOSS_HOME/domain/log/audit.log
chown jboss $JBOSS_HOME/domain/log/host-controller.log

# Configure S3 domain controller discovery
yum install patch -y
cd $JBOSS_HOME/domain/configuration
echo "--- host-master.xml	2016-03-18 17:34:26.000000000 -0400
+++ host-master2.xml	2016-04-11 08:28:02.771000191 -0400
@@ -54,7 +54,15 @@
         </management-interfaces>
     </management>
     <domain-controller>
-        <local/>
+<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=\"$ACCESS_KEY_ID\"/>
+            <property name=\"secret-access-key\" value=\"$SECRET_ACCESS_KEY\"/>
+            <property name=\"location\" value=\"$S3_PING_BUCKET\"/>
+        </discovery-option>
+    </discovery-options>
+</local>
     </domain-controller>
     <interfaces>
         <interface name=\"management\">
" | patch host-master.xml

cd -

# Start JBoss EAP, do not forget that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.

$START_COMMAND
sleep 20
# Set up EC2 HA socket bindings for main server group
$JBOSS_HOME/bin/jboss-cli.sh -c --controller=$INTERNAL_IP_ADDRESS:9990 --timeout=120000 --command='/server-group=main-server-group:write-attribute(name=socket-binding-group,value=ha-sockets)'

# Deploy the sample application from the local filesystem to the main-server-group
$JBOSS_HOME/bin/jboss-cli.sh -c --controller=$INTERNAL_IP_ADDRESS:9990 --timeout=120000 --command='deploy /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war --server-groups=main-server-group'

例: クラスター化されたドメインコントローラーを起動するファイル

#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a host controller with clustering enabled
# This file is for RHEL 6/7, host controller, domain mode only
### This script makes use of the following Bash variables for clustering and domain
### controller discovery setup, be sure to add in your own values for these variables here
### when copy/pasting this script into the EC2 user data field

ACCESS_KEY_ID=<your access key id>
SECRET_ACCESS_KEY=<your secret access key>
S3_PING_BUCKET=<your s3 ping bucket>

#### No further modifications should be needed below to run this example ####
# Set the location of EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly

# Set the internal IP address of this EC2 instance which is mapped to a public address
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`

# Set the location of the domain.conf file and set the command used to start EAP in domain mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-domain.conf
    START_COMMAND="systemctl start eap7-domain"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-domain
    START_COMMAND="service eap7-domain start"
fi

# Configure variables needed by JBoss EAP
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "WILDFLY_HOST_CONFIG=host-slave.xml" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET'\"" >> $JBOSS_HOME/bin/domain.conf
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/domain.conf
echo 'HOST_CONTROLLER_JAVA_OPTS="$HOST_CONTROLLER_JAVA_OPTS $JAVA_OPTS"' >> $JBOSS_HOME/bin/domain.conf

# Configure S3 domain controller discovery
yum install patch -y
cd $JBOSS_HOME/domain/configuration

echo "--- host-slave.xml.orig	2016-06-07 09:55:27.183390617 +0200
+++ host-slave.xml	2016-06-07 09:56:52.540170784 +0200
@@ -57,7 +57,11 @@
     <domain-controller>
         <remote security-realm=\"ManagementRealm\">
             <discovery-options>
-                <static-discovery name=\"primary\" protocol=\"\${jboss.domain.master.protocol:remote}\" host=\"\${jboss.domain.master.address}\" port=\"\${jboss.domain.master.port:9990}\"/>
+                <discovery-option name=\"s3-discovery\" module=\"org.jboss.as.host-controller\" code=\"org.jboss.as.host.controller.discovery.S3Discovery\">
+                    <property name=\"access-key\" value=\"$ACCESS_KEY_ID\"/>
+                    <property name=\"secret-access-key\" value=\"$SECRET_ACCESS_KEY\"/>
+                    <property name=\"location\" value=\"$S3_PING_BUCKET\"/>
+                </discovery-option>
             </discovery-options>
         </remote>
     </domain-controller>
" | patch host-slave.xml

sed -i 's/<!--.*-->//g' host-slave.xml # remove nasty '!' signs which break bash
sed -i '/^[ ]*$/d' host-slave.xml # remove nasty lines with ' ' whitespaces which break the patch

EAP_HOST_NAME=`$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --host-config=host-slave.xml, :read-resource" | grep \"host\" | cut -d\" -f4`
$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --host-config=host-slave.xml, /host=$EAP_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:write-attribute(name=value,value=c2VjcmV0X1Bhc3N3MHJk)"

sed -i 's/<host xmlns="urn:jboss:domain:8.0">/<host xmlns="urn:jboss:domain:8.0" name="admin">/' host-slave.xml
sed -i 's/other-server-group/main-server-group/' host-slave.xml

cd -

# Need to modify permissions since this script is executed as the root user
chgrp jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chgrp jboss $JBOSS_HOME/domain/log/audit.log
chgrp jboss $JBOSS_HOME/domain/log/host-controller.log
chown jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chown jboss $JBOSS_HOME/domain/log/audit.log
chown jboss $JBOSS_HOME/domain/log/host-controller.log

# Start JBoss EAP, do not forget that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.
$START_COMMAND





改訂日時: 2024-02-08

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.