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
ドメインコントローラーの実行中にこのファイルに加える変更は適用されず、サーバーによって上書きされる場合もあります。代わりに、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 サーバーインスタンス
手順
domain.shスクリプトを 2 回実行して、2 つの別々のホストコントローラーを起動します。1 つ目は、ドメインコントローラー、HTTP ロードバランサー、および 1 つの Red Hat Single Sign-On 認証サーバーインスタンスを起動するマスターホストコントローラーです。2 つ目は、認証サーバーインスタンスのみを起動するスレーブホストコントローラーです。
スレーブホストコントローラーを設定して、ドメインコントローラーとセキュアに通信できるようにします。以下の手順を実行します。
これらの手順を実行しないと、スレーブホストはドメインコントローラーから集中設定を取得できません。
サーバー管理ユーザーと、マスターおよびスレーブの間で共有されるシークレットを作成して、セキュアな接続を設定します。
…/bin/add-user.shスクリプトを実行します。スクリプトが追加するユーザーのタイプについて尋ねてきたら、
Management Userを選択します。この選択により、…/domain/configuration/host-slave.xml ファイルにカットアンドペーストするシークレットが生成されます。
アプリケーションサーバー管理者の追加
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記add-user.sh スクリプトは、ユーザーを Red Hat Single Sign-On サーバーには追加せず、基礎となる JBoss Enterprise Application Platform に追加します。このスクリプトで使用および生成される認証情報は、デモンストレーションのみを目的としています。お使いのシステムで生成されたものを使用してください。
以下のように秘密の値を …/domain/configuration/host-slave.xml ファイルにカットアンドペーストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成したユーザーの ユーザー名 を …/domain/configuration/host-slave.xml ファイルに追加します。
<remote security-realm="ManagementRealm" username="admin">
<remote security-realm="ManagementRealm" username="admin">Copy to Clipboard Copied! Toggle word wrap Toggle overflow 起動スクリプトを 2 回実行して、1 台の開発マシンで 2 つのノードクラスターをシミュレートします。
マスターの起動
domain.sh --host-config=host-master.xml
$ domain.sh --host-config=host-master.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow スレーブの起動
domain.sh --host-config=host-slave.xml
$ domain.sh --host-config=host-slave.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - これを試すには、ブラウザーを開き、http://localhost:8080/auth に移動します。