アプリケーション(リソース)に対する監視・制御は,第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.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
パラメータをチェックします。通常は実行されず,省略可能です。