クラスタリング設定
1. クラスタリング方式
Cookieを用いたクラスタリング
認証済みセッション情報をCookieに埋め込むことにより、Shibboleth IdP 3を冗長化する方式です。リレーショナルデータベースを用いたクラスタリング
認証済みセッション情報をリレーショナルデータベースに保存することにより、Shibboleth IdP 3を冗長化する方式です。memcachedを用いたクラスタリング
認証済みセッション情報をmemcachedに保存することにより、Shibboleth IdP 3を冗長化する方式です。
2. Cookieを用いたクラスタリング
Cookieを用いたクラスタリング方式によるShibboleth IdP 3の冗長化設定について下記に示します。
2.1. 前提条件
前提条件は下記の通りです。
技術ガイドに従って構築する2台以上のIdPを対象とします。
マシンのホスト名は下記とします。
2.2. 設定手順
2.2.1. IdPの構築
下記の2点について変更の上、技術ガイドに従ってIdPを構築してください。
3. jdk 7、tomcat 7をインストールする > 6. httpd の設定 にあるServerNameの設定
idp1.example.ac.jpのような実ホスト名ではなく、サービス提供用ホスト名 idp.example.ac.jpを設定します。4. Shibbolethのインストール > 2. インストール にあるHostNameの入力
idp1.example.ac.jpのような実ホスト名ではなく、サービス提供用ホスト名 idp.example.ac.jpを設定します。
2.2.2. /opt/shibboleth/credentials/sealer.jksのコピー
クラスタを構成するIdPでは、同じ/opt/shibboleth/credentials/sealer.jksを使用する必要があります。
scpコマンドやrsyncコマンドなどでidp1.example.ac.jpの/opt/shibboleth/credentials/sealer.jksをidp2.example.ac.jpにコピーします。3台以上でクラスタリングする場合は3台目以降も同様にコピーします。
2.2.3. Tomcatの再起動
Tomcatを再起動します。
# service tomcat7 restart
3. リレーショナルデータベースを用いたクラスタリング
リレーショナルデータベース(以下、「RDB」とします)を用いたクラスタリング方式によるShibboleth IdP 3の冗長化設定を下記に示します。
3.1. 前提条件
前提条件は下記の通りです。
技術ガイドに従って構築する2台以上のIdPを対象とします。
RDBサーバはIdPサーバとは独立したサーバとします。
RDBサーバでは、CentOS 6付属のMySQL 5.1が起動しているものとします。MySQLがインストールされていない場合は、yumでインストールしてください。
マシンのホスト名は下記とします。
3.2. 設定手順
IdPv3はストレージを統一的に扱いますので、3.2.1、3.2.4および3.2.6で行った設定をuApproveJP等で同意情報のストレージとして用いることが可能です。
3.2.1. MySQLの設定
db.example.ac.jpのMySQLの設定を行います。
データベース shibbolethの作成
Shibboleth IdPで使用するデータベース shibbolethを作成します。ユーザ作成
IdPからデータベース shibbolethにアクセスするためのユーザ shibbolethを作成し、データベース shibbolethへの権限を付与します。StorageRecordsテーブル作成
JPAStorageServiceが使用するテーブル StorageRecordsを作成します。
3.2.2. IdPの構築
下記の2点について変更の上、技術ガイドに従ってIdPを構築してください。
3. jdk 7、tomcat 7をインストールする > 6. httpd の設定 にあるServerNameの設定
idp1.example.ac.jpのような実ホスト名ではなく、サービス提供用ホスト名 idp.example.ac.jpを設定します。4. Shibbolethのインストール > 2. インストール にあるHostNameの入力
idp1.example.ac.jpのような実ホスト名ではなく、サービス提供用ホスト名 idp.example.ac.jpを設定します。
3.2.3. /opt/shibboleth/credentials/sealer.jksのコピー
クラスタを構成するIdPでは、同じ/opt/shibboleth/credentials/sealer.jksを使用する必要があります。
scpコマンドやrsyncコマンドなどでidp1.example.ac.jpの/opt/shibboleth/credentials/sealer.jksをidp2.example.ac.jpにコピーします。3台以上でクラスタリングする場合は3台目以降も同様にコピーします。
3.2.4. MySQL Connector/Jのインストール
IdPにMySQLへのアクセスに必要なMySQL Connector/J (
mysql-connector-java.jar)をインストールします。/usr/share/java 配下にインストールされているので、
edit-webapp/配下のlib ディレクトリにシンボリックリンクを作成し、build.shコマンドを実行してidp.warに含めます。
3.2.5. idp.session.StorageServiceの設定変更
idp.sesssion.StorageServiceの設定をshibboleth.JPAStorageServiceに変更します。
3.2.6. shibboleth.JPAStorageServiceの設定
3.2.5. idp.session.StorageServiceの設定変更でidp.sesssion.StorageServiceに設定したshibboleth.JPAStorageServiceを定義します。
<bean id="Shibboleth.MySQLDataSource">のp:url, p:username, p:passwordは、3.2.1. MySQLの設定に合わせて設定します。
3.2.7. Tomcatの再起動
Tomcatを再起動します。
4. memcachedを用いたクラスタリング
memcachedを用いたクラスタリング方式によるShibboleth IdP 3の冗長化設定については、Shibboleth wikiのMemcachedStorageServiceをご参照ください。