Pacemakerでかんたんクラスタリング体験してみよう!

第5回 Pacemakerを運用してみよう![保守運用編(2)]

この記事を読むのに必要な時間:およそ 4 分

前回の[保守運用編(1)]では,保守運用で役立つ2つのツールと,ネットワーク故障が起こった場合どうなるの?について説明してきました。続編である今回は,リソースが故障した場合どうなるの?と,Pacemakerのプロセス故障が起きた場合どうなるの?を説明していきます。それではさっそく参りましょう!

リソースが故障した場合どうなるの?

Pacemakerで想定されるリソースの故障は,起動処理が失敗したときのstart故障,監視処理で故障を検知したときのmonitor故障,停止処理が失敗したときのstop故障の3つのパターンがあります。それぞれの故障が発生した時,Pacemakerは表1にまとめたon-fail設定に応じて動作します。今回の環境では,startとmonitorにはon-failを設定していないため,デフォルト値である"restart"が適用されます。stopには,第3回でも紹介されたように停止処理に失敗したときにSTONITHを実行させるため,"fence"を設定しています。

表1 リソース故障時のon-fail動作一覧

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

ここでは,リソースのmonitor故障検知時の動作について説明します。Pacemakerはリソースのmonitor故障を検知した場合は,故障が発生したサーバにフェイルカウント(フラグ)を立て,リソースのフェイルオーバ処理を実施します。

図1 リソース故障

図1 リソース故障

故障を発生させてみよう

では,実際にリソース故障を発生させて,Pacemakerの動きを見てみましょう。今回はリソース故障を擬似的に起こすため,Pacemaker稼働中にhttpdを停止します。

# /etc/init.d/httpd stop

httpd停止後crm_monコマンドを実行すると,pm01でhttpdのmonitor故障を検知したため,故障回数と故障内容が表示され,リソースがpm02にフェイルオーバしていることが確認できます。

Online: [ pm01 pm02 ]

 Resource Group: web
       vip (ocf::heartbeat:IPaddr2): Started pm02
     httpd (ocf::heartbeat:apache): Started pm02
                       省略
 Migration summary:
 
 Node pm01:
    httpd: migration-threshold=1 fail-count=1
 * Node pm02:

 Failed actions:
    httpd_monitor_10000 (node=pm01, call=76, rc=7, status=complete): not running

このとき,pm01のpm_logconv.outにはhttpdのリソースが故障したログが出力されます。

Mar 30 13:08:51 pm01 ERROR: Resource httpd does not work. (rc=7)

復旧してみよう

復旧では,pm01で発生したリソース故障のフェイルカウント(フラグ)を削除し,再びpm01でもリソースが稼動できるようにします。フェイルカウントの削除には"crm resource cleanup [故障リソース名] [故障発生サーバ名]"を実行します。このコマンドはクラスタ内のどのサーバからでも実行可能です。

# crm resource cleanup httpd pm01
Cleaning up httpd on pm01
Waiting for 2 replies from the CRMd..

コマンド実行後のモニタ表示では,故障回数と故障内容の表示が消えていることが確認できます。この状態になればリソースをpm01に移動させることができます。

Online: [ pm01 pm02 ]

 Resource Group: web
       vip (ocf::heartbeat:IPaddr2): Started pm02
       httpd (ocf::heartbeat:apache): Started pm02
                       省略  
   Node Attributes:
   * Node pm01:
     + default_ping_set                  : 100
     + pm02-eth1                         : up
     + pm02-eth2                         : up
   * Node pm02:
     + default_ping_set                  : 100
     + pm01-eth1                         : up
     + pm01-eth2                         : up
                       省略
 Migration summary:
  * Node pm01:
  * Node pm02:

リソースを稼動していたサーバに戻したい場合は,以下のようにcrm resource moveコマンドを使ってリソースをpm02からpm01に移動します。

# crm resource move web pm01 force

コマンド実行後のモニタ表示では,以下のようにリソースがpm02からpm01に移動していることが確認できます。

Online: [ pm01 pm02 ]

 Resource Group: web
       vip (ocf::heartbeat:IPaddr2): Started pm01
       httpd (ocf::heartbeat:apache): Started pm01

pm01でリソースが稼動していることを確認した上で,以下のコマンドを実行します。

# crm resource unmove web

著者プロフィール

岡和田拓也(おかわだたくや)

株式会社DTS所属。Linux-HA Japanプロジェクトには2009年から参加。Pacemakerの検証を担当しバグを発掘中。バイクと牛乳とアイスとチョコレートには目がない。

コメント

コメントの記入