はじめに
第1回では、
全体の流れは次の通りです。
- Pacemakerのインストール
- クラスタ制御機能
(Heartbeat) の設定 - リソース制御機能
(Pacemaker) の設定
クラスタ制御機能にはCorosyncとHeartbeatバージョン3を選択できますが、
マシン環境を準備できる方は、
CPU数 | 1 |
メモリ | 1GB |
ディスク | 10GB |
NIC数 | 3 |
OS | CentOS5. |
説明の都合上、
ネットワークアドレス /ネットマスク長 | 用途 | 仮想IP | pm01のIPアドレス | pm02のIPアドレス |
---|---|---|---|---|
192. | サービスLAN | 192. | 192. | 192. |
192. | インターコネクトLAN | - | 192. | 192. |
192. | インターコネクトLAN | - | 192. | 192. |
NICは3つ使用します。1つはサービス提供用、
作業はrootユーザで行います。sshでリモート作業する場合には、

Pacemakerのインストール
第1回でPacemakerは複数のコンポーネントの組み合わせとして提供されるという話をしました。そこで、

Linux-HA Japan
この後、
# tar zxvf pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz -C /tmp # yum -c /tmp/pacemaker-1.0.10-1.4.1.el5.x86_64.repo/pacemaker.repo install pacemaker heartbeat pm_extras
オリジナルパッケージpm_
サーバpm02にもリポジトリパッケージを展開し、
# gzip -cd pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz | ssh pm02 tar xvf - -C /tmp # ssh pm02 yum -c /tmp/pacemaker-1.0.10-1.4.1.el5.x86_64.repo/pacemaker.repo -y install pacemaker heartbeat pm_extras
Pacemakerの自動起動をオフにします。
# chkconfig --level 2345 heartbeat off # ssh pm02 chkconfig --level 2345 heartbeat off
Pacemakerの自動起動は、
クラスタ制御機能(Heartbeat)の設定
設定は、
ha.cf
Heartbeatの設定は、 /etc/
# cat > /etc/ha.d/ha.cf <<EOF pacemaker on debug 0 udpport 694 keepalive 2 warntime 7 deadtime 10 initdead 10 logfacility local1 bcast eth1 bcast eth2 node pm01 node pm02 watchdog /dev/watchdog respawn root /usr/lib64/heartbeat/ifcheckd EOF
主な設定項目の簡単な意味は次の通りです。
- pacemaker:リソース制御にPacemakerを使用するかどうか
- udpport:インターコネクト通信で使用するudpポート
- keepalive:インターコネクト通信の送信間隔
(秒) - deadtime:インターコネクト通信途絶後に故障と判断するまでの時間
(秒) - initdead:初期起動時に他のサーバの起動を待つ時間
(秒) - logfacility:syslog経由でログを出力するときのファシリティ指定
- bcast:インターコネクト通信
(ブロードキャスト) に使用するデバイスの指定 - node:クラスタに参加するサーバ名を指定
- respawn:起動するサブプロセスの指定
respawnで指定しているifcheckdはpm_
authkeys
次に、
# cat > /etc/ha.d/authkeys <<EOF auth 1 1 sha1 secret EOF
このファイルはrootのみにread権限を与えてください。
# chmod 0600 /etc/ha.d/authkeys
syslog.conf
次に、syslogdの設定を変更します。これは必須ではありませんが、Pacemakerのログは多めなので、ログファイルを分けたほうが望ましいです。/etc/syslog.confをエディタで開き、下記の箇所を変更します。
変更前
*.info;mail.none;authpriv.none;cron.none /var/log/messages
変更後
*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages
また、
local1.info /var/log/ha-log
以上の変更後/etc/
# /etc/init.d/syslog restart
pm02への設定反映
以上の作業を、
# scp /etc/ha.d/{ha.cf,authkeys} pm02:/etc/ha.d # ssh pm02 chmod 0600 /etc/ha.d/authkeys # scp /etc/syslog.conf pm02:/etc # ssh pm02 /etc/init.d/syslog restart
Pacemakerの起動
では、
# /etc/init.d/heartbeat start # ssh pm02 /etc/init.d/heartbeat start
クラスタの状態を確認するには、
# crm_mon -A
初めて起動した場合には、
============ Last updated: Fri Mar 18 22:37:14 2011 Current DC: NONE 0 Nodes configured, unknown expected votes 0 Resources configured. ============ Node Attributes:
しばらく待つと、
============ Last updated: Fri Mar 18 22:31:07 2011 Stack: Heartbeat Current DC: pm01 (755595f2-7905-4ba3-909e-68c4e74067bf) - partition with quorum Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3 2 Nodes configured, unknown expected votes 0 Resources configured. ============ Online: [ pm02 pm01 ] Node Attributes: * Node pm02: + pm01-eth1 : up + pm01-eth2 : up * Node pm01: + pm02-eth1 : up + pm02-eth2 : up
Node Attributes: の下に pm01-eth1 : up と表示されています。これは、
crm_
Pacemakerの停止
Pacemakerの停止方法は次の通りです。
# /etc/init.d/heartbeat stop # ssh pm02 /etc/init.d/heartbeat stop
リソース制御機能(Pacemaker)の設定
次に、
Pacemakerで管理すべきリソースは、

