Linux-HA 高可用クラスタシステム(Pacemaker/Heartbeat)

Linux-HAとはLinux上で高可用クラスタシステムを構築できるオープンソースソフトウェアです。PacemakerとHeartbeatという2つのシステムから構成されています。この記事では、Linux-HAの使い方をご紹介します。

Pacemakerのインストール

$ sudo apt-get install pacemaker

Heartbeatの設定ファイル

Heartbeatでは、以下の4つの設定ファイルを用意する必要がある。

Heartbeatの設定ファイル
ファイル 説明
ha.cf クラスタ基本設定ファイル
cib.xml クラスタ詳細設定ファイル
authkeys ハートビート認証設定ファイル
logd.conf ログ出力設定ファイル

ha.cf

ha.cfは、クラスタノードやハートビートツウ人に関する設定などを記述するファイルである。

cib.xml

cib.xmlは、リソース監視やファイルオーバーポリシーに関する設定などを記述するファイルである。

authkeys

authkeysは、ハートビート通信の認証に関する設定を記述するファイルである。

logd.conf

logd.confは、ログの出力先やデバッグレベルに関する設定を記述するファイルである。

Pacemakerの起動

$ sudo /etc/init.d/heartbeat start

Pacemakerの停止

$ sudo /etc/init.d/heartbeat stop
Stopping High-Availavility services:

リソース設定をすべて削除したい場合は、すべてのサーバ上のPacemakerを停止して、すべてのサーバの/var/lib/heartbeat/crm/ディレクトリ内のファイルをすべて削除する。

Pacemakerのコマンド

コマンド 説明
crmmon クラスタの状態表示
crm_mon [-1|--one-shot] [-A|--show-node-attributs] [-f|--failcounts]
-1
--one-shot
クラスタ状態を1回だけ表示してコマンドを終了する。
-A
--show-node-attributs
ノード属性を表示する。
-f
--failcounts
リソースのフェイルカウントを表示する。
$ sudo crm_mon -A

Pacemakerのリソース設定

Pacemakerのリソース
リソース 説明
primitive すべてのリソース設定の最小単位。RAはまずprimitive設定することから始まる。
clone 同じ設定のリソースを複数のノードで動作させたい場合に使用する。primitive設定の後にclone化する。ネットワーク監視やディスク監視などで使用する。
group 複数のリソースをまとめてフェイルオーバーさせるために使用する。group内のprimitiveには起動、停止時の順序で記載する。
クラスタ全体の設定
名前 説明
no-quorum-policy 3サーバ以上の構成で、クラスタに参加する。ノード数が過半数に満たない場合の動作ポリシーを指定する。2サーバの場合はignoreを設定する。
stonith-enabled STONITH機能を有効にするかどうかを指定する。
resource-stickness リソース移動を固定する優先度を指定する。INFINITYを指定すると、稼働中のリソースは移動せず、自動フェイルバックなしの動作に相当する。
migration-threshold 故障を検知した場合に同一サーバでリソースの再起動を試みる回数+1を指定する。1なら1回故障発生でフェイルオーバーする。
rsc_defaults migration-threshold="1"

migration-thretholdはrsc_defaultsセクションだけでなく、リソースそれぞれに指定することもできる。この場合、「meta」キーワードが必要となる。

primitive prmApPostgreSQLDB ocf:heartbeat:pgsql \
  meta migration-threshold="3" \
  op start interval="0s" timeout="300s" on-fail="restart" \

rsc_defaultセクションに設定したmigration-thresholdが全体のデフォルト値となる。prmApPostgreSQLDBはmeta属性としてmigration-threshold=3が設定されている。この場合、rsc_defaultsセクションの値ではなく、meta属性の値が使用される。

リソース故障時のon-fail動作一覧
on-fail設定値 Pacemakerの動作
block 故障したリソースの管理を停止し、何もせず保守者が介在するまで待機する。
fence リソース故障が発生したサーバをSTONITHによって再帰動詞、リソースをほかのサーバへフェイルオーバーさせる。
ignore 何も処理を行わない。
stop 故障したリソースを停止し、他のサーバへフェイルオーバーさせない。
restart 故障したリソースをほかのサーバへフェイルオーバーさせる。

フェイルカウントのクリア

crm resource cleanup resource
$ sudo crm resource cleanup prmApPostgreSQLDB