Keycloakのクラスタ環境を構成してみようKeycloak超入門(4)(1/3 ページ)

本連載では、近年注目されている認証プロトコル「OpenID Connect」をサポートするオープンソースのシングルサインオン(SSO)ソフトウェア「Keycloak」の活用方法を解説していきます。今回は、Keycloakのクラスタ環境を構成する方法を解説します。

» 2018年02月07日 05時00分 公開
[茂木昂士株式会社日立製作所]
「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の設定項目も共有されます。共有される項目にはデータソースやログの設定、起動パラメーターといった情報が含まれます。これらの項目は、後述する「Domain Clustered」モードでクラスタ環境を構築した場合のみ共有されます。

WildFlyにおける3つの動作モード

 ここからは、Keycloakが動作するAPサーバ、WildFlyについて説明します。WildFlyには「Standalone」「Standalone Cluster」「Domain Clustered」という3つの動作モードが定義されており、利用状況や構築するクラスタの規模に合わせて選択できます。

■WildFlyの動作モード
モード Keycloak設定項目の共有 セッション情報の共有 APサーバ設定項目の共有
Standalone × × ×
Standalone Cluster ×
Domain Clustered

 各動作モードの違いは、以下のようになります。

Standaloneモード

 Standaloneは、Keycloakのアプリケーションが1インスタンスで動作するモードです。クラスタ化することはできませんが、簡単な設定で動作させることが可能です。Standaloneモードでは可用性が確保できないため、本番環境での利用は推奨されていません。

Standalone Clusterモード

 Standalone Clusterは、複数のサーバでクラスタを動作させるモードです。クラスタ環境が構築されると、データソースやセッション情報がクラスタのノード間で共有されるようになります。

 ただし、データソースやロギングの設定など、APサーバの設定項目は共有されないため、設定を変更するたびに、各ノードに対して同じ変更を行う必要があります。クラスタを動作させるための設定は簡単ですが、数十台の大規模なクラスタ環境を構築する場合には作業量が多くなってしまいます。

Domain Clusteredモード

 Domain Clusteredは、「ドメインコントローラー」という機能でクラスタ内ホストの設定項目を管理するモードです。クラスタが構築されると、データソースやセッション情報だけでなく、WildFlyに対する設定項目がクラスタ内のノード間で自動的に共有されます。これにより、ノードの追加時にAPサーバへの設定が必要なくなり、システム負荷に応じて柔軟にクラスタノード数を変更できるようになります。

 今回は、設定が簡単なStandalone Clusterモードでクラスタを構築します。

クラスタ構成に必要なコンポーネント

 今回構築するKeycloakクラスタは、以下の図1のような構成になります。

図1 図1 今回構成するKeycloakのクラスタ環境

Keycloakホスト

 クラスタを構築するためには、2台以上のKeycloakホストが必要です。それぞれのKeycloakをStandalone Clusterモードで動作させるように設定します。

ロードバランサー

 クラスタ化されたKeycloakにHTTPリクエストを振り分けるために、Keycloakサーバの前面にロードバランサーを設置します。今回は「Apache HTTPD」と「mod_cluster」モジュールを利用します。

共有データソース

 クラスタ間で設定項目を共有するためには、外部の共有データソースが必要になります。共有データソース(Datasource)には、「PostgreSQL」「MySQL」「Oracle」などのRDBMS(Relational Database Management System)が利用できます。今回は、PostgreSQLを利用します。

ノード間のプライベートネットワーク

 WildFlyによるクラスタ環境では、設定項目を共有するためにノード間の情報がマルチキャストで送信されます。そのため、セキュリティ上の観点から、クラスタ間通信には専用ネットワークを利用することが推奨されています。今回は、プライベートネットワークを利用できなかったのでこの設定は行っていません。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。