高可用性ロードバランサーを nginx + heartbeat で作る
ロードバランサーの可用性を高めるために、アクティブスタンバイ構成で、アクティブ系が落ちたらスタンバイ系に引き継げるようにする。
構築環境
- サーバー機
-
- NIC × 2 枚 (推奨 4 枚)
- RAID: 1, (推奨 0 + 1)
- 電源ボード × 2 (予算があれば)
- 仮想化ソフトウェア: VMWare ESXi 4.0
- 仮想化ソフトウェア (VMWare ESXi 4.0) の設定
-
- NIC は 2 枚 1 組でフェイルオーバーするように設定
- ネットワーク × 2 (NIC 2 枚構成の場合は VLANを作成)
-
- VM Network: 既存 (デフォルト)
- HA Network: 新規追加
- ロードバランサー用ゲストOS (Ubuntu Server 9.10: 各サーバに1 台ずつ追加)
-
- ディスク: 4G程度 (Ubuntu Server の最小ハードウェア要件は 1G)
- コア数: 2
- メモリ: 4G
- ネットワーク × 2
-
- VM Network に接続された NIC
- HA Network に接続された NIC
ネットワーク | アクティブ (lb01) | スタンバイ (lb02) |
---|---|---|
eth0 (heartbeat 監視用) | 192.168.0.2 | 192.168.0.3 |
eth1 (管理用) | 172.16.0.2 | 172.16.0.3 |
サービス用 | 172.16.0.1 (実際にサービスを提供する IP) |
インストールと設定
- パッケージ類のインストール (nginx と heartbeat)
ロードバランサーとして利用する nginx と、クラスタリングするための heartbeat をインストールする
sudo aptitude install nginx heartbeat
- nginx の自動起動をやめる
sysv-rc-conf などを利用し、各ランレベルでの自動起動を停止しておく
※ sysv-rc-conf をインストールしていない場合は以下でインストールできるsudo sptitude install sysv-rc-conf
- hosts ファイルに各サーバを登録する
sudo vi /etc/hosts
192.168.0.2 lb01 192.168.0.3 lb02
※ お互い ping 試験 - /etc/ha.d/ha.cf の作成
テンプレートがあるので、作業用ディレクトリーに複製、及び編集
監視対象を指定sudo cp /usr/share/doc/heartbeat/ha.cf.gz . sudo gzip -d ha.cf.gz sudo vi ha.cf
コメントを外したり、記入したりなどするkeepalive 2 deadtime 30 warntime 10 initdead 120 udpport 694 ucast eth0 192.168.0.[2-3] # 相手のIPアドレス auto_failback on node lb01 node lb02 use_logd yes
/etc/ha.d/ へ配置するsudo cp ha.cf /etc/ha.d/
- /etc/ha.d/haresources の作成
これもテンプレートから
アクティブ系、IP、サービス名を指定
sudo cp /usr/share/doc/heartbeat/haresources.gz . sudo gzip -d haresources.gz sudo vi haresources
lb01 IPaddr::172.16.0.1/24 nginx
/etc/ha.d/ へ配置するsudo cp haresources /etc/ha.d/
- /etc/ha.d/authkeys の作成
これもテンプレートからsudo cp /usr/share/doc/heartbeat/authkeys . sudo vi authkeys
auth 3 3 md5 Hello!
/etc/ha.d/ へ配置し、root ユーザからのアクセスのみ許可するようにする (これしてなくて heartbeat 起動時に怒られた)sudo cp authkeys /etc/ha.d/ chmod 600 /etc/ha.d/authkeys
- lb01 -> lb02 の順で heartbeat を起動
sudo /etc/init.d/heartbeat start
- フェイルオーバーの試験とか
ifconfig とかでeth1:0 に サービス IP 172.16.0.1 が引き継がれていれば成功。
コメント
コメントを投稿