このサンプルドメインの設定では、ロードバランサー・サーバーが開くポートが、起動している認証サーバー・インスタンスと衝突しないように、このようにしています。下に作業ディレクトリーが作成されます。そこに追加の設定を保存でき、サーバー・インスタンスが必要とする、または作成する一時ファイル、ログファイル、データファイルも保存することができます。これらのサーバー・ディレクトリーごとの構造は、他のWildFlyブートサーバーと同じようなものになります。ワーキング・ディレクトリードメイン・クラスター・モードでの起動ドメインモードでサーバーを実行する場合、オペレーティング・システム固有の起動スクリプトを実行する必要があります。ディレクトリーにあります。ドメイン起動スクリプトサーバーを起動するには下記を実行します。スイッチ経由で、使用するホスト制御設定ファイルを渡す必要があります。設定を使用してクラスタリングをテストできます。このサンプルドメインは、1台のマシンで実行され、以下を起動します。スクリプトを2回実行します。1つ目はマスター・ホスト・コントローラーで、ドメイン・コントローラー、HTTPロードバランサー、1つのKeycloak認証サーバー・インスタンスを起動します。2つ目はスレーブ・ホスト・コントローラーで、認証サーバーのインスタンスのみを起動します。スレーブ・ホスト・コントローラーがドメイン・コントローラーと安全に通信できるように設定します。以下の手順を実行してください。これらの手順を省略すると、スレーブホストはドメイン・コントローラーから集中管理された設定を取得できません。マスターとスレーブの間で共有されるサーバー管理者のユーザーとシークレットを作成し、安全な接続を設定します。スクリプトを実行してください。ファイルにカット&ペーストするシークレットが生成されます。Platformに追加します。このスクリプトで使用および生成されるクレデンシャルは、デモ目的でのみ使用されます。お使いのシステムで生成されたものを使用してください。ファイルにシークレットの値をカット・アンド・ペーストすると、以下のようになります。ファイルに追加します。username="admin">ブートスクリプトを2回実行して、1台の開発マシンで2つのノードクラスターをシミュレートします。--host-config=host-slave.xmlブラウザーを開いてhttp://localhost:8080/authにアクセスし、試してみてください。あり、完全にはサポートされていません。クロスサイト・レプリケーション・モードを使用して、複数のデータセンターにまたがるクラスターでKeycloakを実行します。一般的には、異なる地域にあるデータセンターのサイトを使用します。このモードを使用すると、各データセンターはKeycloakサーバーの独自のクラスターを持つことになります。このドキュメントでは、以下のアーキテクチャー図の例を参照して、シンプルなクロスサイト・レプリケーションのユースケースを説明します。前提条件これは高度なトピックのため、最初に以下を読み、背景にある重要な知識を身につけておくことをお勧めします。クロスデータセンター・レプリケーションを設定する場合、より独立したKeycloakクラスターを使用するため、クラスターの仕組みや、ロード・バランシング、共有データベース、マルチキャストなどの基本的な概念と要件を理解する必要があります。地理的に離れた場所にあるクラスター間でデータをレプリケーションします。技術的な詳細このセクションでは、Keycloakクロスサイト・レプリケーションの仕組みについて概念と詳細について説明します。DataKeycloakはステートフルなアプリケーションです。データソースとして以下のものを使用します。データベースは、ユーザー情報などの永続的なデータを保持するために使用されます。Infinispanキャッシュは、永続化データをデータベースからキャッシュし、短期間で頻繁に変化するメタデータ(ユーザー・セッションなど)を節約するためにも使用されます。Infinispanは通常、データベースよりもはるかに高速ですが、Infinispanを使用して保存されたデータは永続的ではなく、クラスターを再起動後も維持できるとは限りません。呼ばれる2つのデータセンターがあります。Keycloakサーバーが最終的に読み取ることができるようにする必要があります。環境に基づいて、次の選択肢から決める必要があります。通常はアクティブ/アクティブモードで使用されます。表示される必要があります。通常はアクティブ/パッシブモードで使用されます。表示される必要はありません。データが表示されないこともあります。詳細は、モードを参照してください。リクエスト処理エンドユーザーのブラウザーは、HTTPリクエストをフロント・エンド・ロードバランサーに送信します。Proxy、またはその他のソフトウェアかハードウェア・ロードバランサーを使用するHTTPDまたはWildFlyです。ロードバランサーは、基になるKeycloakインスタンスに、受け取ったHTTPリクエストを転送します。このインスタンスは、複数のデータセンターに分散させることができます。ロードバランサーは通常、スティッキー・セッションをサポートしています。ロードバランサーは、同じデータセンターの同じKeycloakインスタンスに、同じユーザーのすべてのHTTPリクエストを常に転送することができます。これらはエンドユーザーのブラウザーからは見えないので、ユーザーとロードバランサー間でスティッキー・セッションの一部になることはできません。バックチャネル・リクエストの場合、ロードバランサーは、HTTPリクエストを任意のデータセンター内のいずれかのKeycloakインスタンスに転送することができます。ConnectといくつかのSAMLフローがユーザーとアプリケーションの両方から複数のHTTPリクエストを必要とするため、難しい問題です。関連するすべてのリクエストを同じデータセンター内の同じKeycloakインスタンスに送信するのにスティッキー・セッションに完全に依存することはできないため、代わりに、データセンター間で一部のデータをレプリケートする必要があります。それにより、データは特定のフロー中の後続のHTTPリクエストによって表示されます。モード要件に応じて、クロスサイト・レプリケーションには2つの基本的な動作モードがあります。ユーザーとクライアント・アプリケーションは、単一のデータセンター内のKeycloakノードにのみリクエストを送信します。してのみ使用されます。メインのデータセンターに障害が発生した場合、通常は第2のデータセンターからデータを復旧します。ユーザーとクライアント・アプリケーションは、両方のデータセンターのKeycloakノードにリクエストを送信します。両方のサイトのKeycloakサーバーからデータをすぐに使用できるようにする必要があります。何かしらのデータを書き込む場合に特に当てはまります。Keycloakサーバーがデータをすぐに読み取ることができるようにする必要があります。アクティブ/パッシブモードは、パフォーマンスに優れています。データベースKeycloakは、リレーショナル・データベース・マネジメント・システム(RDBMS)を使用して、レルム、クライアント、ユーザーなどのメタデータを保持します。詳細については、サーバーインストールガイドのこの章を参照してください。クロスサイト・レプリケーションのセットアップでは、両方のデータセンターが同じデータベースと通信するか、すべてのデータセンターに独自のデータベース・ノードがあり、両方のデータベース・ノードがデータセンター間で同期レプリケートされると想定しています。後続のDBトランザクションによって、それらのデータがすぐに表示される必要があります。DBのセットアップの詳細については、Keycloakの範囲外ですが、MariaDBやOracleなどのRDBMSベンダーの多くは、レプリケートされたデータベースと同期レプリケーションを提供しています。これらのベンダーを使用して、Keycloakをテストしています。10.1.19-MariaDBInfinispanキャッシュこのセクションでは、Infinispanキャッシュの概要を説明していきます。キャッシュの設定の詳細は以下のとおりです。認証セッションKeycloakには、認証セッションの概念があります。呼ばれる別のInfinispanキャッシュがあり、特定のユーザーの認証時にデータを保存するのに使用されます。このキャッシュからのリクエストには通常、ブラウザーとKeycloakサーバーのみが関与し、アプリケーションは関与しません。キャッシュ・コンテンツをデータセンター間でレプリケートする必要はありません。アクション・トークンアクション・トークンの概念もあります。アクション・トークンは、通常、ユーザーが電子メールでアクションを非同期で確認する必要があるシナリオで使用されます。Infinispanキャッシュは、どのアクション・トークンがすでに使用されているかなどの関連するアクション・トークンに関するメタデータを追跡するために使用されるため、2度目は再利用できません。これは通常、データセンター間でレプリケートする必要があります。永続データのキャッシングと無効化KeycloakはInfinispanを使用して永続化データをキャッシュし、データベースへの不要なリクエストを多く回避します。キャッシュによりパフォーマンスは改善されますが、さらなる問題が加わります。一部のKeycloakサーバーがデータを更新した場合、すべてのデータセンターの他のすべてのKeycloakサーバーはそのことに気づく必要があるため、それらのキャッシュから特定のデータを無効にします。呼ばれるローカルInfinispanキャッシュを使用して、永続化データをキャッシュします。workキャッシュ自体は実際のデータをキャッシュしません。クラスターノードとデータセンター間で無効化メッセージを送信する場合にのみ使用されます。ようなデータ)が更新されると、Keycloakノードは、同じデータセンター内の他のすべてのクラスターノード、および他のすべてのデータセンターに無効化メッセージを送信します。すべてのノードは、無効通知を受信した後、ローカル・キャッシュから適切なデータを無効にします。呼ばれるInfinispanキャッシュがあり、それらのすべては通常、データセンター間でレプリケートされる必要があります。これらのキャッシュは、ユーザー・セッションに関するデータを保存するために使用され、ユーザーのブラウザー・セッションの長さに対して有効です。キャッシュは、エンドユーザーとアプリケーションからのHTTPリクエストを処理する必要があります。前述のとおり、このインスタンスではスティッキー・セッションを信頼性をもって使用することはできませんが、後続のHTTPリクエストが最新のデータを確認できるようにする必要があります。このため、データは通常、データセンター間でレプリケートされます。不正なパスワードを入力した回数など、ログイン失敗に関するデータを追跡するために使用されます。詳細は、こちらを参照してください。このキャッシュをデータセンター間でレプリケートするかどうかは、管理者次第です。正確なログイン失敗の回数を取得するには、レプリケーションが必要です。このデータをレプリケートしないことで、パフォーマンスをよくできます。したがって、パフォーマンスがログイン失敗の正確な回数よりも重要な場合は、レプリケーションを避けるという手もあります。キャッシュの設定方法の詳細については、Infinispanキャッシュ設定のチューニングを参照してください。コミュニケーションの詳細Keycloakは、Infinispanキャッシュの分割されたクラスターを複数使用します。各Keycloakノードは、同じデータセンター内の他のKeycloakノードと共にクラスター内にありますが、異なるデータセンターのKeycloakノードはそのクラスター内にありません。Keycloakノードは、異なるデータセンターのKeycloakノードと直接通信できません。Keycloakノードは、データセンター間の通信に外部JDG(実際にはInfinispanサーバー)を使用します。使用して設定する必要があります。JDG2にレプリケートされます。Rodプロトコルの機能であるクライアント・リスナーを介して、クラスター内のKeycloakサーバーに通知します。Keycloakノードにも表示されます。詳細は、アーキテクチャー図の例を参照してください。11.0.8のクロスサイト・レプリケーションの基本的な設定を行います。2つのデータセンターが含まれます。各データセンターは、1つのInfinispanサーバーと2つのKeycloakサーバーで構成されています。合計すると、2つのInfinispanサーバーと4つのKeycloakサーバーになります。