第8章 ドメイン管理

本項では、管理対象ドメインの操作モードに固有する概念や設定について説明します。

管理対象ドメインのセキュア化については、JBoss EAP『How to Configure Server Security』の「Securing a Managed Domain」の項を参照してください。

8.1. 管理対象ドメイン

管理対象ドメインの操作モードを使用すると、単一の制御ポイントから複数の JBoss EAP インスタンスを管理できます。

一元管理された複数の JBoss EAP サーバーは、ドメインのメンバーと呼ばれます。ドメインの JBoss EAP インスタンスは共通の管理ポリシーを共有します。

各ドメインは 1 つのドメインコントローラー、1 つ以上のホストコントローラー、およびホスト毎に 0 個以上のサーバーグループによって構成されます。

A managed domain.

ドメインコントローラーは、ドメインが制御される中心点であり、各サーバーはドメインの管理ポリシーに従って設定されます。ドメインコントローラーはホストコントローラーでもあります。

ホストコントローラーはドメインコントローラーと対話して、ホスト上で実行されているアプリケーションサーバーインスタンスのライフサイクルを制御し、ドメインコントローラーがこれらのインスタンスを管理できるようにします。各ホストに複数のサーバーグループが含まれるようにすることが可能です。

サーバーグループは、JBoss EAP がインストールされているサーバーインスタンスの集まりで、すべてが 1 つとして管理および設定されます。ドメインコントローラーはサーバーグループにデプロイされたアプリケーションとその設定を管理します。そのため、サーバーグループの各サーバーは同じ設定とデプロイメントを共有します。

ホストコントローラーは特定の物理または仮想ホストに割り当てられます。異なる設定を使用する場合は、同じハードウェア上で複数のホストコントローラーを実行でき、ポートとその他のリソースが競合しないようにします。1 つのドメインコントローラー、1 つのホストコントローラー、および複数のサーバーを、同じ物理システムの同じ JBoss EAP インスタンス内で実行することができます。

8.1.1. ドメインコントローラー

ドメインコントローラーは、ドメインの集中管理点として動作する JBoss EAP サーバーインスタンスです。1 つのホストコントローラーインスタンスがドメインコントローラーとして動作するよう設定されます。

ドメインコントローラーの主な役割は次のとおりです。

  • ドメインの集中管理ポリシーを維持する。
  • すべてのホストコントローラーが現在のコンテンツを認識するようにする。
  • 実行中のすべての JBoss EAP サーバーインスタンスがこのポリシーに従って設定されるよう、ホストコントローラーをサポートする。

デフォルトでは、集中管理ポリシーは EAP_HOME/domain/configuration/domain.xml ファイルに格納されます。このファイルは、ドメインコントローラーとして実行するよう設定されたホストコントローラーのこのディレクトリーに必要です。

domain.xml ファイルには、ドメインのサーバーに適用できるプロファイル設定が含まれています。プロファイルには、そのプロファイルで使用できるさまざまなサブシステムの詳細設定が含まれています。ドメイン設定には、ソケットグループの定義とサーバーグループの定義も含まれます。

注記

JBoss EAP 7 ドメインコントローラーは、JBoss EAP 6.2 以上を実行している JBoss EAP 6 ホストおよびサーバーを管理できます。詳細は、「JBoss EAP 6 インスタンスを管理するよう JBoss EAP 7.x ドメインコントローラーを設定」を参照してください

詳細は「管理対象ドメインの起動」および「ドメインコントローラーの設定」の項を参照してください。

8.1.2. ホストコントローラー

ホストコントローラーの主な役割はサーバーを管理することです。ドメイン管理タスクを委譲し、ホスト上で実行される個別のアプリケーションサーバープロセスを開始および停止します。

ホストコントローラーはドメインコントローラーと対話し、サーバーとドメインコントローラー間の通信を管理できるようにします。ドメインの複数のホストコントローラーは 1 つのドメインコントローラーのみと対話できます。そのため、単一のドメインモード上で実行されるホストコントローラーおよびサーバーインスタンスはすべて単一のドメインコントローラーを持ち、同じドメインに属する必要があります。

デフォルトでは、各ホストコントローラーは、ホストのファイルシステムの未展開の JBoss EAP インストールファイルにある EAP_HOME/domain/configuration/host.xml ファイルから設定を読み取ります。host.xml ファイルには、特定のホストに固有する以下の設定情報が含まれています。

  • このインストールから実行されるサーバーインスタンスの名前。
  • ローカルの物理インストールに固有する設定。たとえば、domain.xml に宣言された名前付きインターフェースの定義は host.xml にある実際のマシン固有の IP アドレスへマップできます。さらに、domain.xml の抽象パス名を host.xml のファイルシステムパスへマップできます。
  • 次の設定のいずれか。

    • ホストコントローラーがドメインコントローラーへ通知して、ホストコントローラー自体を登録し、ドメイン設定へアクセスする方法。
    • リモートドメインコントローラーの検索および通知方法。
    • ホストコントローラーがドメインコントローラーとして動作するかどうか。

詳細は「管理対象ドメインの起動」および「ホストコントローラーの設定」の項を参照してください。

8.1.3. プロセスコントローラー

プロセスコントローラーは小型のライトウェイトなプロセスで、ホストコントローラープロセスを起動し、そのライフサイクルを監視します。ホストコントローラーがクラッシュすると、プロセスコントローラーによって再起動されます。さらに、ホストコントローラーの指示に従ってサーバープロセスを開始しますが、クラッシュしたサーバープロセスは自動的に再起動しません。

プロセスコントローラーのログは EAP_HOME/domain/log/process-controller.log ファイルに記録されます。プロセスコントローラーの JVM オプションは、PROCESS_CONTROLLER_JAVA_OPTS 変数を使用して EAP_HOME/bin/domain.conf ファイルに設定します。

8.1.4. サーバーグループ

