3.3. ドメインクラスターモードの使用


ドメインモードは、サーバーの設定を一元管理して公開する方法です。

クラスターを標準モードで実行すると、クラスターのサイズが大きくなるにつれてすぐに深刻化する可能性があります。設定変更が必要になるたびに、クラスター内の各ノードで実行します。ドメインモードは、設定を格納および公開するための中心的な場所を提供することで、この問題を解決します。設定は非常に複雑となる場合がありますが、それだけの価値があると言えます。この機能は、Red Hat Single Sign-On の派生元である JBoss EAP Application Server に組み込まれています。

注記

このガイドでは、ドメインモードの基本について説明します。クラスターでドメインモードを設定する方法は、JBoss EAP の 設定ガイド を参照してください。

ドメインモードで実行するための基本的な概念のいくつかを以下に示します。

ドメインコントローラー
ドメインコントローラーは、クラスター内の各ノードの一般的な設定を保存、管理、および公開するプロセスです。このプロセスは、クラスター内のノードが設定を取得するための中心となるポイントです。
ホストコントローラー
ホストコントローラーは、特定のマシン上のサーバーインスタンスを管理します。1 つ以上のサーバーインスタンスを実行するように設定します。ドメインコントローラーは、各マシンのホストコントローラーと対話してクラスターを管理することもできます。実行中のプロセスの数を減らすために、ドメインコントローラーは、実行されているマシンのホストコントローラーとしても機能します。
ドメインプロファイル
ドメインプロファイルは、サーバーが起動に使用できる名前付きの設定セットです。ドメインコントローラーは、異なるサーバーによって使用される複数のドメインプロファイルを定義できます。
サーバーグループ
サーバーグループとはサーバーの集合のことです。これらは 1 つとして管理および設定されます。ドメインプロファイルをサーバーグループに割り当てることができ、そのグループ内のすべてのサービスは、そのドメインプロファイルを設定として使用します。

ドメインモードでは、ドメインコントローラーがマスターノードで起動します。クラスターの設定は、ドメインコントローラーにあります。次に、クラスター内の各マシンでホストコントローラーが起動されます。各ホストコントローラーのデプロイメント設定は、そのマシンで開始する Red Hat Single Sign-On サーバーインスタンスの数を指定します。ホストコントローラーが起動すると、設定された数の Red Hat Single Sign-On サーバーインスタンスが起動します。これらのサーバーインスタンスは、ドメインコントローラーから設定をプルします。

注記

Microsoft Azure などの一部の環境では、ドメインモードは適用されません。詳細は、JBoss EAP のドキュメントを参照してください。

3.3.1. ドメイン設定

本ガイドのさまざまな章では、データベース、HTTP ネットワーク接続、キャッシュ、およびその他のインフラストラクチャー関連のものなど、さまざまな側面の設定について説明します。スタンドアロンモードは standalone.xml ファイルを使用してこれらを設定しますが、ドメインモードは …​/domain/configuration/domain.xml 設定ファイルを使用します。ここで、Red Hat Single Sign-On サーバーのドメインプロファイルとサーバーグループが定義されます。

domain.xml

domain file

警告

ドメインコントローラーの実行中にこのファイルに加える変更は適用されず、サーバーによって上書きされる場合もあります。代わりに、JBoss EAP のコマンドラインスクリプトまたは Web コンソールを使用します。詳細は、JBoss EAP の 設定ガイド を参照してください。

この domain.xml ファイルのいくつかの側面を見てみましょう。auth-server-standalone および auth-server-clustered profile XML ブロックは、設定の決定を一括して行う場所です。ここでは、ネットワーク接続、キャッシュ、データベース接続などを設定します。

auth-server プロファイル

Copy to Clipboard Toggle word wrap
    <profiles>
        <profile name="auth-server-standalone">
            ...
        </profile>
        <profile name="auth-server-clustered">
            ...
        </profile>

auth-server-standalone プロファイルは、クラスター化されていないセットアップです。auth-server-clustered プロファイルはクラスター化されたセットアップです。

スクロールダウンすると、さまざまな socket-binding-groups が定義されていることが確認できます。

socket-binding-groups

Copy to Clipboard Toggle word wrap
    <socket-binding-groups>
        <socket-binding-group name="standard-sockets" default-interface="public">
           ...
        </socket-binding-group>
        <socket-binding-group name="ha-sockets" default-interface="public">
           ...
        </socket-binding-group>
        <!-- load-balancer-sockets should be removed in production systems and replaced with a better software or hardware based one -->
        <socket-binding-group name="load-balancer-sockets" default-interface="public">
           ...
        </socket-binding-group>
    </socket-binding-groups>

