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

第2回 Pacemakerをインストールしてみよう![構築基本編]

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

RAの設定

RAを設定するコマンドは,crm configure primitiveです。使い方をcrmのヘルプで調べてみましょう。

# 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について,表3にまとめます。

表3 primitive設定するRA

リソースリソース名RA設定情報の表示コマンド
Apachehttpdapachecrm ra info apache
仮想IPvipIPaddr2crm ra info IPaddr2
ネットワーク監視pingpingdcrm ra info ocf:pacemaker:pingd

リソース名は,ユーザがわかりやすい名前をつけられます。

Apacheを管理するためのRAは,apacheです。次のコマンドで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が動作していることがわかります。

次に,仮想IPを設定します。RAはIPaddr2を使います。

# 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コマンドを使います。

# 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が同じサーバで動作していることを確認してください。この例では,pm02で動作していますが,場合によってはpm01で動作しているかもしれません。

Webブラウザで http://192.168.68.100/ にアクセスしてください。pm02で動作していれば,

pm02 is on service.

と表示されるはずです。

ネットワーク監視

Apacheでサービスを提供するためには,サービスLANのネットワークが正常であることが必要です。このチェックのために,図1のゲートウェイ(192.168.68.2)までのネットワーク到達性を監視する設定を追加してみましょう。

ネットワーク監視をするためのRAは,pingdです。ネットワーク監視はすべてのサーバで動いている必要があるため,clone設定を使用します。

# 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

pingdの設定内容について補足します。

host_listで指定されたIPアドレスにICMPパケットを送信しネットワークの到達性を確認します。OKならdefault_ping_setmultiplierの値をセットします。NGなら,default_ping_setの値は 0 になります。

クラスタの状態を確認します。default_ping_setの値を確認するため,crm_monに-Aオプションをつけて実行します。

# 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

どちらのサーバの値も,正常値(100)になっていることがわかります。

ネットワーク監視に失敗したサーバではApacheは動作しないように設定します。このために,default_ping_setが正常値(100)より小さい場合は,そのサーバではリソースは動作しない」という条件を設定します。このために crm configure locationコマンドを使います。

# 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 configure erase
# crm node online pm01
# crm node online pm02

まとめ

第2回では,Pacemakerのインストールと設定方法について,順序を追って説明しました。次回は,本格的なHAクラスタを構築するための高度な設定について解説する予定です。

では,ハッピー,クラスタリング!

コラム: Pacemakerロゴあれこれ [その2]

Linux-HA Japanプロジェクトで作ったこの新ロゴですが,2010年11月ケンブリッジで開催された「Linux Plumbers Conference 2010」で,PacemakerのメンテナであるAndrew Beekhof氏に提案してきました。すると投票サイトがいつの間にか開設され,新旧ロゴ対決が始まったのです。

人気投票の結果,Linux-HA Japanの新ロゴが圧倒的リードで勝利しました!しかし!?なぜか本家ロゴは青というオチに..。

画像

Linux-HA Japanプロジェクトでは応援キャラクターも作成し本家に提案しましたが,これは残念ながら却下……。萌えキャラは日本の文化なんでしょうね。

画像

付録:リソース設定手順の補足

本文では,ステップ by ステップでリソース設定を行いましたが,実運用では crmのバッチモード,またはcrm configure load コマンドで使用することが多いと思います。参考までに,⁠リソース制御機能(Pacemaker)の設定」のリソース設定について,その手順を補足します。事前に,⁠リソース設定の初期化方法」を実行しておいてください。

crmのバッチモードを使う場合は次のようになります。

# crm <<EOF
configure
property no-quorum-policy="ignore" stonith-enabled="false"
rsc_defaults resource-stickiness="INFINITY" migration-threshold="1"
primitive httpd ocf:heartbeat:apache params configfile="/etc/httpd/conf/httpd.conf"
statusurl="http://localhost/" testregex="service" op monitor interval="10s"
primitive vip ocf:heartbeat:IPaddr2 params ip="192.168.68.100" nic="eth0" cidr_netmask="24" op monitor interval="10s"
group web vip httpd
primitive ping ocf:pacemaker:pingd params name="default_ping_set" host_list="192.168.68.2" multiplier="100" dampen="1" op monitor interval="10s"
clone clone_ping ping
location web_location web rule -inf: not_defined default_ping_set or default_ping_set lt 100
commit
EOF

crm configure loadコマンドを使う場合は,次の内容のファイル(ファイル名は apache.crm )を作成し,

property no-quorum-policy="ignore" stonith-enabled="false"
rsc_defaults resource-stickiness="INFINITY" migration-threshold="1"
primitive httpd ocf:heartbeat:apache params configfile="/etc/httpd/conf/httpd.conf"
statusurl="http://localhost/" testregex="service" op monitor interval="10s"
primitive vip ocf:heartbeat:IPaddr2 params ip="192.168.68.100" nic="eth0" cidr_netmask="24" op monitor interval="10s"
group web vip httpd
primitive ping ocf:pacemaker:pingd params name="default_ping_set" host_list="192.168.68.2" multiplier="100" dampen="1" op monitor interval="10s"
clone clone_ping ping
location web_location web rule -inf: not_defined default_ping_set or default_ping_set lt 100

次のコマンドを実行します。

# crm configure load update apache.crm

著者プロフィール

三井一能(みいかずよし)

NTTオープンソースソフトウェアセンタ所属。Linux-HA Japanプロジェクトには2年前から参加。

インフラエンジニアたるもの自宅サーバのメンテにも余念がない。だが,口ぐせからか,妻は私の趣味がアップデートとインストールと思い込んでいる。