サーバーグループとは、1 つのグループとして管理および設定される複数のサーバーインスタンスのことです。管理対象ドメインでは、各アプリケーションサーバーインスタンスは唯一のメンバーである場合でも 1 つのサーバーグループに属します。グループのサーバーインスタンスは同じプロファイル設定とデプロイされたコンテンツを共有します。

ドメインコントローラーとホストコントローラーは、ドメインにある各サーバーグループのすべてのインスタンスに標準設定を強制します。

ドメインを複数のサーバーグループで構成できます。異なるサーバーグループを異なるプロファイルやデプロイメントで設定できます。たとえば、ドメインは異なるサービスを提供する異なるサーバー層で設定できます。

異なるサーバーグループが同じプロファイルやデプロイメントを持つこともできます。これにより、最初のサーバーグループでアプリケーションがアップグレードされた後に 2 つ目のサーバーグループでアプリケーションがアップデートされるアプリケーションのローリングアップグレードが可能になり、サービスの完全停止を防ぎます。

詳細は、「サーバーグループの設定」の項を参照してください。

8.1.5. サーバー

サーバーはアプリケーションサーバーインスタンスを表します。管理対象ドメインでは、すべてのサーバーインスタンスがサーバーグループのメンバーになります。ホストコントローラーは各サーバーインスタンスを独自の JVM プロセスで起動します。

詳細は「サーバーの設定」の項を参照してください。

8.3. 管理対象ドメインの起動

8.3.1. 管理対象ドメインの起動

ドメインおよびホストコントローラーは、JBoss EAP に同梱される domain.sh または domain.bat スクリプトを使用して起動できます。使用できる起動スクリプトの引数の完全リストとそれら引数の目的については、--help 引数を使用するか、「サーバーランタイム引数」を参照してください。

ドメイン内のサーバーグループのスレーブサーバーを起動する前にドメインコントローラーを起動する必要があります。最初にドメインコントローラーを起動した後、ドメイン内の関連する他のホストコントローラーを起動します。

ドメインコントローラーの起動

専用のドメインコントローラー向けに事前設定された host-master.xml 設定ファイルを使用してドメインコントローラーを起動します。

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml

ドメインの設定に応じて、ホストコントローラーの接続を可能にするために設定を追加する必要があります。また、以下のドメイン設定例を参照してください。

ホストコントローラーの起動

スレーブホストコントローラー向けに事前設定された host-slave.xml 設定ファイルを使用してホストコントローラーを起動します。

$ EAP_HOME/bin/domain.sh  --host-config=host-slave.xml

ドメインの設定に応じて、ドメインコントローラーへ接続し、ドメインコントローラーとの競合を回避するために設定を追加する必要があります。また、以下のドメイン設定例を参照してください。

8.3.2. ドメインコントローラーの設定

重要

RPM インストールで JBoss EAP をインストールした場合、複数のドメインまたはホストコントローラーを同じマシン上に設定することはサポートされません。

ドメインコントローラーとして動作するホストの設定

<domain-controller> 宣言に <local/> 要素が含まれると、そのホストがドメインコントローラーとして指名されます。

<domain-controller>
  <local/>
</domain-controller>

ドメインコントローラーとして動作するホストは、ドメインの他のホストがアクセスできる管理インターフェースを公開する必要があります。HTTP(S) 管理インターフェースを公開する必要はありませんが、管理コンソールへのアクセスを可能にするため、HTTP(S) 管理インターフェースを公開することが推奨されます。

<management-interfaces>
  <native-interface security-realm="ManagementRealm">
    <socket interface="management" port="${jboss.management.native.port:9999}"/>
  </native-interface>
  <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
    <socket interface="management" port="${jboss.management.http.port:9990}"/>
  </http-interface>
</management-interfaces>

EAP_HOME/domain/configuration/host-master.xml ファイルには、ドメインコントローラーとして動作するための設定が事前設定されています。

8.3.3. ホストコントローラーの設定

重要

RPM インストールで JBoss EAP をインストールした場合、複数のドメインまたはホストコントローラーを同じマシン上に設定することはサポートされません。

ドメインコントローラーへの接続

ホストコントローラー自体をドメインに登録するため、ホストコントローラーがドメインコントローラーに接続する方法を指定する必要があります。これは <domain-controller> 要素に設定されます。

<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:9999}"/>
    </discovery-options>
  </remote>
</domain-controller>

EAP_HOME/domain/configuration/host-slave.xml ファイルには、ドメインコントローラーに接続するための設定が事前設定されています。ホストコントローラーの起動時に jboss.domain.master.address プロパティーを提供する必要があります。

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.master.address=IP_ADDRESS

ドメインコントローラーの検出に関する詳細は、「ドメインコントローラーの検出およびフェイルオーバー」の項を参照してください。

ドメインの設定によっては、認証を提供して、ホストコントローラーがドメインコントローラーによって認証されるようにする必要がある場合があります。管理ユーザーと秘密の値の生成や、その値を用いたホストコントローラー設定の更新に関する詳細は、「2 台のマシンで管理対象ドメインを設定」を参照してください。

8.3.3.1. ホスト名の設定

管理対象ドメインで実行されている各ホストには一意な名前を付ける必要があります。管理を容易にし、複数のホストで同じホスト設定ファイルを使用できるようにするために、以下の優先順位を用いてホスト名が決定されます。

  1. 設定されている場合、host.xml 設定ファイルのホスト要素名属性。
  2. jboss.host.name システムプロパティーの値。
  3. jboss.qualified.host.name システムプロパティーの最後のピリオド (.) の後に続く値。最後のピリオド (.) がない場合は全体の値。
  4. POSIX ベースのオペレーティングシステムでは、HOSTNAME 環境変数のピリオド (.) の後に続く値。Microsoft Windows では COMPUTERNAME 環境変数のピリオド (.) の後に続く値。最後のピリオドがない場合は、全体の値。

関連する host.xml 設定ファイルの上部にある host 要素に設定されたホストコントローラーの名前。例は次のとおり。

<host xmlns="urn:jboss:domain:5.0" name="host1">

