2010年10月20日水曜日

Red Hat Cluster Suite について


Red Hat Cluster は下記の構成モジュールが連携して動作する。
各モジュールの役割を理解しておかないとクラスタの全体像が見えてこない。
それぞれの役割をまとめ、また本クラスタの標準的な操作手順を記載しておく。




【構成モジュール】


Resource Group Manager(RGManager)
クラスタで稼働するサービスを管理する

・clurgmgrd プロセス
リソースグループ(クラスタサービス)マネージャデーモン


Cluster Manager(CMan)
クラスタのコアコンポーネント

・groupd プロセス
openais/cman と dlm_controld/gfs_controld/fenced の間にインターフェイスを与える為に、
cman init スクリプトで開始されるデーモン
このプロセスが停止すると、障害の検知ができなくなり、fencedが動作しなくなる

・dlm_controld プロセス
カーネル内の dlm を管理するための cman init スクリプトで開始されるデーモン

・gfs_controld プロセス
カーネル内の gfs を管理するための cman init スクリプトで開始されるデーモン

dlm か gfsどちらかを選択するのが普通だろう
両者利用する必要はない


Cluster Configuration System(CCS)
クラスタの構成情報を管理する

・ccsd プロセス
全てのクラスタノードで稼働し、クラスタソフトウェアに設定ファイルデータを提供するデーモン


Quorum
クラスタがスプリットブレインになるのを防ぐため、処理の整合性をとる

・qdiskd プロセス
クラスタ Quorum ディスクデーモン。


Fence
フェールオーバ処理の後に、障害発生サーバを物理的に停止させる

・fenced プロセス
I/O フェンシング デーモン

・fence_apc プロセス
APC パワースイッチ用の フェンス エージェント

例えば、障害発生時の動作としては、
正常サーバの fenced プロセスが障害サーバの fence_apc プロセスにサーバ停止処理を促す

HPのサーバを使っている場合は、下のプロセスを起動させることもあるだろう
・fence_ilo プロセス
HP Integrated Lights Out カード用の I/O フェンシング エージェント





【クラスタ操作オペレーション】
クラスタが稼動するための条件として、
先に述べたモジュールが起動していることが必要である

一般的に、サービスリソースを管理する起動スクリプトと、
それ以外のクラスタ機能のモジュール用スクリプトを分けるのが普通だろうか


/etc/init.d/cman
CMan、CCS、Quram、Fence コンポーネント用

/etc/init.d/rgmanager
RGManager コンポーネント用



◆ クラスタの状態確認
# clustat
Member Status: Quorate
 Member Name     ID            Status
 ------ ----     ----          ------
 node1           1 Online,     rgmanager
 node2           2 Online,     Local, rgmanager
 /dev/quorum     0 Online,     Quorum Disk


 Service Name         Owner (Last)     State
 ------- ----         ----- ------     -----
 service:SERVICE1     node1            started
 service:SERVICE2     node2            started



◆ クラスタの起動
# /etc/init.d/cman start
# /etc/init.d/rgmanager start



◆ クラスタの停止
# /etc/init.d/rgmanager stop
# /etc/init.d/cman stop



◆ サービスリソースの起動
# clusvcadm -e サービス名 -m メンバ(ノード)名
-e : enable
-m : member



◆ サービスリソースの停止
# clusvcadm -d サービス名 -m メンバ(ノード)名
-d : disable
-m : member



◆ 手動フェールオーバ
# clusvcadm -r サービス名 -m メンバ(ノード)名
-r : relocate
-m オプションをつけなければ、2台構成であれば対向ノードへ移る


◆ QuorumDiskをどちらが握っているか確認するコマンド
# mkqdisk -d -L
-d : debug
-L : List