連載
» 2008年01月23日 00時00分 公開

Heartbeatでかんたんクラスタリング(3):HAを見守る「Watchdog」と「STONITH」 (3/3)

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

STONITHも使ってみよう

 STONITHについても、初回の記事で簡単に説明しました。これは「Shoot The Other Node In The Head」の略で、監視対象ノードの異常を検出したときに、強制的にそのノードをダウンさせる役割を果たします。

 なぜこうした機能が必要かというと、コントロールが利かないノードを強制的に排除することで、IPアドレスが重複したり、複数のノードが「自分がプライマリである」と思い込むような状況をなくし、全体としてのデータ損失を防ぐためです。

 「対象ノードをダウンさせる」ためには、相手のOSが反応を返さないケースも考慮して、サービスを提供するOSとは別の経路でOSにアクセスする必要も出てきます。

 そのため、サーバマシンの中には、専用の管理ポートを提供するモデルがあります。こうした専用ポートは、起動しているOSに依存せずに動作しています。また、同様の機構を提供するオープンな規格として、IPMI(Intelligent Platform Management Interface)というものがあり、これをそのままサポートしているマザーボードベンダも存在します。これらのポート用のプラグインもいくつか提供されており、STONITHの対象として利用可能です。

 STONITH用プラグインは、/usr/lib/stonith以下にいろいろと収められています。例えばibmrsariloeimpilanなどが前述のポート用プラグインになります。

 すべての人が管理専用ポートを備えたサーバを所有しているわけではありませんので、以降では、sshを用いたSTONITH(ssh STONITH)を例に取って解説を行います。ただしssh STONITHでは、OS自体が不安定になった場合には正常動作しないことがあります。さらに前提として、パスフレーズの入力を省くために、パスフレーズなしのSSHキーを作成しておく必要があります。

SSHキーの設定

 まず、tomatoで、

# ssh-keygen

と入力してキーの作成を開始します。その後、パスフレーズの入力を求められますので、何も入力せずにEnterを押します。作成された/root/.ssh/id_rsa.pubの内容を、surrの/root/.ssh/authorized_keysに入力します。そしてtomatoから、

# slogin surr

のように入力して、パスワードやパスフレーズを打ち込まなくてもsurrにログインできることを確認してください。同様に、surrからtomatoへログインできるようにも作業します。

cib.xmlの編集

 STONITH機能を使うときも、これまでと同様、設定ファイルである「cib.xml」ファイルを編集する必要があります。すべて記述すると長くなってしまうので、サンプル設定ファイルを用意しておきました。下記を参照してください。

 基本的には第2回で紹介したApache用設定に追記を加えたものです。どこが変わったかを確認してみましょう。

 まず、resources要素内にprimitive要素で始まる2つのリソースが、またconstraints要素内にもそれらに対応したrsc_locationで始まる制限が追加されています。リソース部はまさしくSTONITHの設定そのものです。

 さらに、ノードsurrを落とすためのリソース「kill_surr」はtomatoでしか起動しないように、同様にtomatoを落とすためのリソース「kill_tomato」はsurrでしか起動しないように制限を加えています。

 今回は練習のため、ここで紹介したサンプル設定ファイルのままではSTONITHが有効にならないようにしています。このファイルを各ノードにコピーし、Heartbeatサービスを起動した後に、クラスタが稼働している状態で設定変更をしてみましょう。なお、このときWatchdogの設定は削除しておきます(ha.cfからwatchdog部を削除してからHeartbeatサービスを起動します)。

 まずtomatoもしくはsurrのどちらかで、

# cibadmin -o crm_config -U -X ‘<attributes><nvpair id=”stonith-enabled” name=”stonith-enabled” value=”true”/></attributes>’

と入力します。その後、

# cat /var/lib/heartbeat/crm/cib.xml

として、どこに入力されたかを確認してみましょう。

 この状態でようやく、STONITH機能が有効になりました。では、どちらかのノードでWatchdogのときと同様に、MCPプロセスをkillしてください。ha.cfで設定したdeadtime時間を経過すると、そのノードが再起動されると思います。

 以上で、WatchdogとSTONITHの解説は終了です。特にSTONITHの設定には複雑な面があり、ミスをすると予期せぬ挙動を示すこともあります。実運用の際はくれぐれも注意して設計・記述を行ってください。

 さて次回は、DRBDとの連携を紹介し、バージョン2以降で実装されたマスター/スレーブモードについても解説したいと思います。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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