以下の手順に従って、管理 CLI を使用してホスト名を更新します。

  1. JBoss EAP ホストコントローラーを起動します。

    $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
  2. 管理 CLI を起動し、ドメインコントローラーに接続します。

    $ EAP_HOME/bin/jboss-cli.sh --connect --controller=DOMAIN_CONTROLLER_IP_ADDRESS
  3. 以下のコマンドを実行して新しいホスト名を設定します。

    /host=EXISTING_HOST_NAME:write-attribute(name=name,value=NEW_HOST_NAME)

    これにより、host-slave.xml ファイルのホスト名属性が以下のように変更されます。

    <host name="NEW_HOST_NAME" xmlns="urn:jboss:domain:5.0">
  4. 変更を反映するためにホストコントローラーをリロードします。

    reload --host=EXISTING_HOST_NAME

ホストコントローラーの名前が設定ファイルに設定されていない場合は、起動時にホスト名を渡すこともできます。

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml  -Djboss.host.name=HOST_NAME

8.4. サーバーの管理

8.4.1. サーバーグループの設定

以下はサーバーグループ定義の例になります。

<server-group name="main-server-group" profile="full">
  <jvm name="default">
    <heap size="64m" max-size="512m"/>
  </jvm>
  <socket-binding-group ref="full-sockets"/>
  <deployments>
    <deployment name="test-application.war" runtime-name="test-application.war"/>
    <deployment name="helloworld.war" runtime-name="helloworld.war" enabled="false"/>
  </deployments>
</server-group>

サーバーグループの設定は、管理 CLI を使用するか、管理コンソールの Runtime タブから行います。

サーバーグループの追加

以下の管理 CLI コマンドを実行すると、サーバーグループを追加できます。

/server-group=SERVER_GROUP_NAME:add(profile=PROFILE_NAME,socket-binding-group=SOCKET_BINDING_GROUP_NAME)
サーバーグループの更新

以下の管理 CLI コマンドを実行すると、サーバーグループ属性を更新できます。

/server-group=SERVER_GROUP_NAME:write-attribute(name=ATTRIBUTE_NAME,value=VALUE)
サーバーグループの削除

以下の管理 CLI コマンドを実行すると、サーバーグループを削除できます。

/server-group=SERVER_GROUP_NAME:remove
サーバーグループ属性

サーバーグループには次の属性が必要です。

  • name: サーバーグループの名前。
  • profile: サーバーグループプロファイル名。
  • socket-binding-group: グループのサーバーに使用されるデフォルトのソケットバインディンググループ。サーバーごとに上書きできます。

サーバーグループに含まれる任意の属性は次のとおりです。

  • management-subsystem-endpoint: remoting サブシステムからエンドポイントを使用してサーバーグループに属するサーバーを再びホストコントローラーに接続するには true に設定します。これは、remoting サブシステムが存在しないと機能しません。
  • socket-binding-default-interface: このサーバーのソケットバインディンググループのデフォルトインターフェース。
  • socket-binding-port-offset: ソケットバインディンググループによって提供されたポート値に追加するデフォルトのオフセット。
  • deployments: グループのサーバーにデプロイするデプロイメントコンテンツ。
  • jvm: グループの全サーバーに対するデフォルトの JVM 設定。ホストコントローラーはこれらの設定を host.xml の他の設定とマージし、サーバーの JVM を開始するために使用される設定を作成します。
  • deployment-overlays: 定義されたデプロイメントオーバーレイと、このサーバーグループのデプロイメントとの間をリンクします。
  • system-properties: グループのサーバーに設定するシステムプロパティー。

8.4.2. サーバーの設定

デフォルトの host.xml 設定ファイルは 3 つのサーバーを定義します。

<servers>
  <server name="server-one" group="main-server-group">
  </server>
  <server name="server-two" group="main-server-group" auto-start="true">
    <socket-bindings port-offset="150"/>
  </server>
  <server name="server-three" group="other-server-group" auto-start="false">
    <socket-bindings port-offset="250"/>
  </server>
</servers>

server-one という名前のサーバーインスタンスは main-server-group に関連付けられ、そのサーバーグループによって指定されるサブシステム設定とソケットバインディングを継承します。server-two という名前のサーバーインスタンスも main-server-group に関連付けられていますが、server-one によって使用されるポートの値と競合しないようにソケットバインディングの port-offset の値も定義します。server-three という名前のサーバーインスタンスは other-server-group に関連付けられ、そのグループの設定を使用します。また、 port-offset の値も定義し、ホストコントローラーの起動時にこのサーバーが起動しないように auto-startfalse に設定します。

サーバーの設定は、管理 CLI を使用するか、管理コンソールの Runtime タブから行います。

サーバーの追加

以下の管理 CLI コマンドを実行すると、サーバーを追加できます。

/host=HOST_NAME/server-config=SERVER_NAME:add(group=SERVER_GROUP_NAME)
サーバーの更新

以下の管理 CLI コマンドを実行すると、サーバー属性を更新できます。

/host=HOST_NAME/server-config=SERVER_NAME:write-attribute(name=ATTRIBUTE_NAME,value=VALUE)
サーバーの削除

以下の管理 CLI コマンドを実行すると、サーバーを削除できます。

/host=HOST_NAME/server-config=SERVER_NAME:remove
サーバーの属性

サーバーには以下の属性が必要です。

  • name: サーバーの名前。
  • group: ドメインモデルからのサーバーグループの名前。

サーバーには以下の任意の属性が含まれます。

  • auto-start: ホストコントローラーの起動時にこのサーバーが起動されるかどうか。
  • socket-binding-group: このサーバーが属するソケットバインディンググループ。
  • socket-binding-port-offset: このサーバーのソケットバイディンググループによって提供されたポート値に追加されるオフセット。
  • update-auto-start-with-server-status: サーバーの状態で auto-start 属性を更新します。
  • interface: サーバーで使用できる完全に指定された名前付きのネットワークインターフェースのリスト。
  • jvm: このサーバーの JVM 設定。宣言されていない場合、設定は親のサーバーグループまたはホストから継承されます。
  • path: 名前付きのファイルシステムパスのリスト。
  • system-property: このサーバーに設定するシステムプロパティーのリスト。

