連載
» 2007年12月12日 00時00分 公開

Heartbeatでかんたんクラスタリング(2):インストールとApache用の設定方法 (2/3)

[花島タケシ,VA Linux Systems Japan株式会社]

Heartbeatの設定

v1設定 vs v2設定、どちらを選ぶ?

 Heartbeatバージョン2系では、バージョン1系の設定(以下「v1設定」)とバージョン2系設定(以下「v2設定」)の両方が行えます。これにより、設定ファイルを変更することなくバージョン1系からの移行が行えます。

 ただしv1設定には、アクティブ/スタンバイ構成の2ノードのクラスタしかサポートしないことやクラスタの設定を動的に変更できないというデメリットがあります。ですので、この記事ではv2設定のみに絞って解説をしていきます。

 また、v1設定からv2設定への移行を支援するためのツールとして「haresources2cib.py」が提供されています。これを用いて、v1設定を行った後にv2設定に移行することも可能です。

設定ファイルの詳細

 Heartbeat v2設定は、

名称 意味
/etc/ha.d/ha.cf クラスタの基本的な構成の設定用
/etc/ha.d/authkeys ノード間のハートビート通信のためのパスフレーズの記述用
/var/lib/heartbeat/crm/cib.xml 提供するサービスやノード、ポリシーなどクラスタの詳細な設定用

という3つの設定ファイルから成り立っています。クラスタを構成する各ノードにおいて、これらのファイルの内容はすべて同一にしなくてはなりません。まず、ha.cfを

crm on    ←v2設定をするための記述
logfile /var/log/ha-log ←ログの出力先ファイル
logfacility local0 ←システムログへの出力方法
keepalive 3 ←ハートビートの間隔
deadtime 30 ←ノードが死亡したと認知する時間
deadping 40 ←pingの返事がない場合に死亡したと認知する時間
warntime 10 ←ハートビートが返ってこないと警告となる時間
initdead 60 ←起動時にのみ使用されるノード死亡認知時間
udpport 694 ←ハートビートで使用するポート
auto_failback on ←ノード復旧後にサービスを自動的に戻す
bcast eth1  ←ハートビートをeth1経由でブロードキャストにて行う
node tomato ←クラスタに参加するノード名(hostnameコマンドで表示されるもの)をすべて記述
node surr
respawn root /usr/lib/heartbeat/pingd -m 100 -d 5s -a default_ping_set ←pingの設定

のように記述します。次にauthkeysを、

auth 1           ←下記の1の記述を認証として使用
1 sha1 Love Love VA Linux ←sha1方式による認証。Love……の部分がパスフレーズ
2 md5 less than sha1    ←sha1が推奨されていて、md5は優先順位が劣る

のように記述します。最初にあるのがパスフレーズの番号で、次にパスフレーズタイプ(「sha1」など)、その次にパスフレーズそのものを記述します。パーミッションは600にしておいてください。その後、クラスタに参加するすべてのノードで、

# /etc/init.d/heartbeat start

と入力し、Heartbeatサービスを開始します。その後、クラスタ参加ノードのどれかで、

# /usr/sbin/crm_mon -i 3

と入力します。これにより、3秒置きにクラスタのステータスが更新表示されるようになります。ある程度時間が経過すると、画面1のようにクラスタに参加しているノード名が表示され、右側に表示されるステータスが「online」となります。これにより、最低限の設定が完了しました。

図1 クラスタ参加ノード名が表示された画面 画面1 クラスタ参加ノード名が表示された画面

 同時に、/var/lib/heartbeat/crm/cib.xmlが生成されていることを確認してください。

注意:これから先の設定は、以下のGUIツール(hb_gui)を用いて行うこともできます。しかしながら、cib.xmlの記述について理解していないと、なかなか使いこなしにくいのが現状です。そこで今回は、設定ファイルを直接編集する方法を解説します。なお、hb_guiを使用する場合は、haclusterユーザーのパスワードを設定しておく必要があります。


画面2 GUIの設定ツール 画面2 GUIの設定ツール

設定ファイルの詳細

 上記までの設定が終了したら、いったん

# /etc/init.d/heartbeat stop

と入力して、Heartbeatサービスを終了させます。

 ここからcib.xmlの編集に取りかかります。記述ルールは/usr/share/heartbeat/crm.dtdに示されています。なお、DTDファイルの読み方についてはここでは割愛します。

 最初に簡単にcib.xmlについて説明しておきましょう。最もシンプルな形式のcib.xmlは

<cib>
  <configuration>
    <crm_config/>
    <nodes/>
    <resources/>
    <constraints/>
  </configuration>
</cib>

のような構造になります。先ほどのインストール作業後に生成されたcib.xmlと比較してみてください。

 configuration要素内の各要素の大まかな説明は以下のとおりです。

名称 意味
crm_config クラスタの全般的なオプションを定義する
nodes クラスタを構成するノードについて定義する。ノード部のIDは
UUID形式によって表記するため、一度空で起動し、自動設定させる方がよい
resources 使用するリソースを定義する。リソースを直接(primitive要素)を定義することも
可能だが、clone、group、master_slave要素を用いてグルーピングを行うことも可能
constraints どのリソースがどこに配置されるかという情報やその優先度、それらリソースの
順序関係を定義する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。