アプリケーション(リソース)に対する監視・制御は,第5回で説明した通り,リソース・エージェント(RA)によって実現されます。Heartbeatでは,以下ディレクトリ配下に,Apacheや仮想IPアドレスを含み,標準で多くのRAが用意されています。

/usr/lib/ocf/resource.d/heartbeat

 HAクラスタ・ソフトがリソースに対して,具体的にどのような監視・制御処理を実行しているかを知っておくと,構築作業でうまく動作しない場合や,パラメータ・チューニングを行うときに,大いに役立ちます。

 また,実際に故障が発生したとき,適切にフェイルオーバーするかどうかは,このRAの実装によるところが大きいため,動作内容の把握は大変意味があります。

 RAは,OCF(Open Cluster Framework)という形式に基づき,そのほとんどがシェル・スクリプトで実装されています。今回は,まず前半で,OCF形式RAを読み解く4つの基礎知識を説明し,後半で,構築したWebサーバーのクラスタ化環境で用いた apacheRAを読み解きましょう。

 シェル・スクリプトに関する知識があれば,次の4つの基礎知識と,apacheRAの処理概要を把握するだけで,その他のRAを読み解けます。最終的には,自分で独自のRAを作成することも可能になると思われます。

RAを読み解く4つの基礎知識

 基礎知識は, RAの全体構成, RAで実行されるメソッド, RAのリターン・コード,パラメータ用変数,の4つです。それでは,1つずつ説明します。

[1]RAの全体構成

 RAの全体構成は,図1のように大きく3つのブロックに分類できます。

図1●RAの全体構成
図1●RAの全体構成
[画像のクリックで拡大表示]

1.OCFファンクション・ファイル(.ocf-shellfuncs)のインクルード

 先頭部分には,OCFファンクション・ファイル(.ocf-shellfuncs)がインクルードされています。このファイルは,OCF形式で利用するメソッドや変数が定義されています。

 この .ocf-shellfuncs ファイルから,さらに次の3種のファイルがインクルードされ,RAを読み解く中で,詳しい内容を確認したいメソッドがあった場合には,これらのインクルード・ファイルを見ることで,その処理内容を確認できます。

  • /usr/lib/ocf/resource.d/heartbeat/.ocf-binaries
  • /usr/lib/ocf/resource.d/heartbeat/.ocf-directories
  • /usr/lib/ocf/resource.d/heartbeat/.ocf-returncodes

2.リソース起動・停止・監視処理

 実際にリソースを起動・停止させたり,監視を行う処理が各メソッドに記述されます。

3.RA処理の振り分け

 HeartbeatからRAへの起動・停止・監視等の処理命令があったとき,各命令を実行するメソッドへの振り分けが記述されます。

[2]RAで実行されるメソッド

 RAでは様々なメソッドが実行されることになりますが,特に重要なのは,以下3種類のメソッドになります。

・start

 リソースを起動します。初期起動時に現用系でリソースが起動されるとき,もしくは,フェイルオーバー/スイッチオーバー時に,待機系側でリソースが起動されるときなどに実行されます。

・stop

 リソースを停止します。フェイルオーバー/スイッチオーバー時に,現用系側でリソースを停止するときなどに実行されます。

・monitor

 初期起動時にリソースの稼動状態を確認するとき,および,リソースの動作状態を定期的に監視するときに実行されます。

 上記3種以外にも,次のようなメソッドが定義されています。

・status

 リソース起動後のチェックを行います。通常は実行されず,省略可能です。

・meta-data

 パラメータ構造を取得します。GUIを用いる場合には必須ですが,用いない場合は省略可能です。

・validate-all

 パラメータをチェックします。通常は実行されず,省略可能です。