8.4.3. サーバーの起動と停止

管理コンソールから起動、停止、リロードなどの操作をサーバーで実行するには、Runtime タブに移動して適切なホストまたはサーバーグループを選択します。

管理 CLI を使用してこれらの操作を実行する場合は以下のコマンドを参照してください。

サーバーの起動

特定のホストで 1 台のサーバーを起動できます。

/host=HOST_NAME/server-config=SERVER_NAME:start

指定のサーバーグループのサーバーをすべて起動できます。

/server-group=SERVER_GROUP_NAME:start-servers
サーバーの停止

特定のホストで 1 台のサーバーを停止できます。

/host=HOST_NAME/server-config=SERVER_NAME:stop

指定のサーバーグループのサーバーをすべて停止できます。

/server-group=SERVER_GROUP_NAME:stop-servers
サーバーのリロード

特定のホストで 1 台のサーバーをリロードできます。

/host=HOST_NAME/server-config=SERVER_NAME:reload

指定のサーバーグループのサーバーをすべてリロードできます。

/server-group=SERVER_GROUP_NAME:reload-servers

8.5. ドメインコントローラーの検出およびフェイルオーバー

管理対象ドメインの設定時、ドメインコントローラーに接続するために必要な情報を使用して各ホストコントローラーを設定する必要があります。JBoss EAP では、ドメインコントローラーを検索する 複数のオプション を使用して各ホストコントローラーを設定できます。ホストコントローラーは、適切なオプションが見つかるまでオプションのリストを繰り返し処理します。

プライマリードメインコントローラーに問題がある場合は、バックアップホストコントローラーを ドメインコントローラーに昇格できます。これにより、昇格後にホストコントローラーを新しいドメインコントローラーへ自動的にフェイルオーバーできます。

8.5.1. ドメイン検出オプションの設定

以下は、ドメインコントローラー検索の複数のオプションを持つホストコントローラーを設定する方法の例になります。

例: 複数のドメインコントローラーオプションを持つホストコントローラー

<domain-controller>
  <remote security-realm="ManagementRealm">
    <discovery-options>
      <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="172.16.81.100" port="${jboss.domain.master.port:9999}"/>
      <static-discovery name="backup" protocol="${jboss.domain.master.protocol:remote}" host="172.16.81.101" port="${jboss.domain.master.port:9999}"/>
    </discovery-options>
  </remote>
</domain-controller>

静的検出オプションには、以下の必須属性が含まれます。

name
このドメインコントローラー検出オプションの名前。
host
リモートドメインコントローラーのホスト名。
port
リモートドメインコントローラーのポート。

上記の例では、最初の検出オプションが指定されることが予想されます。2 つ目のオプションはフフェイルオーバーの状況で使用される可能性があります。

8.5.2. キャッシュされたドメイン設定を用いたホストコントローラーの起動

--cached-dc オプションを使用すると、ドメインコントローラーへ接続していなくてもホストコントローラーを起動できますが、ホストコントローラーは前もってドメインコントローラーからドメイン設定をローカルでキャッシュする必要があります。--cached-dc オプションを使用してホストコントローラーを起動すると、ドメインコントローラーからホストコントローラーのドメイン設定がキャッシュされます。

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml --cached-dc

これにより、このホストコントローラーがドメインコントローラーに接続せずに現在のサーバーを一時的に管理するために必要な情報が含まれる EAP_HOME/domain/configuration/ ディレクトリーに domain.cached-remote.xml ファイルが作成されます。

注記

デフォルトでは、--cached-dc オプションを使用すると、このホストコントローラーによって使用される設定のみがキャッシュされます。そのため、ドメイン全体のドメインコントローラーには昇格されません。ドメイン設定全体をキャッシュしてホストコントローラーをドメインコントローラーとする場合は、「ドメイン設定のキャッシュ」を参照してください。

--cached-dc を使用してこのホストコントローラーを起動したときにドメインコントローラーを利用できない場合、ホストコントローラーは domain.cached-remote.xml ファイルに保存されたキャッシュされた設定の使用を開始します。このファイルが存在しないとホストコントローラーは起動しないことに注意してください。

この状態の間、ホストコントローラーはドメイン設定を編集できませんが、サーバーを開始したり、デプロイメントを管理することはできます。

ホストコントローラーがキャッシュされた設定を使用して起動されると、ホストコントローラーは継続してドメインコントローラーへの再接続を試みます。ドメインコントローラーが使用できるようになると、ホストコントローラーは自動的にドメインコントローラーに再接続し、ドメイン設定を同期化します。変更された設定によっては、変更の反映のにホストコントローラーのリロードが必要になることがあります。この場合、警告がホストコントローラーのログに記録されます。

8.5.3. ホストコントローラーがドメインコントローラーとして動作するよう昇格

主要のドメインコントローラーに問題が発生した場合に、ホストコントローラーがドメインコントローラーとして動作するよう昇格できます。ホストコントローラーを 昇格 する前に、ドメインコントローラーから ドメイン設定をローカルでキャッシュする必要があります。

ドメイン設定のキャッシュ

ドメインコントローラーとして使用したいホストコントローラーに --backup オプションを使用します。

$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml --backup

これにより、ドメイン設定全体のコピーが含まれる EAP_HOME/domain/configuration/ ディレクトリーに domain.cached-remote.xml ファイルが作成されます。この設定は、ホストコントローラーがドメインコントローラーとして動作するよう再設定された場合に使用されます。

注記

ignore-unused-configuration 属性は、特定のホストがキャッシュする設定の範囲を判断するために使用されます。true を指定すると、このホストコントローラーに関係する設定のみがキャッシュされ、ドメインコントローラーとして引き継ぐことはできません。false を指定すると、ドメイン設定全体がキャッシュされます。

