CLUSTERPROでVMware ESXのHW障害をトリガーに仮想マシン上の業務をフェイルオーバさせる方法
[概要]
本書では、VMwareサービスコンソール上にCLUSTERPRO X Single Server Safe、ゲストOS上にCLUSTERPRO Xを構築し、それぞれ連携させることで、堅牢な仮想化環境ソリューションを構築します。
[使用した製品のバージョン]
MIRACLE CLUSTERPRO X2.1
- Asianux Server 3 ==MIRACLE LINUX V5 SP3
- clusterpro-2.1.5-1
VMware ESX4.0
- clusterprosss-2.1.5-1
[ 検証内容]
VMware ESX4.0のサービスコンソールにはCLUSTERPRO Single Server Safe(以下SSS) または
CLUSTERPRO X2.1 をインストールすることができます。
CLUSTERPROのクラスタ間処理要求機能を使い、VMware ESXのサービスコンソール-GuestOS間で連携を行い、物理マシン のHW障害からGuestOS上の業務までの障害に対応できるよう設定します。
本検証ではサービスコンソール上にCLUSTERPRO SSS、GuestOSにCLUSTERPROをインストールします。
物理サーバのHW障害時はサービスコンソールにインストールされたCLUSTERPRO SSSがGuestOS上のCLUSTERPROにフェイルオーバのリクエストを送ります。リクエストを受けたGuestOS上で業務が待機系にフェイルオーバします。
[環境構築]
なお、本手順ではすでに物理サーバにVMware ESXがインストールされ、仮想マシンが作成されているものとします。
この際、クラスタ間処理要求機能を使って、サービスコンソール上のCLUSTERPRO SSSから仮想マシン上のCLUSTERPROへ処理要求を出せるよう、設定を行います。
# mkdir /opt/nec/clusterpro/work/clptrnreq
以下は、VMware ESXサービスコンソール上のCLUSTERPRO SSSからフェイルオーバリクエストを受信したメッセージを出力させるスクリプトです。
#!/bin/bash
/usr/sbin/clplogcmd -m "Receive Failover Request from ESX" -l warn
ここでは以下のように設定しました。
クラスタシステム設定
|
||
クラスタ構成
|
クラスタ名
|
VMcluister
|
サーバ数
|
2
|
|
1台目のサーバ
|
サーバ名
|
CLP-1
|
OS
|
Asianux Server 3
|
|
パブリックのIPアドレス
|
10.2.102.51
|
|
インタコネクトのIPアドレス
|
192.168.10.1
|
|
10.2.102.51
|
||
2台目のサーバ
|
サーバ名
|
CLP-2
|
OS
|
Asianux Server 3
|
|
パブリックのIPアドレス
|
10.2.102.52
|
|
インタコネクトのIPアドレス
|
192.168.10.2
|
|
10.2.102.52
|
-
グループリソース設定グループ名failoverfloating ip resourceグループリソース名fipIPアドレス10.2.102.50活性リトライ5回フェイルオーバー1回活性最終動作何もしない(次のリソースを活性しない)非活性リトライ0回非活性最終動作クラスタデーモン停止とOSシャットダウンmirror disk resourceグループリソース名mdマウントポイント/dataデータパーティション/dev/sda4クラスタパーティション/dev/sda3ディスクデバイス名/dev/sdaファイルシステムext3活性リトライ0回フェイルオーバー1回活性最終動作何もしない(次のリソースを活性しない)非活性リトライ0回非活性最終動作クラスタデーモン停止とOSシャットダウンexecute resourceグループリソース名exec活性リトライ0回フェイルオーバー1回活性最終動作何もしない(次のリソースを活性しない)非活性リトライ0回非活性最終動作クラスタデーモン停止とOSシャットダウン
-
モニタリソース設定user mode monitor
(自動登録)モニタソース名userw監視方法softdogNIC Link Up/Down
monitor
(全物理NICごと)モニタリソース名miiw-eth0監視デバイスeth0回復対象vmcluster活性リトライ0回フェイルオーバー0回活性最終動作何もしないNIC Link Up/Down
monitor
(全物理NICごと)モニタリソース名miiw-eth1監視デバイスeth1回復対象vmcluster活性リトライ0回フェイルオーバー0回活性最終動作何もしないmirror disk monitor
モニタリソース名mdw1ミラーディスクリソースmd回復対象VMcluster活性リトライ0回フェイルオーバー0回活性最終動作何もしないmirror disk
connect monitor
モニタリソース名mdnw1ミラーディスクリソースmd回復対象VMcluster活性リトライ0回フェイルオーバー0回活性最終動作何もしない
3.VMware ESXサービスコンソール上にCLUSTERPRO SSSの構築
VMware ESXのサービスコンソールにCLUSTERPRO SSSをインストールします。
なお、GuestOSの障害対策はGuestOS上のCLUSTERPROで行うため、仮想マシン自体はCLUSTERPRO SSSの管理外とします。
VMware ESX4.0のサービスコンソールはRHEL5-x86_64に相当するため、Linux版のCLUSTERPRO SSSをインストールすることができます。
# rpm -ivh clusterprosss-2.1.5-1.x86_64.rpm
VMware ESXではデフォルトではFireWallが有効になっているため、CLSUTERPRO SSSを利用する上で必要なポートを開放します。
# esxcfg-firewall -o 29003,tcp,in,clpwebmgr
# esxcfg-firewall -o 29002,tcp,out,clptrnsrv
VMware ESXではuserw(user空間監視)でipmi、softdogを指定しているとエラーとなります。
VMware ESXハイパーバイザ上のCLUSTERPRO SSSのモニタリソースが反応したら、GuestOS上のCLUSTERPROにフェイルオーバリクエストを発行し、GuestOS上で動作している業務を待機系にフェイルオーバさせます。
#! /bin/sh
#***********************************************
#* preaction.sh *
#***********************************************
*****************************************
ulimit -s unlimited
# ホストマシンが起動する仮想マシンのリソース名を記述
CLPRSC="exec"
# カンマ区切りで各ホストマシンの IP を記述
CLPIP="10.2.102.51,10.2.102.52"
/usr/sbin/clplogcmd -m "Send Failover Request to CLP-1" -l warn
/usr/sbin/clptrnreq -t EXEC_SCRIPT -h $CLPIP -s failover_message.sh
/opt/nec/clusterpro/bin/clptrnreq -t GRP_FAILOVER -r $CLPRSC -h $CLPIP
exit 0
以上で設定は完了です。
クラスタシステム設定
|
||
クラスタ構成
|
クラスタ名
|
bay7-esx
|
サーバ数
|
1
|
|
1台目のサーバ
|
サーバ名
|
bay7-esx
|
OS
|
VMware ESX 4
|
|
パブリックのIPアドレス
|
10.2.102.17
|
-
モニタリソース設定user mode monitor
(自動登録)モニタソース名userw監視方法keepaliveNIC Link Up/Down
monitor
(全物理NICごと)モニタリソース名miiw-vmnic0監視デバイスvmnic0回復対象bay7-esx活性リトライ0回活性最終動作何もしないNIC Link Up/Down
monitor
(理NICごと全物)モニタリソース名miiw-vmnic1監視デバイスvmnic1回復対象bay7-esx活性リトライ0回最終活性動作何もしないcustom monitor
(必要に応じて)モニタリソース名genw-CLP1監視方法□ユーザアプリケーション■スクリプトファイルGenw.sh監視スクリプト前述の仮想マシン監視スクリプト監視タイプ■同期□非同期ログ出力先正常な戻り値0回復対象bay7-esx活性リトライ0回活性最終動作何もしないcustom monitor
(必要に応じて)モニタリソース名genw-CLP2監視方法□ファイルGenw.sh監視スクリプト前述の仮想マシン監視スクリプト監視タイプ■ログ出力先正常な戻り値0回復対象bay7-esx活性リトライ0回活性最終動作何もしない
本検証では、VMware ESXがインストールされた物理マシンのNIC(vmnic1) を抜き、CLUSTERPRO SSSのNICLink Up/Down monitorがリンクダウンを検知したら、GuestOS上で動作しているApacheをフェイルオーバさせます。
VMware ESXサービス近ソース上のCLUSTERPRO SSS
2010/09/24 21:18:18 bay7-esx rm Detected an error in monitoring miiw-vmnic1. (20 : NIC vmnic1 link was down.) ←vmnic1リンクダウン検知
2010/09/24 21:18:18 bay7-esx logcmd Send Failover Request to CLP-1 ←最終動作前のスクリプト実行
GuestOS上のMIRACLE CLUSTERPRO
2010/09/24 21:18:18 CLP-1 logcmd Receive Failover Request from ESX ←メッセージ出力
2010/09/24 21:18:18 CLP-2 logcmd Receive Failover Request from ESX ←メッセージ出力
2010/09/24 21:18:19 CLP-1 apisv There was a request to move group(failover) from the clpgrp command(IP=::ffff:192.168.10.101). ←フェイルオーバ開始
2010/09/24 21:18:19 CLP-1 rc Stopping group failover has started.
2010/09/24 21:18:19 CLP-2 rc Moving group failover has started.
2010/09/24 21:18:31 CLP-1 rc Stopping group failover has completed.
2010/09/24 21:18:31 CLP-2 rc Activating group failover has started.
2010/09/24 21:18:42 CLP-2 rc Activating group failover has completed.
2010/09/24 21:18:42 CLP-2 rc Moving group failover has completed. ←フェイルオーバ完了
本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、 全ての環境での動作を保証するものではありません。