Create: 2014/10/11
LastUpdate: 2014/10/13
≪ メニューに戻るLastUpdate: 2014/10/13
ロードバランサで OpenAM の負荷分散を試してみます。
検証環境(XenServer6.2+CentOS6.5)で使用するドメインは、"blue21.local" とします。
1.シナリオ
ここでは、LVS(NAT) を使用したロードバランサを使用します。
サーバの構成は、下図のようにします。
exlb01とexlb02 はLVS(NAT)のロードバランサです。
VRRPで冗長化し exlb01が DOWN したら、exlb02 に切り替わります。
exam01 と exam02 は OpenAMサーバです。
SSOを行う一般ユーザは、ロードバランサ経由でアクセスするようにして負荷分散します。
OpenAMの設定を行う管理者は、LVSサーバの負荷分散を使用せずにDNAT経由で、直接OpenAMサーバにアクセスして管理画面を使用します。
2.ロードバランサの構築
LVS(NAT)を使用した exlb01 と exlb02 の構築は、「 [CentOS6][IPVS+Keepalived] LVS(NAT)のロードバランサをVRRP方式で冗長化する」を参照してください。
OpenAMのヘルスチェック用のURLは以下のように設定します。ただし、このURLは、OpenAMの初期設定が完了するまでOKになりません。
real_server 10.0.0.93 8080 {
weight 10
inhibit_on_failure
HTTP_GET {
url {
path /openam/isAlive.jsp
status_code 200
}
connect_timeout 3
!nb_get_retry 3
!delay_before_retry 3
}
}
ロードバランサのパーシステンス機能は有効にしたほうがOpenAMの効率がいいようです。パーシステンスは、同一のクライアントからのリクエストを常に同じサーバに転送するセッション維持機能です。3.OpenAMサーバの構築
exam01 と exam02 は、OpenAMの初期設定以外は、「 [CentOS6][OpenAM10] OpenAMを試す - OpenAMのシングルサインオン(SSO)を試す(1/4)」と同じように設定します。
3.1.exam01、exam02 共通
ホスト名は以下のようにFQDNで設定します。
[root@exam01 ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=exam01.blue21.local
[root@exam02 ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=exam02.blue21.local今回は、DNSサーバを用意しないので hosts は以下のように設定します。
[root@exam01 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 exam01.blue21.local 10.0.0.94 exam02.blue21.local 10.0.0.90 lvs.blue21.local
[root@exam02 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.93 exam01.blue21.local 127.0.0.1 exam02.blue21.local 10.0.0.90 lvs.blue21.localJDK1.6 と Tomcat6 をインストールします。
# sh ./jdk-6u45-linux-i586-rpm.bin # yum install tomcat6/etc/sysconfig/tomcat6 を修正します。
# Where your java installation lives JAVA_HOME="/usr/java/default" # OpenAM JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=256m"OpenAMの初期設定時に/usr/share/tomcat6 にディレクトリを作成します。
なので所有者を tomcat の実行ユーザにして、書き込み権限を与えます。
# chown -R tomcat.tomcat /usr/share/tomcat6OpenAM 10の war ファイルを forgerock のダウンロードサイト からダウンロードしてデプロイします。
# cp ./openam_10.0.0.war /usr/share/tomcat6/webapps/openam.warTomcat を起動して、自動起動をONにします。
# service tomcat6 start # chkconfig tomcat6 on
3.2.Windows端末の hosts 設定
192.168.1.0/24 系のサブネットにある Windows8 を使用してOpenAM 初期設定を行います。
DNSサーバを用意していないので Windows8 の hosts ファイルには、下記のように設定します。
192.168.1.90 lvs.blue21.local 192.168.1.93 exam01.blue21.local 192.168.1.94 exam02.blue21.local
3.3.exam01 のOpenAM初期設定
exam01 のOpenAM 初期設定を行います。Windows8 のブラウザで下記URLにアクセスします。
- http://exam01.blue21.local:8080/openam
管理者ユーザの amadmin のパスワードを設定します。
[パスワード]、[パスワードの確認]を入力して、[次へ]ボタンをクリックします。
[Cookieドメイン]に ".blue21.local" を入力し、残りの項目はデフォルト値のまま、[次へ]ボタンをクリックします。
[最初のインスタンス] を選択して、[次へ]ボタンをクリックします。
[OpenAMのユーザデータストア]を選択して、[次へ]ボタンをクリックします。
ロードバランサを使用するので[はい]を選択します。
[サイト名]に "site1" を入力し、[ロードバランサのURL]に "http://lvs.blue21.local:8080/openam" を入力して [次へ] ボタンをクリックします。
PolicyAgent の設定時に使用するパスワードのデフォルト値を設定します。
[パスワード]、[パスワードの確認]を入力して[次へ]ボタンをクリックします。
設定内容を確認して、[設定の作成]ボタンをクリックします。
初期設定中です。しばらく待ちます。
[ログインへ進む]ボタンをクリックします。
[ユーザ名]に "amadmin" を入力し、[パスワード]を入力して [ログイン] ボタンをクリックします。
ログインに成功したらOKです。
3.4.exam02 のOpenAM初期設定
exam02 のOpenAM 初期設定を行います。exam01 とは少し、手順が異なります。
Windows8 のブラウザで下記URLにアクセスします。
- http://exam02.blue21.local:8080/openam
管理者ユーザの amadmin のパスワードを設定します。
[パスワード]、[パスワードの確認]に、exam01 と同じ値を入力して、[次へ]ボタンをクリックします。
[Cookieドメイン]に ".blue21.local" を入力し、残りの項目はデフォルト値のまま、[次へ]ボタンをクリックします。
OpenAMの設定情報は、exam01 と exam02 で個別のデータストア(OpenDS)に持ちます。
ここでは、exam01 と exam02 が設定情報を互いにレプリケーションするようにして、exam01 と exam02 が同じ設定情報を持つように設定します。
例えば、exam01 でOpenAM画面から設定変更すると、設定情報が、exam02 にコピーされます。また、exam02 で変更すると exam01 にコピーされます。
[既存の配備に追加しますか]を選択します。
最初は、[サーバーURL] しか表示されませんが、[サーバーURL]を入力するとポート番号などの残りの項目が表示されます。
[サーバーURL] に "http://exam01.blue21.local:8080/openam" を入力し、[次へ]ボタンをクリックします。
ロードバランサを使用するので[はい]を選択します。
[サイト名]に "site1" を入力し、[ロードバランサのURL]に "http://lvs.blue21.local:8080/openam" を入力して [次へ] ボタンをクリックします。
設定内容を確認して、[設定の作成]ボタンをクリックします。
設定内容を確認して、[設定の作成]ボタンをクリックします。
[ログインへ進む]ボタンをクリックします。
[ユーザ名]に "amadmin" を入力し、[パスワード]を入力して [ログイン] ボタンをクリックします。
ログインに成功したらOKです。
4.動作確認
4.1.セッションの確認
exam01 と exam02 が、お互いのセッション情報を見れるか確認します。
下記URLで exam01 の OpenAM画面を開きます。
- http://exam01.blue21.local:8080/openam
エラーメッセージが表示されなければOKです。下図の例では、exam01 にセッションが無いので "セッションがありません" と表示されています。
[表示]で "exam02.blue21.local:8080" を選択します。
エラーメッセージが表示されなければOKです。下図の例では、exam02 のセッションが表示されています。
exam02 のOpenAM画面でも同じように、exam01 と exam02 のセッションが見れます。
4.2.設定情報レプリケーションの確認
exam01 の設定変更が、exam02 で参照できるか確認します。
下記URLで exam01 の OpenAM画面を開きます。
- http://exam01.blue21.local:8080/openam
初期状態では[名] に値がないので、"デモユーザ" を入力し、[パスワード] > [編集] をクリックしてパスワードを設定します。
入力が終了したら [保存]ボタンをクリックします。
下記URLで exam02 の OpenAM画面を開きます。
- http://exam02.blue21.local:8080/openam
下図のように exam01 で設定変更した情報が参照できれば、レプリケーションOKです。
exam02 で設定変更すると、設定情報が exam01 にレプリケーションされます。
4.3.ロードバランサ経由でのSSOを確認
ロードバランサ経由でSSOできるか確認します。
exlb01 で LVSの状態を確認します。 Weight が 0 以外ならヘルスチェックOKなので exam01 または exam02 にリクエストが振り分けられます。
# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.90:8080 rr -> 10.0.0.93:8080 Masq 10 0 0 -> 10.0.0.94:8080 Masq 10 0 0下記URLで OpenAM の idm (ID管理) 画面にアクセスします。
- http://lvs.blue21.local:8080/openam/idm
下図のようにユーザ管理画面が表示されたらOKです。
exlb01 で LVS の状態を確認すると以下のとおり。
ロードバランサが動いてるのが確認できます。
# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.90:8080 rr -> 10.0.0.93:8080 Masq 10 0 2 -> 10.0.0.94:8080 Masq 10 1 1