この設定は、各 Red Hat Single Sign-On サーバーインスタンスで開かれる各種コネクターのデフォルトのポートマッピングを定義します。${…​} を含む値は、-D スイッチを使用してコマンドラインで上書きできる値です。つまり、以下のようになります。

Copy to Clipboard Toggle word wrap
$ domain.sh -Djboss.http.port=80

Red Hat Single Sign-On のサーバーグループの定義は、server-groups XML ブロックにあります。これは使用されるドメインプロファイル (default) と、ホストコントローラーがインスタンスの起動時に Java 仮想マシンのデフォルトブート引数の一部を指定します。また、socket-binding-group をサーバーグループにバインドします。

サーバーグループ

Copy to Clipboard Toggle word wrap
    <server-groups>
        <!-- load-balancer-group should be removed in production systems and replaced with a better software or hardware based one -->
        <server-group name="load-balancer-group" profile="load-balancer">
            <jvm name="default">
                <heap size="64m" max-size="512m"/>
            </jvm>
            <socket-binding-group ref="load-balancer-sockets"/>
        </server-group>
        <server-group name="auth-server-group" profile="auth-server-clustered">
            <jvm name="default">
                <heap size="64m" max-size="512m"/>
            </jvm>
            <socket-binding-group ref="ha-sockets"/>
        </server-group>
    </server-groups>

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

Red Hat Single Sign-On には、…​/domain/configuration/ ディレクトリーにある 2 つのホストコントローラー設定ファイル (host-master.xml および host-slave.xml) が同梱されています。host-master.xml は、ドメインコントローラー、ロードバランサー、および 1 つの Red Hat Single Sign-On サーバーインスタンスを起動するように設定されています。host-slave.xml は、ドメインコントローラーと通信し、1 つの Red Hat Single Sign-On サーバーインスタンスを起動するように設定されています。

注記

ロードバランサーは必須サービスではありません。これは、開発マシンでクラスタリングを簡単にテストできるようにするために存在します。実稼働環境で使用できますが、使用するハードウェアまたはソフトウェアベースのロードバランサーが異なる場合は、これを置き換えるオプションがあります。

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

host files

ロードバランサーサーバーインスタンスを無効にするには、host-master.xml を編集し、"load-balancer" エントリーをコメントアウトまたは削除します。

Copy to Clipboard Toggle word wrap
    <servers>
        <!-- remove or comment out next line -->
        <server name="load-balancer" group="loadbalancer-group"/>
        ...
    </servers>

このファイルについて注意すべきもう 1 つの興味深い点は、認証サーバーインスタンスの宣言です。これには、port-offset が設定されています。domain.xml socket-binding-group またはサーバーグループで定義されたネットワークポートには、port-offset の値が追加されます。このサンプルドメイン設定では、ロードバランサーサーバーが開かれているポートが起動した認証サーバーインスタンスと競合しないように、これを行います。

Copy to Clipboard Toggle word wrap
    <servers>
        ...
        <server name="server-one" group="auth-server-group" auto-start="true">
             <socket-bindings port-offset="150"/>
        </server>
    </servers>

3.3.3. サーバーインスタンスの作業ディレクトリー

ホストファイルで定義された各 Red Hat Single Sign-On サーバーインスタンスは、…​/domain/servers/{SERVER NAME} の下に作業ディレクトリーを作成します。追加の設定をそこに置くことができ、サーバーインスタンスが必要とする、または作成する一時ファイル、ログファイル、またはデータファイルもそこに配置されます。これらのサーバーディレクトリーごとの構造は、他の JBoss EAP の起動サーバーと同じようになります。

作業ディレクトリー

domain server dir

3.3.4. ドメインクラスターモードの起動

ドメインモードでサーバーを実行する場合は、オペレーティングシステムに応じて、サーバーを起動するために特定のスクリプトを実行する必要があります。このスクリプトは、サーバーディストリビューションの bin/ ディレクトリーにあります。

ドメインブートスクリプト

domain boot files

サーバーを起動するには、次のコマンドを実行します。

Linux/Unix

Copy to Clipboard Toggle word wrap
$ .../bin/domain.sh --host-config=host-master.xml

Windows

Copy to Clipboard Toggle word wrap
> ...\bin\domain.bat --host-config=host-master.xml

