Connect」をサポートするオープンソースのシングルサインオン(SSO)ソフトウェア「Keycloak」の活用方法を解説していきます。今回は、Keycloakのクラスタ環境を構成する方法を解説します。});連載目次クラスタを構築してシステムの可用性を確保する「Keycloak」を含むシステムを構築した際、Keycloakがダウンすると認可に関する情報を取得できなくなるため、システム全体がアクセス不能となってしまいます。これを防ぐためには、Keycloakサーバをクラスタ化し、システム全体の可用性を確保する必要があります。KeycloakではKeycloakを実行するためのアプリケーション(AP)サーバである「WildFly」が提供するクラスタ機能を利用して、ホスト間でデータを共有しています。セッション情報などのデータをクラスタ間で共有することで、ホストがダウンした際の処理を他のホストで引き継げるようになっています。クラスタ間で共有される情報は「Keycloakの設定項目」「セッション情報」「アプリケーションサーバの設定項目」の3つです。Keycloakの設定項目Keycloak自体が持つ設定情報や、Keycloak上で行ったレルムやクライアント設定など、GUIやCLIで設定した項目が共有されます。これらの情報は、外部のデータソースを経由して共有されます。セッション情報Keycloakのセッション情報もホスト間で共有されます。これにより、ユーザーのログイン状態が維持されます。セッション情報は、WildFlyに搭載されている「JGroups」「Infinispan」を利用して共有されます。JGroups、Infinispanの詳細は、WildFlyのドキュメント(https://docs.jboss.org/author/display/WFLY10/Documentation)を参照してください。アプリケーションサーバの設定項目Keycloakが動作するWildFlyの設定項目も共有されます。共有される項目にはデータソースやログの設定、起動パラメーターといった情報が含まれます。Clustered」モードでクラスタ環境を構築した場合のみ共有されます。WildFlyにおける3つの動作モードここからは、Keycloakが動作するAPサーバ、WildFlyについて説明します。Clustered」という3つの動作モードが定義されており、利用状況や構築するクラスタの規模に合わせて選択できます。各動作モードの違いは、以下のようになります。StandaloneモードStandaloneは、Keycloakのアプリケーションが1インスタンスで動作するモードです。クラスタ化することはできませんが、簡単な設定で動作させることが可能です。Standaloneモードでは可用性が確保できないため、本番環境での利用は推奨されていません。Clusterは、複数のサーバでクラスタを動作させるモードです。クラスタ環境が構築されると、データソースやセッション情報がクラスタのノード間で共有されるようになります。データソースやロギングの設定など、APサーバの設定項目は共有されないため、設定を変更するたびに、各ノードに対して同じ変更を行う必要があります。クラスタを動作させるための設定は簡単ですが、数十台の大規模なクラスタ環境を構築する場合には作業量が多くなってしまいます。Clusteredは、「ドメインコントローラー」という機能でクラスタ内ホストの設定項目を管理するモードです。クラスタが構築されると、データソースやセッション情報だけでなく、WildFlyに対する設定項目がクラスタ内のノード間で自動的に共有されます。これにより、ノードの追加時にAPサーバへの設定が必要なくなり、システム負荷に応じて柔軟にクラスタノード数を変更できるようになります。Clusterモードでクラスタを構築します。クラスタ構成に必要なコンポーネント今回構築するKeycloakクラスタは、以下の図1のような構成になります。今回構成するKeycloakのクラスタ環境Keycloakホストクラスタを構築するためには、2台以上のKeycloakホストが必要です。Clusterモードで動作させるように設定します。ロードバランサークラスタ化されたKeycloakにHTTPリクエストを振り分けるために、Keycloakサーバの前面にロードバランサーを設置します。HTTPD」と「mod_cluster」モジュールを利用します。共有データソースクラスタ間で設定項目を共有するためには、外部の共有データソースが必要になります。System)が利用できます。今回は、PostgreSQLを利用します。ノード間のプライベートネットワークWildFlyによるクラスタ環境では、設定項目を共有するためにノード間の情報がマルチキャストで送信されます。そのため、セキュリティ上の観点から、クラスタ間通信には専用ネットワークを利用することが推奨されています。今回は、プライベートネットワークを利用できなかったのでこの設定は行っていません。Keycloakのクラスタ環境を構築する関連記事なぜ「シングルサインオン」が必要なのか?企業でのWebサービスの実現が具体的になるにつれ、パスワード/IDマネジメントが重視されるようになり、「シングル・サインオン」がますます注目を集めている。この連載では、シングル・サインオンの実践ステップなど具体的な考え方を紹介する。メタディレクトリやLDAPなど「ディレクトリ統合」をキーワードとしてシングル・サインオンを実現するための技術を分かりやすく解説する。企業のID管理で避けては通れない「IDaaS」とは?これまで社内設置が当たり前だったアイデンティティ(ID)管理/認証システム。今回は、OpenAMの姉妹製品で既存アプリケーションを改修せずにシングルサインオンを可能にする「OpenIG」と、OpenAMのデフォルトデータストアである「OpenDJ」について解説します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。