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

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

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

はじめに

第3回では,Pacemakerの応用的な構築について紹介してきました。今回は,Pacemakerを運用してみよう!ということで,Pacemakerの保守運用の手順について2回に分けて紹介します。

今回保守運用を行う環境は,第2回で紹介されたリソース構成apache.crmファイル)に,第3回で紹介されたSTONITHリソースstonith-helper,ipmi,meatwareを設定してみました。apache+stonith.crmファイル)

図1 Pacemaker構成例

図1 Pacemaker構成例

まずは,Pacemakerの保守運用で役立つ2つのツールについて説明します。

crm_mon

crm_monはPacemakerが制御しているリソース状態や,インターコネクトLAN,ネットワークの状態を確認できるツールです。crm_monについては,第2回,第3回でも紹介されていましたが,保守運用に必要なモニタの表示の意味を説明します。

Pacemakerが稼動しているサーバでcrm_monコマンドに -f と -A のオプションをつけて実行します。-f オプションは,リソースの故障状態の表示を,-A オプションはインターコネクトLANの状態や,ネットワーク監視の状態を表示します。httpdリソースの監視処理で故障を検知した場合の出力例は以下のようになります。

Online: [ pm01 pm02 ]#サーバ状態表示

Resource Group: web
       vip (ocf::heartbeat:IPaddr2): Started pm02
       httpd (ocf::heartbeat:apache): Started pm02
Resource Group: grpStonith1        
       stonith1-1      (stonith:external/stonith-helper):      Started pm02
       stonith1-2      (stonith:external/ipmi):       Started pm02
       stonith1-3      (stonith:meatware):     Started pm02
Resource Group: grpStonith2
      stonith2-1      (stonith:external/stonith-helper):      Started pm01
      stonith2-2      (stonith:external/ipmi):       Started pm01
      stonith2-3      (stonith:meatware):     Started pm01
Clone Set: clone_ping
      Started: [ pm01 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:
    httpd: migration-threshold=1 fail-count=1
* Node pm02:#故障回数表示

Failed actions:
    httpd_monitor_10000 (node=pm01, call=78, rc=7, status=complete): not running#故障内容表示
サーバ状態表示
クラスタシステムを構成しているサーバ名と,Pacemakerの稼動状態が表示されます。Pacemakerが稼動しているサーバは"Online"と表示され,停止しているサーバは"OFFLINE"と表示されます。
リソース状態表示
Pacemakerが制御しているリソースの状態が表示されます。Resource Groupとして登録したリソースは,"Started サーバ名"と表示され,リソース稼動状態と稼働中のサーバ名がわかります。Cloneとして登録したリソースは,"Started: [ pm01 pm02 ]"などと表示され,リソース稼動状態と稼働中のサーバ名がわかります。
属性情報表示
インターコネクトLANの状態,ネットワーク監視の状態などが表示されます。Pacemakerでは,インターコネクトLANやネットワークの監視において,表1のように監視対象ごとにそれぞれ属性名と属性値を持っており,Pacemakerはそれぞれの属性値から監視先の正常/異常を判断しています。

表1 属性情報

監視先属性名(表示形式)属性値
正常値異常値
インターネットコネクトLANサーバ名-
インターフェース名
updead
ネットワークdefault_ping_set1000
 スプリットブレインなどで相手のサーバを一切認識できなくなったり,Pacemakerが停止しているサーバの状態については,表示されなくなります。
故障回数表示
リソースの故障状態が表示されます。リソースの故障を検知すると,故障が発生したサーバと故障リソースの情報を表示します。故障回数表示に表示される故障情報は,サーバでリソース故障が起きたというフラグにも使用されており,そのフラグのことをフェイルカウントと呼びます。また,migration-threshold が"1"に設定されているため,1回の故障でフェイルオーバが発生していることがわかります。⁠migration-thresholdについては第2回を参照)
故障内容表示
故障回数表示で表示されたリソースの故障内容として,故障オペレーション(start/monitor/stop)⁠故障サーバ名,リターンコード(rc)が表示されます。ただし,故障内容表示はリソースの故障が発生した場合のみ表示されます。

pm_logconv

Pacemaker標準のログは出力が多く,初めて見る人にとっては,少しわかりにくいログになっています。そこで,Linux-HA Japanのオリジナルパッケージであるpm_logconvを使用すると,運用上必要なログだけを出力することができます。また,pm_logconvを使用するとフェイルオーバが発生した際に,"Start Fail-over"のログが出力されるようになるため,Pacemaker稼動中にリソースのフェイルオーバが発生したかどうかを簡単に知ることができます。

pm_logconvを使用するには,Pacemakerのリポジトリパッケージからyumでpm_logconvのパッケージを追加インストールし,起動設定(/etc/inittab)と動作設定(/etc/pm_logconv.conf)を行います。

追加インストール

# yum -c /tmp/pacemaker-1.0.10-1.4.1.el5.x86_64.repo/pacemaker.repo install pm_logconv-hb

起動設定

# vi /etc/inittab
  ……
 logc:2345:respawn:/usr/share/pacemaker/pm_logconv/pm_logconv.py  ← /etc/inittabに設定追加

inittabに追加した設定を反映させるために,以下のコマンドを実行します。

# telinit q

動作設定

# vi /etc/pm_logconv.conf
  ……
 [Settings]
 ha_log_path = /var/log/ha-log    ← 第2回でsyslog.confの最後に追記したPacemakerのログファイルパスを設定
 output_path = /var/log/pm_logconv.out	← pm_logconvのログ出力ファイルパスを設定
 #hostcache_path = /var/lib/heartbeat/hostcache
 #syslogformat = True
 #reset_interval = 60
 attribute_pingd = default_ping_set, lt, 100 ← ネットワーク監視を行う場合コメント(#)をはずす
 #attribute_diskd = diskcheck_status, eq, ERROR
 #attribute_diskd_inner = diskcheck_status_internal, eq, ERROR
 #logconv_logfacility = daemon
 act_rsc = vip httpd ← サービスリソースの最上位と最下位のリソースIDを設定
  ……

設定ファイルの変更を行ったので,再度読み込ませるため以下のコマンドでpm_logconvを再起動します。

# /usr/share/pacemaker/pm_logconv/pm_logconv.py -k

例としてリソース起動時のログを比較してお見せします。

Pacemaker標準ログ

Mar 30 11:51:04 pm01 lrmd: [29104]: info: rsc:httpd:39: start
Mar 30 11:51:05 pm01 crmd: [29107]: info: process_lrm_event: LRM operation httpd_start_0 (call=39, rc=0, cib-update=49, confirmed=true) ok

pm_logconvのログ(pm_logconv.out)

Mar 30 11:51:04 pm01 info: Resource httpd tries to start.
Mar 30 11:51:05 pm01 info: Resource httpd started. (rc=0)

Pacemaker標準ログでは,プロセスIDやデーモンの情報が出力されていますが,pm_logconv.outでは,リソースの起動に関する情報のみが出力されており,見た目にもわかりやすいことがご理解いただけたのではないでしょうか。

それでは,実際にこの2つのツールを使って保守運用を行っていきましょう!!

著者プロフィール

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

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

コメント

コメントの記入