The --backup 引数はデフォルトでこの属性の値を false とし、ドメイン全体をキャッシュします。しかし、この属性を host.xml ファイルで設定した場合は、その値が使用されます。

また、--cached-dc オプションのみを使用して、ドメイン設定のコピーを作成できますが、host.xmlignore-unused-configuration の値を false と設定し、ドメイン全体をキャッシュする必要があります。例を以下に示します。

<domain-controller>
  <remote username="$local" security-realm="ManagementRealm" ignore-unused-configuration="false">
    <discovery-options>
      ...
    </discovery-options>
  </remote>
</domain-controller>
ホストコントローラーをドメインコントローラーに昇格
  1. 元のドメインコントローラーが停止した状態であることを確認します。
  2. 管理 CLI を使用して、新しいドメインコントローラーとなるホストコントローラーへ接続します。
  3. 以下のコマンドを実行してホストコントローラーを設定し、新しいドメインコントローラーとして動作するようにします。

    /host=HOST_NAME:write-local-domain-controller
  4. 以下のコマンドを実行し、ホストコントローラーをリロードします。

    reload --host=HOST_NAME

このホストコントローラーがドメインコントローラーとして動作するようになります。

8.6. 管理対象ドメインの設定

8.6.1. 1 台のマシンで管理対象ドメインを設定

jboss.domain.base.dir プロパティーを使用すると 1台のマシンで複数のホストコントローラーを実行できます。

重要

複数の JBoss EAP ホストコントローラーを 1 台のマシン上でシステムサービスとして設定することはサポートされません。

  1. ドメインコントローラーの EAP_HOME/domain ディレクトリーをコピーします。

    $ cp -r EAP_HOME/domain /path/to/domain1
  2. ホストコントローラーの EAP_HOME/domain ディレクトリーをコピーします。

    $ cp -r EAP_HOME/domain /path/to/host1
  3. /path/to/domain1 を使用してドメインコントローラーを起動します。

    $ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.domain.base.dir=/path/to/domain1
  4. /path/to/host1 を使用してホストコントローラーを起動します。

    $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.base.dir=/path/to/host1 -Djboss.domain.master.address=IP_ADDRESS -Djboss.management.native.port=PORT
    注記

    ホストコントローラーの起動時に、jboss.domain.master.address プロパティーを使用してドメインコントローラーのアドレスを指定する必要があります。

    さらに、このホストコントローラーはドメインコントローラーと同じマシンで実行されているため、ドメインコントローラーの管理インターフェースと競合しないように管理インターフェースを変更する必要があります。このコマンドは jboss.management.native.port プロパティーを設定します。

このように起動された各インスタンスは、ベースインストールディレクトリー (例: EAP_HOME/modules/) のその他のリソースを共有しますが、jboss.domain.base.dir によって指定されたディレクトリーからドメイン設定を使用します。

8.6.2. 2 台のマシンで管理対象ドメインを設定

注記

この例の実行には、ファイアウォールの設定が必要になることがあります。

1 台がドメインコントローラーでもう 1 台がホストである 2 台のマシンで管理対象ドメインを作成できます。詳細は、「ドメインコントローラー」を参照してください。

  • IP1 = ドメインコントローラーの IP アドレス(マシン 1)
  • IP2 = ホストの IP アドレス (マシン 2)
2 台のマシンで管理対象ドメインを作成
  1. マシン 1 での作業

    1. ホストがドメインコントローラーによって認証されるよう、管理ユーザーを追加します。

      add-user.sh スクリプトを使用してホストコントローラー HOST_NAME の管理ユーザーを追加します。最後の質問で yes を指定し、提供される秘密の値を書き留めてください。この秘密の値はホストコントローラーの設定で使用され、以下のように表示されます。

      <secret value="SECRET_VALUE" />
    2. ドメインコントローラーを起動します。

      専用のドメインコントローラー用に事前設定された host-master.xml 設定ファイルを指定します。さらに、jboss.bind.address.management プロパティーを設定し、ドメインコントローラーが他のマシンにも表示されるようにします。

      $ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.bind.address.management=IP1
  2. マシン 2 での作業

    1. ユーザークレデンシャルでホスト設定を更新します。

      EAP_HOME/domain/configuration/host-slave.xml を編集し、ホスト名 HOST_NAME と秘密の値 SECRET_VALUE を設定します。

      <host xmlns="urn:jboss:domain:5.0" name="HOST_NAME">
        <management>
          <security-realms>
            <security-realm name="ManagementRealm">
              <server-identities>
                <secret value="SECRET_VALUE" />
              </server-identities>
              ...
    2. ホストコントローラーを起動します。

      スレーブホストコントローラー用に事前設定された host-slave.xml 設定ファイルを指定します。さらに、jboss.domain.master.address プロパティーを設定してドメインコントローラーに接続し、jboss.bind.address プロパティーを設定してホストコントローラーバインドアドレスを設定します。

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml  -Djboss.domain.master.address=IP1  -Djboss.bind.address=IP2

起動時に --controller パラメーターを使用してドメインコントローラーアドレスを指定し、管理 CLI からドメインを管理できるようになります。

$ EAP_HOME/bin/jboss-cli.sh --connect --controller=IP1

また、http://IP1:9990 で管理コンソールからドメインを管理することもできます。

8.7. 複数の JBoss EAP バージョンの管理

最新バージョンの JBoss EAP は、以前のバージョンの JBoss EAP を実行するサーバーおよびホストを管理できます。管理する JBoss EAP のバージョンに該当する項を参照してください。

8.7.1. JBoss EAP 6 インスタンスを管理するよう JBoss EAP 7.x ドメインコントローラーを設定

JBoss EAP 7.1 ドメインコントローラーは、実行している JBoss EAP 6 のバージョンが JBoss EAP 6.2 以上のホストおよびサーバーを管理できます。

注記

