crmコマンドを用いたPacemaker のリソース設定方法
Pacemaker で制御するリソースを設定するには、crm コマンドを使用します。以下にcrmコマンドの基本的な使い方を記述します。前提として、CentOS 5上にPacemakerのインストールが完了し、Pacemakerが起動しているとします。クラスタ制御部は、Corosync、Heartbeat どちらでも構いません。
まず、crm コマンドを起動します。(以下太字が実際に入力する部分です)
[root@pm01 ~]# crm crm(live)#
リソースの設定モードに入ります。
crm(live)# configure crm(live)configure#
現在の設定をshowコマンドで確認します。何も設定をしていないので、表示されるのはノード名(サーバ名)と、バージョン、使用しているクラスタ制御部名(以下の例ではHeartbeat3を使用)だけです。
crm(live)configure# show node $id="0c140f90-7de3-438f-b1b5-3b9722bbde21" pm01 node $id="62b25071-2d16-4e9e-a323-af21616d5269" pm02 property $id="cib-bootstrap-options" \ dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \ cluster-infrastructure="Heartbeat"
では、リソースをPacemakerに追加していきます。
PacemakerにはあらかじめApacheやPostgreSQL, Tomcatといったアプリケーションを制御するためのスクリプト(リソースエージェント(RA))をはじめ、ファイルシステム、Ping監視といったRAが用意されています。どのようなRAが存在するかは、/usr/lib/ocf/resource.d/heartbeat/ ディレクトリを覗いてみてください。
ここでは、Dummyという「何もしない」リソースを設定してみます。 以下ではタイムアウト値や監視間隔の設定をしていますが、何もしないリソースなので、あまり意味はありません。あくまで参考です。一つのリソースを定義する場合、1行で記述する必要がありますので、行が長くなる場合は”" で改行してください。
crm(live)configure# primitive dummy-resource ocf:pacemaker:Dummy \ ← "dummy-resource"は任意の文字列(ID)
> op start interval="0s" timeout="90s" \← dummy-resource の起動時のタイムアウト値の設定
> op monitor interval="3s" timeout="20s" \ ← dummy-resource の監視間隔と、タイムアウト値の設定
> op stop interval="0s" timeout="100s" ← dummy-resource の停止時のタイムアウト値の設定
PacemakerにはSTONITHという機能があり、制御不能のサーバを強制的に電源OFFできます。 デフォルトでSTONITHが有効になっていますが、今回はDummyリソースのみの設定例のため、STONITHの設定は省略します。 ただし、設定を行わないとエラーになりますので、STONITH機能を明示的にOFFにします。 ※実際のサービス環境では、STONITH を使用することを強く薦めます。 また、今回は2台のサーバしか使用しないので、クォーラムをignoreに設定します。 (クォーラムがよくわからない場合、”2台の時はignoreを使用する” は、おまじないと思ってください ^^) (STONITH, クォーラムを勉強したい場合は、この辺りを参考に。 /wp/archives/604 )
crm(live)configure# property $id="cib-bootstrap-options" \ > stonith-enabled="false" \ > no-quorum-policy="ignore"
上記を打ち込んでもすぐには反映されません。まずは、設定した内容を確認します。 ※showで表示される内容を別のテキストファイルに保存しておくことで、同じ設定を再現できます。
crm(live)configure# show node $id="0c140f90-7de3-438f-b1b5-3b9722bbde21" pm01 node $id="62b25071-2d16-4e9e-a323-af21616d5269" pm02 primitive dummy-resource ocf:pacemaker:Dummy \ op start interval="0s" timeout="90s" \ op monitor interval="3s" timeout="20s" \ op stop interval="0s" timeout="100s" property $id="cib-bootstrap-options" \ dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \ cluster-infrastructure="Heartbeat" \ stonith-enabled="false" \ no-quorum-policy="ignore"
設定を反映します。
crm(live)configure# commit
別のターミナルを開き、Pacemakerの状態を確認します。設定したdummy-resource がpm01上で起動したことが確認できます。
[root@pm01 ~]# crm_mon
============
Last updated: Mon Sep 6 10:10:10 2010
Stack: Heartbeat
Current DC: pm02 (62b25071-2d16-4e9e-a323-af21616d5269) - partition with quorum
Version: 1.0.9-89bd754939df5150de7cd76835f98fe90851b677
2 Nodes configured, unknown expected votes
1 Resources configured.
===========
Online: [ pm01 pm02 ]
dummy-resource (ocf::pacemaker:Dummy): Started pm01
今回はDummyのリソースなので故障することはありません。 そこで、pm01のサーバの電源を落としてみてください。pm02上でcrm_monを見ると、pm02 上にdummy-resourceがフェイルオーバーしていることを確認できます。
[root@pm02 ~]# crm_mon ============ Last updated: Mon Sep 6 10:10:11 2010 Stack: Heartbeat Current DC: pm02 (62b25071-2d16-4e9e-a323-af21616d5269) - partition with quorum Version: 1.0.9-89bd754939df5150de7cd76835f98fe90851b677 2 Nodes configured, unknown expected votes 1 Resources configured. =========== Online: [ pm02 ] OFFLINE: [ pm01 ] dummy-resource (ocf::pacemaker:Dummy): Started pm02
設定を完全にすべて消したい場合は、全てのサーバ上のPacemakerを停止し、全てのサーバの/var/lib/heartbeat/crm/ ディレクトリ内のファイルを全て削除してください。
[root@pm01 ~]# /etc/init.d/heartbeat stop または /etc/init.d/corosync stop Stopping High-Availability services: [ OK ] [root@pm02 ~]# /etc/init.d/heartbeat stop または /etc/init.d/corosync stop Stopping High-Availability services: [ OK ] [root@pm01 ~]# rm -f /var/lib/heartbeat/crm/* [root@pm02 ~]# rm -f /var/lib/heartbeat/crm/*
以上簡単な設定例、動作例でした。
実際には、STONITHを設定したり、アプリケーションの場合は設定ファイルの場所や監視方法を設定したりする必要がありますが、詳細についは、PacemakerのマニュアルやRAの説明を参考にしてください。
また、外部サイトにも、構築や運用例の記事を寄稿していますので、参考にしてみてください。