[CentOS6][OpenAM10] ロードバランサのLVS(NAT)でOpenAMを負荷分散する


Create: 2014/10/11
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.local
JDK1.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/tomcat6
OpenAM 10の war ファイルを forgerock のダウンロードサイト からダウンロードしてデプロイします。
# cp ./openam_10.0.0.war /usr/share/tomcat6/webapps/openam.war
Tomcat を起動して、自動起動を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
[セッション] > [表示] で "exam01.blue21.local:8080" を選択します。
エラーメッセージが表示されなければ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
[アクセス制御 > [ / (最上位のレルム)] > [対象] でユーザの一覧を表示し "demo" を選択します。



初期状態では[名] に値がないので、"デモユーザ" を入力し、[パスワード] > [編集] をクリックしてパスワードを設定します。
入力が終了したら [保存]ボタンをクリックします。



下記URLで exam02 の OpenAM画面を開きます。
  • http://exam02.blue21.local:8080/openam
[アクセス制御 > [ / (最上位のレルム)] > [対象] でユーザの一覧を表示し "demo" を選択します。
下図のように 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
demo ユーザでログインします。パスワードは、上記4.2で設定したパスワードを使用します。



下図のようにユーザ管理画面が表示されたら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