JBoss EAP 7.0 ドメインコントローラーが異なるパッチリリースの JBoss EAP 7.0 ホストを管理する場合は、設定を変更する必要はありません。しかし、JBoss EAP 7.0 ドメインコントローラーは、管理するホストコントローラーと同じパッチリリースバージョンまたはそれ以降のバージョンを実行している必要があります。

JBoss EAP 7 の管理対象ドメインで JBoss EAP 6 インスタンスを正常に管理するには、以下の作業を行います。

これらの作業が終了したら、管理 CLI を使用して JBoss EAP 7 ドメインコントローラーから JBoss EAP 6 サーバーおよび設定を管理できます。JBoss EAP 6 ホストは、バッチ処理などの JBoss EAP 7 の新機能を利用できないことに注意してください。

警告

管理コンソールは、最新バージョンの JBoss EAP に対して最適化されているため、管理コンソールを使用して JBoss EAP 6 のホスト、サーバー、およびプロファイルを更新しないでください。JBoss EAP 7 の管理対象ドメインから JBoss EAP 6 の設定を管理する場合は、代わりに 管理 CLI を使用してください。

8.7.1.1. Boss EAP 6 の設定を JBoss EAP 7 ドメインコントローラーに追加

ドメインコントローラーが JBoss EAP 6 サーバーを管理できるようにするには、JBoss EAP 7 のドメイン設定に JBoss EAP 6 の設定詳細を提供する必要があります。これには、JBoss EAP 6 のプロファイル、ソケットバインディンググループ、およびサーバーグループを JBoss EAP 7 の domain.xml 設定ファイルにコピーします。

JBoss EAP 7 の設定と名前が競合する場合は、リソースの名前を変更する必要があります。さらに、正しく動作するようにするため、追加の調整を行う必要もあります。

以下の手順では、JBoss EAP 6 の default プロファイル、standard-sockets ソケットバインディンググループ、および main-server-group サーバーグループが使用されます。

  1. JBoss EAP 7 の domain.xml 設定ファイルを編集します。このファイルをバックアップしてから編集することが推奨されます。
  2. 該当する JBoss EAP 6 のプロファイルを JBoss EAP 7 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 6 の default プロファイルをコピーし、名前を eap6-default に変更したことを仮定します。

    JBoss EAP 7 の domain.xml

    <profiles>
      ...
      <profile name="eap6-default">
        ...
      </profile>
    </profiles>

  3. このプロファイルによって使用される必要なエクステンションを追加します。

    JBoss EAP 6 のプロファイルが JBoss EAP 7 には存在しないサブシステムを使用する場合は、JBoss EAP ドメイン設定に適切なエクステンションを追加する必要があります。

    JBoss EAP 7 の domain.xml

    <extensions>
      ...
      <extension module="org.jboss.as.configadmin"/>
      <extension module="org.jboss.as.threads"/>
      <extension module="org.jboss.as.web"/>
    <extensions>

  4. 該当する JBoss EAP 6 のソケットバインディンググループを JBoss EAP 7 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 6 の standard-sockets ソケットバインディンググループをコピーし、名前を eap6-standard-sockets に変更したことを仮定します。

    JBoss EAP 7 の domain.xml

    <socket-binding-groups>
      ...
      <socket-binding-group name="eap6-standard-sockets" default-interface="public">
        ...
      </socket-binding-group>
    </socket-binding-groups>

  5. 該当する JBoss EAP 6 のサーバーグループを JBoss EAP 7 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 6 の main-server-group サーバーグループをコピーし、名前を eap6-main-server-group に変更したことを仮定します。また、このサーバーグループを更新して、JBoss EAP 6 のプロファイル eap6-default と JBoss EAP 6 のソケットバインディンググループ eap6-standard-sockets を使用するようにする必要があります。

    JBoss EAP 7 の domain.xml

    <server-groups>
      ...
      <server-group name="eap6-main-server-group" profile="eap6-default">
        ...
        <socket-binding-group ref="eap6-standard-sockets"/>
      </server-group>
    </server-groups>

8.7.1.2. JBoss EAP 6 プロファイルの動作の更新

JBoss EAP のバージョンや必要な動作に応じて、JBoss EAP 6 インスタンスによって使用されるプロファイルを追加更新する必要があります。既存の JBoss EAP 6 インスタンスが使用するサブシステムや設定に応じて、追加の変更が必要になる場合があります。

JBoss EAP 7 ドメインコントローラーを起動して管理 CLI を起動し、以下の更新を実行します。これらの例では、JBoss EAP 6 のプロファイルが eap6-default であることを仮定します。

  • bean-validation サブシステムを削除します。

    JBoss EAP 7 では、bean バリデーション機能が ee サブシステムから独自の bean-validation サブシステムに移されました。JBoss EAP 7 ドメインコントローラーがレガシーの ee サブシステムを発見した場合、新しい bean-validation サブシステムを追加します。しかし、JBoss EAP 6 のホストはこのサブシステムを認識しないため、削除する必要があります。

    JBoss EAP 7 のドメインコントローラー CLI

    /profile=eap6-default/subsystem=bean-validation:remove

  • CDI 1.0 の挙動を設定します。

    これは、JBoss EAP 6 サーバーに JBoss EAP 7 で使用されるより新しいバージョンの CDI の挙動ではなく、CDI 1.0 の挙動を適用する場合のみ必要です。CDI 1.0 の挙動を提供する場合は、weld サブシステムに以下の更新を追加します。

    JBoss EAP 7 のドメインコントローラー CLI

    /profile=eap6-default/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true)
    
    /profile=eap6-default/subsystem=weld:write-attribute(name=non-portable-mode,value=true)

  • JBoss EAP 6.2 のデータソース統計を有効にします。

    これは、プロファイルが JBoss EAP 6.2 サーバーによって使用される場合のみ必要です。JBoss EAP 6.3 には statistics-enabled 属性が導入され、デフォルトでは統計を収集しない false に設定されます。しかし、JBoss EAP 6.2 では統計を収集しました。このプロファイルが JBoss EAP 6.2 のホストとそれ以降のバージョンのJBoss EAP を実行するホストによって使用される場合、ホストによって動作が異なることになり、これは許可されません。そのため、JBoss EAP 6.2 ホスト向けのプロファイルは、データソースに以下の変更を追加する必要があります。

    JBoss EAP 7 のドメインコントローラー CLI

    /profile=eap6-default/subsystem=datasources/data-source=ExampleDS:write-attribute(name=statistics-enabled,value=true)

