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 SSSGuestOSCLUSTERPROをインストールします。

 

GuestOS上のSW障害にはGuestOSにインストールされたCLUSTERPROが障害を検知し、待機系へ業務をフェイルオーバします。

 

物理サーバのHW障害時はサービスコンソールにインストールされたCLUSTERPRO SSSGuestOS上のCLUSTERPROにフェイルオーバのリクエストを送ります。リクエストを受けたGuestOS上で業務が待機系にフェイルオーバします。

 

上記のような構成をとることによって、物理サーバから仮想マシン上の業務まで障害を素早く検知し、速やかに業務をフェイルオーバ、業務を継続することが可能となります。

 

 

 

[環境構築]

環境構築方法を示します。

なお、本手順ではすでに物理サーバにVMware ESXがインストールされ、仮想マシンが作成されているものとします。

 

1.仮想マシンへGuestOSのインストール
仮想マシンにGuestOSをインストールします。
OSインストール後、VMwareToolsをインストール/設定を行ってください。

 

2.GuestOS上にCLUSTERPROの構築
GuestOS上にCLUSTERPROを構築します。

 

この際、クラスタ間処理要求機能を使って、サービスコンソール上のCLUSTERPRO SSSから仮想マシン上のCLUSTERPROへ処理要求を出せるよう、設定を行います。

 

GuestOS上にインストールされた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

 

 


グループリソース設定
グループ名
failover
floating ip resource
グループリソース名
fip
IPアドレス
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
監視方法
softdog

NIC 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ではuserwuser空間監視)でipmisoftdogを指定しているとエラーとなります。

そのため、userwを利用する場合は監視方法を[keepalive]に変更します。
 

 

 

クラスタ間処理要求の設定を行います。

VMware ESXハイパーバイザ上のCLUSTERPRO SSSのモニタリソースが反応したら、GuestOS上のCLUSTERPROにフェイルオーバリクエストを発行し、GuestOS上で動作している業務を待機系にフェイルオーバさせます。

 

モニタリソースの[異常検出]タブで[最終動作前にスクリプトを実行する]にチェックを入れ、[設定]を選択します。
 

 

 

 
ここで、モニタリソース反応時に実行するスクリプトを登録します。

 

ここでは以下のようなスクリプトを実行しました。

 

preaction.sh

#! /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
監視方法
keepalive

NIC 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 SSSNICLink 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.フェイルオーバ完了

 

上記のように正しくフェイルオーバリクエストが送信されて、仮想マシン上で業務がフェイルオーバされることを確認できました。

 

 

 

 

 

[注意事項]

 

本ドキュメントの内容は、予告なしに変更される場合があります。

本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、 全ての環境での動作を保証するものではありません。

本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、
弊社はその損害についての責任を負いません。あくまでお客様のご判断にてご使用ください。

 

VMware上でのCLUSTERPRO製品の販売、構築につきましては以下にご相談ください。