SSブログ

クラスタの汎用アプリケーションリソース [Cluster]

クラスタで管理できるものは何もSQLServerとかOracleとか専用のアプリケーションだけではありません。

普通のWindowsのサービスやアプリケーションもクラスタ化する事が出来ます。
専用アプリケーションと違って細かな制御は出来ませんが、一般的な普通のサービスやアプリケーションをフェイルオーバークラスタとして利用できます。

その汎用アプリケーションリソースですが、ちょっと工夫すればそれなりに便利な使い方が出来ます。
その紹介をちょっと。

まず、汎用アプリケーションリソースで一般のアプリケーションをクラスタ化します。
クラスタアドミニストレータを起動して、

新規作成 で リソース を選択します。

名前を適当につけ、リソースの種類に 汎用アプリケーション を選びます。

クラスタのノードを選択します。

アプリケーションの前提で必要となるリソースを選択します。
クラスタの仮想IPや仮想コンピューター名,クラスタ共有ディスクとかです。
ちなみに今回は何も選択してません。

クラスタ化するアプリケーションを指定します。
とりあえず メモ帳 をクラスタ化します。…いや、単なるデモなので…
現在のディレクトリは、依存関係にディスクを入れてないので、全てのノードに存在するローカルディスクの C:ドライブの temp フォルダ(両ノードに作ってます)を指定します。

別にレジストリを使わないので何も指定しません。

汎用アプリケーションリソースが出来ました。

つくりたてはオフラインになっているので、オンラインにします。



オンラインにすると、メモ帳 が起動されます。

この メモ帳 、クラスタで管理されてますので、閉じると、クラスタは障害とみなされます。
その後、クラスタは正常に戻そうとして メモ帳 を再び起動させます。
閉じれば障害と判断して自動的に再起動されます。
その障害が一定時間内に閾値を超えて発生すると…何度も手動で閉じれば…フェイルオーバーします。
フェイルオーバー先のノードで メモ帳 が起動されます。

フェイルオーバー先でも何度も手動で閉じて障害を発生させると、最終的には完全に障害扱いになって止まります。

要するに、起動してすぐ終了するコマンドラインのプログラムやバッチファイルとかは使えないという事です。
…そのままでは。
バッチファイルを登録出来ると、フェイルオーバー後に自動的にスクリプトが1回実行出来るので便利そうなんですが…

そこで、こんなふうにします。

cmd.exe の /k オプションはコマンド実行後にコマンドプロンプトが終了しません。起動したままになります。

ちなみに実行するバッチファイルは↓です。…デモなので…

このリソースをオンラインにすると、

こんなログが書かれます。

フェイルオーバーすると、


フェイルオーバー先のノードで1回実行されて、ログが書かれます。

ちなみに、この汎用アプリケーションリソースには依存関係がありませんので、フェイルオーバーしたら真っ先に実行されます。

逆に、他のリソースから依存させてもコマンドプロンプトの起動は待ちますが、バッチファイルの完了は待ちませんので…あしからず。
ちなみに、バッチファイルの実行結果がエラーでも判断しません…
それと、汎用アプリケーションリソースがオンライン中は、CMD.EXE のプロセスが立ち上がりっぱなしなので御注意。

デスクトップとの対話のチェックを外せば画面は出てきませんからそれほど気にする必要もありません。

汎用アプリケーションリソースを利用すると、フェイルオーバー後に1回実行するバッチファイルが指定できるという事です。
いろいろと使い道があるのではないかと思います。

フェイルオーバー後に1回実行するスクリプトが組み込めて且つ、リターンコードも判断出来る仕組みを標準的に組み込んでほしいものです。


nice!(0)  コメント(2)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

moto0215

windowsクラスタリングの記事を探していてたどり着きました、有益な情報を平易に解説していただいて、大変参考になりました。ありがとうございます。
by moto0215 (2008-05-23 09:16) 

aki-aoki

moto0215 さんコメントありがとうございます。
2008ではこの辺考慮されてるのかな~?
by aki-aoki (2008-05-24 13:50) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。