8.7.1.3. JBoss EAP 6 サーバーのサーバーグループの設定

サーバーグループの名前を変更した場合は、JBoss EAP 6 のホスト設定を更新し、JBoss EAP 7 の設定に指定された新しいサーバーグループを使用する必要があります。この例では、JBoss EAP 7 の domain.xml に指定された eap6-main-server-group サーバーグループを使用します。

JBoss EAP 6 の host-slave.xml

<servers>
    <server name="server-one" group="eap6-main-server-group"/>
    <server name="server-two" group="eap6-main-server-group">
        <socket-bindings port-offset="150"/>
    </server>
</servers>

注記

ホストは、実行している JBoss EAP よりも新しいバージョンで導入された機能や設定を使用できません。

8.7.1.4. JBoss EAP 6 インスタンスが JBoss EAP 7 の更新を取得しないようにする

管理対象ドメインのドメインコントローラーは、設定の更新をホストコントローラーに転送します。host-exclude 設定を使用して、特定のバージョンが認識できないようにするリソースを指定する必要があります。事前設定された host-exclude のオプションは EAP62EAP63EAP64、および EAP64z です。ご使用の JBoss EAP 6 のバージョンに該当するものを選択します。

host-exclude 設定の active-server-groups 属性は、特定のバージョンによって使用されるサーバーグループのリストを指定します。指定のバージョンのホストは、指定されたサーバーグループとそれらに関連するプロファイル、ソケットバインディンググループ、およびデプロイメントリソースを利用できますが、それ以外は認識しません。

以下の例では、JBoss EAP のバージョンが 6.4.z であることを仮定し、JBoss EAP 6 のサーバーグループ eap6-main-server-group をアクティブなサーバーグループとして追加します。

JBoss EAP 7 のドメインコントローラー CLI

/host-exclude=EAP64z:write-attribute(name=active-server-groups,value=[eap6-main-server-group])

必要な場合は、active-socket-binding-groups 属性を使用して、サーバーによって使用される追加のソケットバインディンググループを指定します。これは、active-server-groups に指定されたサーバーグループと関連していないソケットバインディンググループのみに必要です。

8.7.2. JBoss EAP 7.0 インスタンスを管理するよう JBoss EAP 7.1 ドメインコントローラーを設定

JBoss EAP 7.1 のドメインコントローラーは、JBoss EAP 7.0 を実行しているホストおよびサーバーを管理できます。

注記

JBoss EAP 7.1 ドメインコントローラーが異なるパッチリリースの JBoss EAP 7.1 ホストを管理する場合は、設定を変更する必要はありません。しかし、JBoss EAP 7.1 ドメインコントローラーは、管理するホストコントローラーと同じパッチリリースバージョンまたはそれ以降のバージョンを実行している必要があります。

JBoss EAP 7.1 の管理対象ドメインで JBoss EAP 7.0 インスタンスを正常に管理するには、以下の作業を行います。

これらの作業が終了したら、管理 CLI を使用して JBoss EAP 7.1 ドメインコントローラーから JBoss EAP 7.0 サーバーおよび設定を管理できます。JBoss EAP 7.0 ホストは、elytron サブシステムなどの JBoss EAP 7.1 の新機能を利用できないことに注意してください。

警告

管理コンソールは、最新バージョンの JBoss EAP に対して最適化されているため、管理コンソールを使用して JBoss EAP 7.0 のホスト、サーバー、およびプロファイルを更新しないでください。JBoss EAP 7.1 の管理対象ドメインから JBoss EAP 7.0 の設定を管理する場合は、代わりに 管理 CLI を使用してください。

8.7.2.1. Boss EAP 7.0 の設定を JBoss EAP 7.1 ドメインコントローラーに追加

ドメインコントローラーが JBoss EAP 7.0 サーバーを管理できるようにするには、JBoss EAP 7.1 のドメイン設定に JBoss EAP 7.0 の設定詳細を提供する必要があります。これには、JBoss EAP 7.0 のプロファイル、ソケットバインディンググループ、およびサーバーグループを JBoss EAP 7.1 の domain.xml 設定ファイルにコピーします。

JBoss EAP 7.1 の設定と名前が競合する場合は、リソースの名前を変更する必要があります。

以下の手順では、JBoss EAP 7.0 の default プロファイル、standard-sockets ソケットバインディンググループ、および main-server-group サーバーグループが使用されます。

  1. JBoss EAP 7.1 の domain.xml 設定ファイルを編集します。このファイルをバックアップしてから編集することが推奨されます。
  2. 該当する JBoss EAP 7.0 のプロファイルを JBoss EAP 7.1 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 7.0 の default プロファイルをコピーし、名前を eap70-default に変更したことを仮定します。

    JBoss EAP 7.1 の domain.xml

    <profiles>
      ...
      <profile name="eap70-default">
        ...
      </profile>
    </profiles>

  3. 該当する JBoss EAP 7.0 のソケットバインディンググループを JBoss EAP 7.1 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 7.0 の standard-sockets ソケットバインディンググループをコピーし、名前を eap70-standard-sockets に変更したことを仮定します。

    JBoss EAP 7.1 の domain.xml

    <socket-binding-groups>
      ...
      <socket-binding-group name="eap70-standard-sockets" default-interface="public">
        ...
      </socket-binding-group>
    </socket-binding-groups>

  4. 該当する JBoss EAP 7.0 のサーバーグループを JBoss EAP 7.1 の domain.xml ファイルにコピーします。

    この手順では、JBoss EAP 7.0 の main-server-group サーバーグループをコピーし、名前を eap70-main-server-group に変更したことを仮定します。また、このサーバーグループを更新して、JBoss EAP 7.0 のプロファイル eap70-default と JBoss EAP 7.0 のソケットバインディンググループ eap70-standard-sockets を使用するようにする必要があります。

    JBoss EAP 7.1 の domain.xml

    <server-groups>
      ...
      <server-group name="eap70-main-server-group" profile="eap70-default">
        ...
        <socket-binding-group ref="eap70-standard-sockets"/>
      </server-group>
    </server-groups>