事前準備
Apacheをインストールします。
# yum -y install httpd # ssh pm02 yum -y install httpd
特に設定は不要ですが、
# cat > /var/www/html/index.html <<EOF <html> <body> <h1>pm01 is on service.</h1> </body> </html> EOF
# ssh pm02 "cat > /var/www/html/index.html" <<EOF <html> <body> <h1>pm02 is on service.</h1> </body> </html> EOF
リソース設定の種類
リソース設定の基本は、
- primitive: すべてのリソース設定の最小単位。RAはまずprimitive設定することから始まります。
- clone:
同じ設定のリソースを複数のノードで動作させたい場合に使用します。 primitive 設定後にclone化します。ネットワーク監視、
ディスク監視などで使用します。 - group:
複数のリソースをまとめてフェイルオーバさせるために使用します。group内のprimitiveには、
起動/ 停止時の順序も合わせて設定されます。
今回の例では、
crmコマンド
リソース設定は、
# crm help This is the CRM command line interface program. Available commands: cib manage shadow CIBs resource resources management node nodes management options user preferences configure CRM cluster configuration ra resource agents information center status show cluster status quit,bye,exit exit the program help show help end,cd,up go back one level
コマンドの実行方法しては、
引数なしで起動すると、
# crm crm(live)# node crm(live)node# show pm02(53a7615f-6b2f-4f71-9597-6b9a44e7f803): normal standby: off pm01(8559a0d8-a5c9-4a84-aa7e-1961cad9658c): normal standby: off crm(live)node# quit bye
引数でコマンドを与えると、
# crm node show
あるいは、
# crm <<EOF node show EOF
以降の設定手順では、
ではさっそくリソース設定を始めましょう。
クラスタ全体の設定
次のコマンドを実行してください。
# crm configure property no-quorum-policy="ignore" stonith-enabled="false" # crm configure rsc_defaults resource-stickiness="INFINITY" migration-threshold="1"
1行目では、
- no-quorum-policy:3サーバ以上の構成で、
クラスタに参加するサーバ数が過半数に満たない場合の動作ポリシーを指定。2サーバの場合はおまじないと思ってignoreを設定してください - stonith-enabled:STONITH機能を有効にするかどうかを指定。詳細は次回で説明します
2行目では、
- resource-stickiness:リソース移動を固定する優先度を指定。INFINITYを指定すると不具合のない限りは稼働中のリソースは移動せず、
自動フェイルバックなしの動作に相当します - migration-threshold:故障を検知した場合に同一サーバでリソースの再起動を試みる回数を指定
RAの設定
RAを設定するコマンドは、
# crm configure primitive help usage: primitive <rsc> [<class>:[<provider>:]]<type> [params <param>=<value> [<param>=<value>...]] [meta <attribute>=<value> [<attribute>=<value>...]] [operations id_spec [op op_type [<attribute>=<value>...] ...]]
- <rsc>:リソースの名前を指定
- <class>:lsb, ocfまたはstonithを指定
(Pacemakerでは通常はocf仕様のRAを使用します) - <provider>:標準では、
heartbeatまたはpacemakerを指定 - <type>:RA名を指定
- <params>:RAの設定パラメータを指定
- <op>:start,monitor,stopなどのPacemakerからのコマンドに対する設定を指定
RAの情報は、 crm raコマンドを使用することで多くの情報を得ることができます。
今回primitive設定するRAについて、
リソース | リソース名 | RA | 設定情報の表示コマンド |
---|---|---|---|
Apache | httpd | apache | crm ra info apache |
仮想IP | vip | IPaddr2 | crm ra info IPaddr2 |
ネットワーク監視 | ping | pingd | crm ra info ocf:pacemaker:pingd |
リソース名は、
Apacheを管理するためのRAは、
# crm configure primitive httpd ocf:heartbeat:apache params configfile="/etc/httpd/conf/httpd.conf" statusurl="http://localhost/" testregex="service" op monitor interval="10s"
クラスタの状態を確認します。
# crm_mon ============ Last updated: Wed Mar 23 10:00:20 2011 Stack: Heartbeat Current DC: pm02 (53a7615f-6b2f-4f71-9597-6b9a44e7f803) - partition with quorum Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3 2 Nodes configured, unknown expected votes 1 Resources configured. ============ Online: [ pm02 pm01 ] httpd (ocf::heartbeat:apache): Started pm02
サーバpm02でApacheが動作していることがわかります。
次に、
# crm configure primitive vip ocf:heartbeat:IPaddr2 params ip="192.168.68.100" nic="eth0" cidr_netmask="24" op monitor interval="10s"
仮想IPとApacheは常に同じサーバで動作させるためgroup設定にします。このために、
# crm configure group web vip httpd
クラスタの状態を確認します。
# crm_mon ============ Last updated: Wed Mar 23 10:19:29 2011 Stack: Heartbeat Current DC: pm02 (53a7615f-6b2f-4f71-9597-6b9a44e7f803) - partition with quorum Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3 2 Nodes configured, unknown expected votes 1 Resources configured. ============ Online: [ pm02 pm01 ] Resource Group: web vip (ocf::heartbeat:IPaddr2): Started pm02 httpd (ocf::heartbeat:apache): Started pm02
vipとhttpdが同じサーバで動作していることを確認してください。この例では、
Webブラウザで http:// と表示されるはずです。 Apacheでサービスを提供するためには、 ネットワーク監視をするためのRAは、 pingdの設定内容について補足します。 host_ クラスタの状態を確認します。default_ どちらのサーバの値も、 ネットワーク監視に失敗したサーバではApacheは動作しないように設定します。このために、 最後に、 すべてのサーバのリソースを停止します。このための簡単な方法は、 次にリソース設定を削除 第2回では、 では、pm02 is on service.
ネットワーク監視
# crm configure primitive ping ocf:pacemaker:pingd params name="default_ping_set" host_list="192.168.68.2"multiplier="100" dampen="1" op monitor interval="10s"
# crm configure clone clone_ping ping
# crm_mon -A
============
Last updated: Wed Mar 23 20:43:18 2011
Stack: Heartbeat
Current DC: pm02 (53a7615f-6b2f-4f71-9597-6b9a44e7f803) - partition with quorum
Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3
2 Nodes configured, unknown expected votes
2 Resources configured.
============
Online: [ pm02 pm01 ]
Resource Group: web
vip (ocf::heartbeat:IPaddr2): Started pm01
httpd (ocf::heartbeat:apache): Started pm01
Clone Set: clone_ping
Started: [ pm02 pm01 ]
Node Attributes:
* Node pm02:
+ default_ping_set : 100
+ pm01-eth1 : up
+ pm01-eth2 : up
* Node pm01:
+ default_ping_set : 100
+ pm02-eth1 : up
+ pm02-eth2 : up
# crm configure location web_location web rule -inf: not_defined default_ping_set or default_ping_set lt 100
リソース設定の初期化方法
# crm node standby pm01
# crm node standby pm02
# crm configure erase
# crm node online pm01
# crm node online pm02
まとめ