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 サーバーインスタンスが起動します。これらのサーバーインスタンスは、ドメインコントローラーから設定をプルします。
3.3.1. ドメイン設定 リンクのコピーリンクがクリップボードにコピーされました!
本ガイドのさまざまな章では、データベース、HTTP ネットワーク接続、キャッシュ、およびその他のインフラストラクチャー関連のものなど、さまざまな側面の設定について説明します。スタンドアロンモードは standalone.xml ファイルを使用してこれらを設定しますが、ドメインモードは …/domain/configuration/domain.xml 設定ファイルを使用します。ここで、Red Hat Single Sign-On サーバーのドメインプロファイルとサーバーグループが定義されます。
domain.xml
ドメインコントローラーの実行中にこのファイルに加える変更は適用されず、サーバーによって上書きされる場合もあります。代わりに、JBoss EAP のコマンドラインスクリプトまたは Web コンソールを使用します。詳細は、JBoss EAP 設定ガイド を参照してください。
この domain.xml ファイルのいくつかの側面を見てみましょう。auth-server-standalone および auth-server-clustered profile XML ブロックは、設定の決定を一括して行う場所です。ここでは、ネットワーク接続、キャッシュ、データベース接続などを設定します。
auth-server プロファイル
auth-server-standalone プロファイルは、クラスター化されていないセットアップです。auth-server-clustered プロファイルはクラスター化されたセットアップです。
スクロールダウンすると、さまざまな socket-binding-groups が定義されていることが確認できます。
socket-binding-groups
この設定は、各 Red Hat Single Sign-On サーバーインスタンスで開かれるさまざまなコネクターのデフォルトのポートマッピングを定義します。${…} を含む値は、-D スイッチを使用してコマンドラインで上書きできる値です。つまり、以下のようになります。
domain.sh -Djboss.http.port=80
$ domain.sh -Djboss.http.port=80
Red Hat Single Sign-On のサーバーグループの定義は、server-groups XML ブロックにあります。これは使用されるドメインプロファイル (default) と、ホストコントローラーがインスタンスの起動時に Java 仮想マシンのデフォルトブート引数の一部を指定します。また、socket-binding-group をサーバーグループにバインドします。
サーバーグループ
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-master.xml を編集し、"load-balancer" エントリーをコメントアウトまたは削除します。
<servers>
<!-- remove or comment out next line -->
<server name="load-balancer" group="loadbalancer-group"/>
...
</servers>
<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 の値が追加されます。この例のドメイン設定では、ロードバランサーサーバーが開かれているポートが起動した認証サーバーインスタンスと競合しないように、これを行います。
3.3.3. サーバーインスタンスの作業ディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
ホストファイルで定義された各 Red Hat Single Sign-On サーバーインスタンスは、…/domain/servers/{SERVER NAME} の下に作業ディレクトリーを作成します。追加の設定をそこに置くことができ、サーバーインスタンスが必要とする、または作成する一時ファイル、ログファイル、またはデータファイルもそこに配置されます。これらのサーバーディレクトリーごとの構造は、他の JBoss EAP の起動サーバーと同じようになります。
作業ディレクトリー
3.3.4. ドメインブートスクリプト リンクのコピーリンクがクリップボードにコピーされました!
ドメインモードでサーバーを実行する場合は、オペレーティングシステムに応じて、サーバーを起動するために特定のスクリプトを実行する必要があります。このスクリプトは、サーバーディストリビューションの bin/ ディレクトリーにあります。
ドメインブートスクリプト
サーバーを起動するには、次のコマンドを実行します。
Linux/Unix
.../bin/domain.sh --host-config=host-master.xml
$ .../bin/domain.sh --host-config=host-master.xml
Windows
> ...\bin\domain.bat --host-config=host-master.xml
> ...\bin\domain.bat --host-config=host-master.xml
ブートスクリプトを実行する場合は、--host-config スイッチを介して使用するホスト制御設定ファイルを渡す必要があります。
3.3.5. クラスター化されたドメインの例 リンクのコピーリンクがクリップボードにコピーされました!
初期状態の domain.xml 設定を使用して、ドライブのクラスターリングをテストできます。このドメインの例は、1 台のマシンで実行され、以下を起動することを目的としています。
- ドメインコントローラー
- HTTP ロードバランサー
- 2 つの Red Hat Single Sign-On サーバーインスタンス
2 台のマシンでクラスターの実行をシミュレーションするには、domain.sh スクリプトを 2 回実行して、2 つの別々のホストコントローラーを起動します。1 つ目は、ドメインコントローラー、HTTP ロードバランサー、および 1 つの Red Hat Single Sign-On 認証サーバーインスタンスを起動するマスターホストコントローラーです。2 つ目は、認証サーバーインスタンスのみを起動するスレーブホストコントローラーになります。
3.3.5.1. ドメインコントローラーへのスレーブ接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
ただし、起動する前に、スレーブホストコントローラーを設定して、ドメインコントローラーとセキュアに通信できるようにします。これを行わないと、スレーブホストはドメインコントローラーから集中設定を取得できなくなります。セキュアな接続を設定するには、サーバー管理ユーザーと、マスターとスレーブの間で共有されるシークレットを作成する必要があります。これを行うには、…/bin/add-user.sh スクリプトを実行します。
スクリプトを実行する際に、Management User を選択し、ある AS プロセスで別の接続に新規ユーザーが使用されるかどうかを尋ねられたら yes と回答します。これにより、…/domain/configuration/host-slave.xml ファイルにカットアンドペーストする必要があるシークレットが生成されます。
アプリケーションサーバー管理者の追加
add-user.sh は、ユーザーを Red Hat Single Sign-On サーバーには追加せず、基礎となる JBoss Enterprise Application Platform に追加します。上記のスクリプトで使用および生成された認証情報は、単なる例になります。お使いのシステムで生成されたものを使用してください。
以下のように、秘密の値を …/domain/configuration/host-slave.xml ファイルにカットアンドペーストします。
作成したユーザーの ユーザー名 を …/domain/configuration/host-slave.xml ファイルに追加する必要もあります。
<remote security-realm="ManagementRealm" username="admin">
<remote security-realm="ManagementRealm" username="admin">
3.3.5.2. ブートスクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
1 つの開発マシンで 2 つのノードクラスターをシミュレートしているため、起動スクリプトを 2 回実行します。
マスターの起動
domain.sh --host-config=host-master.xml
$ domain.sh --host-config=host-master.xml
スレーブの起動
domain.sh --host-config=host-slave.xml
$ domain.sh --host-config=host-slave.xml
これを試すには、ブラウザーを開き、http://localhost:8080/auth に移動します。