8.7.2.2. JBoss EAP 7.0 サーバーのサーバーグループの設定

サーバーグループの名前を変更した場合は、JBoss EAP 7.0 のホスト設定を更新し、JBoss EAP 7.1 の設定に指定された新しいサーバーグループを使用する必要があります。この例では、JBoss EAP 7.1 の domain.xml に指定された eap70-main-server-group サーバーグループを使用します。

JBoss EAP 7.0 の host-slave.xml

<servers>
    <server name="server-one" group="eap70-main-server-group"/>
    <server name="server-two" group="eap70-main-server-group">
        <socket-bindings port-offset="150"/>
    </server>
</servers>

注記

ホストは、実行している JBoss EAP よりも新しいバージョンで導入された機能や設定を使用できません。

8.7.2.3. JBoss EAP 7.0 インスタンスが JBoss EAP 7.1 の更新を取得しないようにする

管理対象ドメインのドメインコントローラーは、設定の更新をホストコントローラーに転送します。JBoss EAP 7.0 のホストは JBoss EAP 7.1 固有の設定やリソースを取得しないため、JBoss EAP 7.0 のホストを設定してこれらのリソースを無視する必要があります。これには、JBoss EAP 7.0 のホストで ignore-unused-configuration 属性を設定します。

注記

また、host-exclude 設定を使用して、特定のバージョンの JBoss EAP を実行するホストが特定のリソースを認識しないよう、ドメインコントローラーに指示することもできます。host-exclude 設定の使用例については、「JBoss EAP 6 インスタンスが JBoss EAP 7 の更新を取得しないようにする」を参照してください。JBoss EAP 7.0 のホストの場合、host-exclude のオプションとして EAP70 を使用します。

JBoss EAP 7.0 ホストコントローラーのリモートドメインコントローラーへの接続設定で、ignore-unused-configuration 属性を true に設定します。

JBoss EAP 7.0 の host-slave.xml

<domain-controller>
    <remote security-realm="ManagementRealm" ignore-unused-configuration="true">
        <discovery-options>
            <static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}"/>
        </discovery-options>
    </remote>
</domain-controller>

この設定では、このホストは使用するサーバーグループと、それらのサーバーグループに関連するプロファイル、ソケットバインディング、およびデプロイメントリソースのみを利用でき、その他はすべて無視されます。

8.8. JBoss EAP プロファイルの管理

8.8.1. プロファイル

JBoss EAP は、プロファイルを使用してサーバーが使用できるサブシステムを整理します。プロファイルは、利用可能なサブシステムと各サブシステムの特定の設定で構成されます。プロファイルのサブシステムの数が多いと、サーバーの機能が多くなります。プロファイルのサブシステムが集中的で数が少ないと、機能が少なくなりますが、フットプリントも少なくなります。

JBoss EAP にはほとんどのユースケースに対応する事前定義されたプロファイルが 5 つあります。

default
loggingsecuritydatasourcesinfinispanwebserviceseeejb3transactions など、一般的に使用されるサブシステムが含まれます。
ha
default プロファイルで提供されるサブシステムと、高可用性向けの jgroups および modcluster サブシステムが含まれます。
full
default プロファイルで提供されるサブシステムと、 messaging-activemq および iiop-openjdk サブシステムが含まれます。
full-ha
full プロファイルで提供されるサブシステムと、高可用性向けの jgroups および modcluster サブシステムが含まれます。
load-balancer
ビルトインの mod_cluster フロントエンドロードバランサーを使用して他の JBoss EAP インスタンスの負荷を分散するために必要な最低限のサブシステムが含まれます。
注記

JBoss EAP は、既存プロファイルの設定からサブシステムを削除して、エクステンションを無効にしたり、ドライバーやその他のサービスを手作業でアンロードしたりする機能を提供しますが、ほとんどの場合でこれは必要ありません。JBoss EAP は必要時にサブシステムを動的にロードするため、サーバーまたはアプリケーションがサブシステムを使用しないと、そのサブシステムはロードされません。

既存のプロファイルが必要な機能を提供しない場合、JBoss EAP はカスタムプロファイルを定義する機能も提供します。

8.8.2. プロファイルのクローン

JBoss EAP では、既存のプロファイルをクローンして管理対象ドメインで新しいプロファイルを作成することができます。クローンした既存プロファイルの設定およびサブシステムのコピーが作成されます。

管理 CLI を使用してプロファイルをクローンするには、クローンするプロファイルに clone 操作を実行します。

/profile=full-ha:clone(to-profile=cloned-profile)

管理コンソールからプロファイルをクローンするには、クローンするプロファイルを選択し、Clone をクリックします。

8.8.3. 階層的なプロファイルの作成

管理対象ドメインでは、プロファイルの階層を作成できます。これにより、他のプロファイルが継承できる共通のエクステンションが含まれるベースプロファイルを作成できます。

管理対象ドメインは domain.xml の複数のプロファイルを定義します。複数のプロファイルが特定のサブシステムで同じ設定を使用する場合、複数のプロファイルで設定せずに、1 つのプロファイルで設定を行うことができます。親プロファイルの値はオーバーライドできません。

管理 CLI を使用して list-add 操作を実行し、含めるプロファイルを指定すると、プロファイルに階層の別のプロファイルを含めることができます。

/profile=new-profile:list-add(name=includes, value=PROFILE_NAME)