Linux-HAとはLinux上で高可用クラスタシステムを構築できるオープンソースソフトウェアです。PacemakerとHeartbeatという2つのシステムから構成されています。この記事では、Linux-HAの使い方をご紹介します。
$ sudo apt-get install pacemaker
Heartbeatでは、以下の4つの設定ファイルを用意する必要がある。
ファイル | 説明 |
---|---|
ha.cf | クラスタ基本設定ファイル |
cib.xml | クラスタ詳細設定ファイル |
authkeys | ハートビート認証設定ファイル |
logd.conf | ログ出力設定ファイル |
ha.cfは、クラスタノードやハートビートツウ人に関する設定などを記述するファイルである。
cib.xmlは、リソース監視やファイルオーバーポリシーに関する設定などを記述するファイルである。
authkeysは、ハートビート通信の認証に関する設定を記述するファイルである。
logd.confは、ログの出力先やデバッグレベルに関する設定を記述するファイルである。
$ sudo /etc/init.d/heartbeat start
$ sudo /etc/init.d/heartbeat stop
Stopping High-Availavility services:
リソース設定をすべて削除したい場合は、すべてのサーバ上のPacemakerを停止して、すべてのサーバの/var/lib/heartbeat/crm/ディレクトリ内のファイルをすべて削除する。
コマンド | 説明 |
---|---|
crmmon | クラスタの状態表示 |
crm_mon [-1|--one-shot] [-A|--show-node-attributs] [-f|--failcounts]
$ sudo crm_mon -A
リソース | 説明 |
---|---|
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設定値 | Pacemakerの動作 |
---|---|
block | 故障したリソースの管理を停止し、何もせず保守者が介在するまで待機する。 |
fence | リソース故障が発生したサーバをSTONITHによって再帰動詞、リソースをほかのサーバへフェイルオーバーさせる。 |
ignore | 何も処理を行わない。 |
stop | 故障したリソースを停止し、他のサーバへフェイルオーバーさせない。 |
restart | 故障したリソースをほかのサーバへフェイルオーバーさせる。 |
フェイルカウントのクリア
crm resource cleanup resource
$ sudo crm resource cleanup prmApPostgreSQLDB