ブートスクリプトを実行する場合は、--host-config スイッチから使用するホスト制御設定ファイルを渡す必要があります。

警告

Java SE 17 を使用してドメインモードで Red Hat Single Sign-On を実行するには、バンドルされたスクリプト enable-keycloak-se17-domain.cli の実行で設定を変更する必要があります。

Linux/Unix

Copy to Clipboard Toggle word wrap
$ ./bin/jboss-cli.sh --file=docs/examples/enable-keycloak-se17-domain.cli

Windows

Copy to Clipboard Toggle word wrap
> .\bin\jboss-cli.bat --file=docs\examples\enable-keycloak-se17-domain.cli

3.3.5. サンプルクラスター化ドメインを使用したテスト

サンプルの domain.xml 設定を使用して、ドライブのクラスタリングをテストできます。このサンプルドメインは、1 台のマシンで実行され、以下を起動することを目的としています。

  • ドメインコントローラー
  • HTTP ロードバランサー
  • 2 つの Red Hat Single Sign-On サーバーインスタンス

手順

  1. domain.sh スクリプトを 2 回実行して、2 つの別々のホストコントローラーを起動します。

    1 つ目は、ドメインコントローラー、HTTP ロードバランサー、および 1 つの Red Hat Single Sign-On 認証サーバーインスタンスを起動するマスターホストコントローラーです。2 つ目は、認証サーバーインスタンスのみを起動するスレーブホストコントローラーです。

  2. スレーブホストコントローラーを設定して、ドメインコントローラーとセキュアに通信できるようにします。以下の手順を実行します。

    これらの手順を実行しないと、スレーブホストはドメインコントローラーから集中設定を取得できません。

    1. サーバー管理ユーザーと、マスターおよびスレーブの間で共有されるシークレットを作成して、セキュアな接続を設定します。

      …/bin/add-user.sh スクリプトを実行します。

    2. スクリプトが追加するユーザーのタイプについて尋ねてきたら、Management User を選択します。

      この選択により、…/domain/configuration/host-slave.xml ファイルにカットアンドペーストするシークレットが生成されます。

      アプリケーションサーバー管理者の追加

      Copy to Clipboard Toggle word wrap
      $ 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.
       Using realm 'ManagementRealm' as discovered from the existing property files.
       Username : admin
       Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
        - The password should not be one of the following restricted values {root, admin, administrator}
        - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
        - The password should be different from the username
       Password :
       Re-enter Password :
       What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
       About to add user 'admin' for realm 'ManagementRealm'
       Is this correct yes/no? yes
       Added user 'admin' to file '/.../standalone/configuration/mgmt-users.properties'
       Added user 'admin' to file '/.../domain/configuration/mgmt-users.properties'
       Added user 'admin' with groups to file '/.../standalone/configuration/mgmt-groups.properties'
       Added user 'admin' with groups to file '/.../domain/configuration/mgmt-groups.properties'
       Is this new user going to be used for one AS process to connect to another AS process?
       e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
       yes/no? yes
       To represent the user add the following to the server-identities definition <secret value="bWdtdDEyMyE=" />

      注記

      add-user.sh スクリプトは、ユーザーを Red Hat Single Sign-On サーバーには追加せず、基礎となる JBoss Enterprise Application Platform に追加します。このスクリプトで使用および生成される認証情報は、デモンストレーションのみを目的としています。お使いのシステムで生成されたものを使用してください。

  3. 以下のように秘密の値を …​/domain/configuration/host-slave.xml ファイルにカットアンドペーストします。

    Copy to Clipboard Toggle word wrap
         <management>
             <security-realms>
                 <security-realm name="ManagementRealm">
                     <server-identities>
                         <secret value="bWdtdDEyMyE="/>
                     </server-identities>
  4. 作成したユーザーの ユーザー名…​/domain/configuration/host-slave.xml ファイルに追加します。

    Copy to Clipboard Toggle word wrap
         <remote security-realm="ManagementRealm" username="admin">
  5. 起動スクリプトを 2 回実行して、1 台の開発マシンで 2 つのノードクラスターをシミュレートします。

    マスターの起動

    Copy to Clipboard Toggle word wrap
    $ domain.sh --host-config=host-master.xml

    スレーブの起動

    Copy to Clipboard Toggle word wrap
    $ domain.sh --host-config=host-slave.xml

  6. これを試すには、ブラウザーを開き、http://localhost:8080/auth に移動します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.