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

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

[花島タケシ,VA Linux Systems Japan株式会社]
前のページへ 1|2|3       

Apacheを対象とした設定方法

 HeartbeatでApacheをクラスタリングの対象とするには、

  • Apacheがサービスを提供するための仮想IPの設定
  • Apache自体の設定

をcib.xmlに記述しなければなりません。cib.xmlをすべて記載するとファイルが長くなりますので、サンプル(cib.xml.apache)を置いておきます。こちらを参照してください。

サンプルダウンロード:

→ Apache用設定ファイルのサンプル(cib.xml.apache)


 この設定に関して簡単に説明しましょう。

 上述の仮想IPの設定とApache自体の設定は、それぞれ...部と、...部に記述されています。この設定の実行に関しては、どちらもHeartbeatによって提供されるOpen Cluster Framework(OCF)タイプRAを使用し、それぞれIPaddr、apacheというファイルを用いています。

 仮想IPは、Apacheの起動前に立ち上がっていなくてはなりません。そのため仮想IPの設定は、Apacheの設定よりも前に記述されている必要があります。

 Apacheの設定に関しては、/etc/httpd/conf/httpd.confから読み込んでいるのですが、このファイルに対して

Listen 172.17.246.10:80

<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Allow from all
</Location>

を追記してください。

 これらcib.xmlとhttpd.confの設定を、surr、tomatoの両ノードにて行います。その後、/var/lib/heartbeat/crm/にある「cib.xml.last」「cib.xml.sig」という2つのファイルを削除します。もし手書きでcib.xmlを変更した場合は、サービス開始前にcibm.xml.lastとcib.xml.sigの削除が必要となります。このとき、間違ってcib.xmlを削除しないようにしてください。

Heartbeatの起動と切り替えテスト

 では、アクティブなノードが切り替わることをテストしてみましょう。

 まず、surr、tomatoの両ノードの/var/www/html/index.htmlファイルに、それぞれ異なる内容のものを置いてください。

 ただしこれは、あくまでテストのための設定です。本来ならば、こういったアクティブなノードが入れ替わったときでもファイルの内容が変化しないように、DRBDなどを用いて各ノードが保持する内容を同期させるか、共有ボリュームを使用することが望ましいです。

図2 切り替えテスト用のHAクラスタ構成。本番稼働の際には同一の内容を用意しておく 図2 切り替えテスト用のHAクラスタ構成。本番稼働の際には同一の内容を用意しておく

 ここまでの設定が完了したら、Heartbeatサービスを起動することになります。ただ、その前にcib.xmlの記述が正しいかどうかを

# crm_verify -x /var/lib/heartbeat/crm/cib.xml

と入力して確認しておきましょう。もし重要なエラーがあったときは、問題がなくなるように修正を加えてください。問題がなければ、先ほどと同じように、まず片方のノードで

# /etc/init.d/heartbeat start

と入力してサービスを開始します。正しく実行されると、先ほどとは異なり、画面3のようにResource Group部にipaddrとapacheというリソースが加わり、tomatoで実行されていることが分かります。

画面3 Apacheを対象とした設定を行うと、このような画面が表示されるはずだ 画面3 Apacheを対象とした設定を行うと、このような画面が表示されるはずだ

 このとき、仮想IPである10.17.246.10にWebブラウザでアクセスすると、tomatoに置いたコンテンツが表示されます。一方、tomato(10.17.246.2)にアクセスしても、エラー画面が表示されるだけかと思います。

 この状態で、surrのHeartbeatサービスも起動させます。surrとtomatoが問題なく稼働していることをcrm_monコマンドで確認した後に、リソースの稼働しているノード(tomato)で、

# sync
# /sbin/reboot -nf

として、強制的にサーバの再起動を行い、フェイルオーバーの確認をしてみましょう。deadtimeの設定は30秒となっていますので、1分くらい経過したら、先ほどと同じようにWebブラウザでアクセスしてみてください。すると、問題なくフェイルオーバーが行えていることが確認できると思います。

Sambaでフェイルオーバーさせたいときは?

 OCFスクリプトの置いてあるディレクトリを見ても、Samba用のスクリプトはありません。では、HeartbeatではSambaをリソースとしたフェイルオーバーはできないのでしょうか?

 そんなことはありません。HeartbeatではLSBスクリプトも実行可能となっています。例えば先ほどのApacheの設定は、LSBスクリプトを介した管理に置き換えることができます。上記のcib.xmlのApache部を

<primitive id="apache" class="lsb" type="httpd"/>

のように、type部をhttpdに変更し、provider部をなくすように変更します。これは、heartbeatから/etc/init.d/httpdを実行するようにしたためです。

 Apache用の設定ファイルについては、/etc/init.d/httpdにより管理されているため、今回はcib.xmlに記述する必要はありません。cib.xml.lastとcib.xml.sigを削除し、Heartbeatサービスを起動してみてください。問題なくApacheも稼働すると思います。Sambaを動作させる方法については、読者の皆さんへの宿題としておきましょう。

 さて次回は、前回簡単に紹介したSTONITHとWatchdogについて解説していきたいと思います。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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