2017-02-09 12 views
2

私のアプリケーションの1つはビジネスクリティカルとみなされており、フェールオーバーの際にスケジュールされたエージェントを正しく動作させる方法を見つけようとしています。それは自動である必要はありませんが、管理者はあるサーバから別のサーバへエージェントの実行を「転送」できる必要があります。クラスタ化された環境でスケジュールされたエージェントの高可用性

「アクティブな」サーバーをプロファイル文書に設定し、現在アクティブなサーバーでエージェントが実行されているかどうかをチェックするエージェント(ロータススクリプトにはJava、 、そうでない場合は、すぐに停止してください。

http://www-01.ibm.com/support/docview.wss?uid=swg21098304 3つのエージェント、メイン・サーバー上で実行される「メイン・エージェント」によって呼び出される「コア」エージェント、およびフェイルオーバー・サーバー上で実行される「フェイルオーバー・エージェント」という、IBMの回避策の提案があります。 「メインサーバー」が使用可能な場合に限ります。

しかし、そのソリューションは、私には少し不格好だが、それは手間のかかる方法で設定する必要がある薬の多くになるだろう。

お勧めですか?

答えて

3

私のロジックはあなたに似ていますが、私はプロフィール - 文書(キャッシュがそのような重要なタスクのために悪いことである)が、中央の設定文書を使用しないでください。

エージェントはすべてのサーバーで実行されるようにスケジュールされています。

まず、config-ドキュメントから "MasterAppServer"を読み込みます。それが別のサーバである場合、MasterServer上のデータベース(または必要に応じてnames.nsf)を開こうとします。データベースを開くことができる場合 - >すべてがOKです。エージェントは作業を停止します。エージェントを開くことができない場合、エージェントは、他のサーバがダウンしていることを前提とし、config-ドキュメント内のMasterAppServer-フィールドを自分のサーバに変更して実行します。

もちろん、「MasterAppServer」が変更されるたびにconfig-ドキュメントにログを書きます。

これは非常にうまく動作し、1台のサーバーがダウンしているときに管理者の介入を必要としません。

+0

こんにちはTorsten、それは私にとって良い解決策のようです。ヒントをありがとう! –

+0

Torsten、私は考えていて、ネットワークが故障したとみなした場合、つまり両方のサーバーが別のサーバーに接続できず、両方がローカルで「マスター」として宣言しているかどうかを考えていたのでしょうか? –

+0

いいえ、このケースは考慮しませんでした...しかし、私はこのシナリオを技術的に扱うことはできないと思います...他のサーバが稼働していないか、単に到達できない場合はどうすればよいでしょうか...どちらも同じです実行中のサーバー... –

関連する問題