OpenAMを冗長構成でセットアップする

## 今日やること

OpenAMを2台構成でセットアップしてみます。

## 環境

先日まで使っていた環境はおいておいて、別の仮想マシンを使用します。

* 1号機
    * CentOS 6.8 (Vagrant)
    * Memory 1024 MB
    * FQDN iam01.example.com
* 2号機
    * CentOS 6.8 (Vagrant)
    * Memory 1024 MB
    * FQDN iam02.example.com

## 事前準備

Advent Calendarの[２日目](http://qiita.com/nanazero/items/0a2d6530c8dd50820dd9)とあまり手順は変わりません。

まずは、名前解決をお互いにできるようにします。

```bash
// iam01,iam02の両方で実施
diff /etc/hosts{,.org}
3,5d2
< 
< 192.168.33.110 iam01.example.com
< 192.168.33.120 iam02.example.com
```

ホストネームも変えておきます。

```bash
// iam01で実施
hostname iam01.example.com
diff /etc/sysconfig/network{,.org}
2,3c2
< #HOSTNAME=localhost.localdomain
< HOSTNAME=iam01.example.com
---
> HOSTNAME=localhost.localdomain
```

```bash
// iam02で実施
hostname iam02.example.com
diff /etc/sysconfig/network{,.org}
2,3c2
< #HOSTNAME=localhost.localdomain
< HOSTNAME=iam02.example.com
---
> HOSTNAME=localhost.localdomain
```

openamユーザーを作ります。

```bash
// iam01,iam02の両方で実施
useradd -s /sbin/nologin -d /opt/openam openam
```

## Tomcatの準備

OpenJDKをインストールします。

```
// iam01,iam02の両方で実施
yum -y install java-1.8.0-openjdk
```

TomcatをDLして、配置します。

```
// iam01,iam02の両方で実施
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.zip -P /opt/
unzip /opt/apache-tomcat-8.0.39.zip -d /opt/
```

JAVA_OPTSを設定します。

```
// iam01,iam02の両方で実施
cat /opt/tomcat/bin/setenv.sh 
#!/bin/sh

JAVA_OPTS="-server -Xmx1024m"

export JAVA_OPTS
```

## Apacheの準備

今回もフロントエンドにApacheをたてます。

Apacheをインストールします。

```
// iam01,iam02の両方で実施
sudo yum -y install httpd mod_ssl
```

AJPの設定をいれます。

```
// iam01,iam02の両方で実施
cat /etc/httpd/conf.d/openam.conf 
Proxypass / ajp://localhost:8009/
```

Apacheを再起動します

```
// iam01,iam02の両方で実施
service httpd start
```

## OpenAMのデプロイ

なんとまぁ、Advent Calendarの[２日目](http://qiita.com/nanazero/items/0a2d6530c8dd50820dd9)ではDLできてたんですが、WARファイルがDLできなくなってます・・・。
（なんだか、ソースのTrunkも非公開になった？？？？？）

仕方ないので、少し古いビルドですが、バージョン13を下記のサイトからダウンロードします。
ダウンロード後のWARは`/home/vagrant/OpenAM-13.0.0.war`に配置します。

* https://backstage.forgerock.com/downloads/OpenAM/

Tomcatのwebappsに配置します。

```
// iam01,iam02の両方で実施
cp /home/vagrant/OpenAM-13.0.0.war /opt/tomcat/webapps/openam.war
```

権限を変更します。

```
// iam01,iam02の両方で実施
chown -R openam. /opt/tomcat/
chmod +x /opt/tomcat/bin/*.sh
```

Tomcatを起動します。

```
sudo -u openam /opt/tomcat/bin/startup.sh 
```

## 1号機のセットアップ

まず、iam01のセットアップです。iam01のURL(`http://iam01.example.com/openam/config/options.htm`)にアクセスします。

設定はAdvent Calendarの[２日目](http://qiita.com/nanazero/items/0a2d6530c8dd50820dd9)とあまり変わりませんが、サイト設定の詳細に負荷分散装置のURLとフェイルオーバーの設定の有効化の設定をいれます。

<img width="615" alt="001.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/148404/fe2b360b-d3c2-0095-7f92-2d4c329869ad.jpeg">

## 2号機のセットアップ

続いて、iam02のセットアップです。iam02のURL(`http://iam01.example.com/openam/config/options.htm`)にアクセスします。

こちらは、設定ストアの設定画面にて、iam01の設定情報を参照する設定を行います。サーバーURLにiam01のURLを入力します。

<img width="615" alt="002.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/148404/35c1115c-3004-a3be-0928-710467d4f901.jpeg">

## 負荷分散装置

フロントに置いている負荷分散装置については、あまり触れませんが、**〇〇がいい**みたいなのは無いみたいです。
ただ、ステートフルの構成の場合、フェイルオーバーの設定を入れていても、都度別サーバーに振られるのは気持ちが悪い気がするので、Sticky Sessionの設定は入れておいた方がよさそうですね。ちなみに私はHAProxyで負荷分散を仕込むのが好きです。（今回は業務内での検証なので、検証用のLB製品をつかっています）

## 構成の確認

設定が完了後、LB経由でOpenAMにサインインし、**設定 => サーバーおよびサイト**を見ると、iam01とiam02という2つのサーバーが、iamhaという1つのサイトに収まっていることが確認できます。

<img width="1076" alt="005.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/148404/ebeec18f-0ad7-cc64-efcb-e4817ac79171.jpeg">

## 〆

今日は手順を掲載した感じになりましたね。
冗長構成ってセットアップするのが大変な印象があるのですが、ウィザード形式でフェイルオーバー設定まで仕込めるってのは便利ですね。

今日はこのへんで！

ばい！