(57)【要約】【課題】二台の計算機ノードからなる共通の記憶装置を持たないクラスタにおいては、ネットワークによって互いの生死を監視するが、それだけでは相手ノードを停止していると誤判定してしまう場合がある。誤判定により系切り替えを実行してしまうと、系切り替えの後に相手ノードが正常状態に復帰し、二台の計算機が両方とも実行系として動作してしまうという課題がある。【解決手段】クラスタを構成する二台のノード、クラスタと通信する他の計算機は、各計算機が接続するポートを無効とすることが可能なスイッチで接続する。それらのスイッチを制御するネットワーク制御プログラムが、ノードの系切り替えと同期してノードが接続するポートの使用可否を変更する。【選択図】図２
2007304687.tif 000002
【特許請求の範囲】
【請求項１】
二つのノードを形成する計算機と、
前記二つの計算機が相互に情報を交換してそれぞれ他の計算機の生死監視を実施する内部ネットワークスイッチと、
前記二つの計算機と前記二つの計算機にアクセスしてサービスを受けるクライアント計算機とを接続するための外部ネットワークスイッチと、
前記内部ネットワークスイッチに接続され、前記二つの計算機の一つの計算機が前記クライアント計算機からの要求を処理する主系、他方を主系の処理を引き継ぐよう待機している従系として運転モードを制御するクラスタ制御計算機と、
よりなり、
前記内部ネットワークスイッチおよび外部ネットワークスイッチと前記各計算機との接続は接続の有効化、無効化が外部から制御可能なポートで接続されるとともに、
前記二つの計算機は内部ネットワークスイッチを通した情報交換によって運転モード遷移の要否を判定するとともに、前記クラスタ制御計算機は前記運転モード遷移通知を受けてノードが接続するネットワークスイッチのポートの有効化、無効化を変更することを特徴とするクラスタシステム。
【請求項２】
前記ノードの計算機の運転モードを待機状態から運転状態に遷移する場合に、前記クラスタ制御計算機は、先に運転状態にあった他ノードの計算機が接続されている前記内部ネットワークスイッチのポートと、前記クライアント計算機にサービス提供のために前記他ノードの計算機が接続されている前記外部ネットワークスイッチのポートを無効化する請求項1記載のクラスタシステム。
【請求項３】
前記ノードの計算機の運転モードを停止状態から開始状態に遷移する場合に、前記クラスタ制御計算機は、当該計算機が接続されている前記内部ネットワークスイッチのポートと、前記クライアント計算機にサービス提供のために前記他ノードの計算機が接続されている前記外部ネットワークスイッチのポートを有効化する請求項1記載のクラスタシステム。
【請求項４】
前記ノードの計算機の運転モードを停止状態に遷移する場合に、前記クラスタ制御計算機は、当該計算機が接続されている前記内部ネットワークスイッチのポートと、前記クライアント計算機にサービス提供のために前記他ノードの計算機が接続されている前記外部ネットワークスイッチのポートを無効化する請求項1記載のクラスタシステム。
【請求項５】
前記クラスタ制御計算機は、前記内部ネットワークスイッチのポートの有効化、無効化に関するデータを収集するものであるとともに、当該データを参照して前記内部ネットワークスイッチに接続されている計算機の運転モード遷移の要否を判定するとともに、前記クラスタ制御計算機は前記運転モード遷移通知を受けてノードが接続するネットワークスイッチのポートの有効化、無効化を変更する請求項1記載のクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二台の計算機から構成するクラスタシステムの高可用化のための構成、および、制御手段に関する。特に、二台の計算機の間で共有する外部記憶装置を持たない構成のクラスタシステムの高可用化方式に関する。
【背景技術】
【０００２】
計算機システムで実行する処理の可用性を向上する方式として、クラスタという考え方がある。クラスタシステムにおいては、複数の計算機に同一のプログラムをインストールしておき、その内のいくつかを実際の処理を実行する計算機とする。残りの計算機は、処理を実行している計算機で障害が発生したことを検知したときに、当該の計算機に代わって処理を実行するように制御される。
【０００３】
一般的なクラスタシステムは、二台の計算機で構成する。一方は実際の処理を行う計算機（実行系）であり、残りは実行系の異常に備えて実行系の処理を引き継げるように待機している計算機（待機系）となる。二台の計算機は、ネットワークを介した通信によって、定期的に互いの実行状況を監視している。また、一般に、待機系から実行系へと系を切り替える際に待機系がデータを引き継げるように、二台の計算機の両方からアクセス可能な共有の外部記憶装置を配置する。この共有記憶装置は、その時々の実行系からしかアクセスできないように排他制御の下で利用される。これを実現するアクセス手段として、ＳＣＳＩプロトコルが一般的である。
【０００４】
このようなクラスタでは、待機系が実行系の異常を検知すると、待機系は自らを実行系に切り替える。この時に、待機系は共有記憶装置のアクセス権を奪ってから、アプリケーションの実行を開始する。アプリケーションは、共有記憶装置に格納されているデータを参照して引継ぎのための処理を実行し、実際の処理を開始する。
【０００５】
このようなクラスタは、クラスタ制御のためのソフトウェアと、それと連携し
て実行するアプリケーションによって構成される。また、クラスタ制御ソフトと
連携するソフトウェアの例としては、データベースが挙げられる。
【０００６】
一方、クラスタシステムにおいては、待機系が実行系として実行を開始するまでの時間が問題になる場合がある。上記のクラスタシステムでは、共有記憶装置のアクセス権を奪う処理と、実行系となった計算機の側での引き継ぎ処理の間は、システムは他に対してサービスを提供できない。特に、共有記憶装置のアクセス権制御は、一般には十数秒かかる処理である。
【０００７】
十数秒のサービス中断が許容できないシステムでは、いわゆる、パラレルクラスタとして知られる共有記憶装置を配置しないクラスタシステムを構成する例もある。この例としては、特許文献１（特開２００１−１０９６４２）がある。ここでは、要求を実行系で処理し、その結果を待機系に送信し、実行系と待機系で処理状況を一致化させている。また、特許文献２（特開２００１−３４４１２５）のように、実行系、待機系間の連携を二重化して系切り替えの信頼度を上げる工夫がなされている。さらに、特許文献３（特開平０５−２６０１３４）のように、監視装置を階層化して、監視装置の異常に対する処理を工夫してシステムの信頼性を向上させる工夫もなされている。
【０００８】
また、実行系、待機系の両方の計算機が処理要求を受け取って処理する場合もある。実行系である計算機は処理結果を出力し、待機系は処理結果を内部に保存し実行系に切り替わる際に備える。両方の計算機は、互いに通信して処理の進捗を同期しながら要求の処理を進めていてもよい。
【０００９】
これらの方式によれば、系切り替えでは共有記憶装置のアクセス権の引継ぎが不要で、待機系は実行系として直ぐに実行を開始できる。このように待機系が実行系と同じ状態を持つように制御し、常に系切り替えに備えていることによって、待機系から実行系への切り替え時間を短縮でき、サービス中断時間を短縮できる。
【００１０】
クラスタシステムにおいては、二台の計算機が互いの状態を正確に把握することが重要である。共有記憶装置を持つ構成のクラスタは、ネットワークによる通信と、共有記憶装置のアクセス権制御という２つの異なる共有の媒体を利用して、相手の状態を確認する。一方のパラレルクラスタにおいては、互い、あるいは、第３者を介在させたネットワーク通信によって、二台の計算機の状態を把握する。
【００１１】
【特許文献１】特開２００１−１０９６４２
【特許文献２】特開２００１−３４４１２５
【特許文献３】特開平０５−２６０１３４
【発明の開示】
【発明が解決しようとする課題】
【００１２】
パラレルクラスタでは、実行系と待機系の二台の計算機を連携するための共通の媒体は相互のネットワークによる通信しかない。ネットワーク通信による状態監視では通信ができなくなったことを以って相手系が停止していると判定する。
しかしながら、ネットワーク通信による状態監視だけでは、相手系の不調のため通信が途絶したのか、目系のネットワーク処理やネットワーク機器の不調のため通信が途絶したのか、ネットワーク自身が不調なため通信が途絶したのかを、クラスタを構成する計算機では区別できない。このため、一方の計算機が、相手系は実際には停止していないのに、通信途絶によって、停止していると誤判定してしまう問題がある。
【００１３】
更に、何らかの要因で一時的に通信が途絶している間に待機系が誤判定により系切り替えを実行してしまうと、系切り替えの後に相手系が正常状態に復帰し、二台の計算機が両方とも実行系として動作する可能性がある。この場合、クラスタシステムが、外部のシステムを混乱させてしまう虞があり問題である。
【００１４】
これを解決する手段の1つとして、停止していると判定された計算機に停止することを要求する、あるいは、リセット信号等を送信して強制的に計算機を停止させる方法がある。前者の方法は、停止していると考えられる計算機に指示を送るのであるから、正常に受信できるかどうか不明であり、信頼性に欠ける問題がある。後者の方法は、計算機をリセットしてしまうため、その計算機の障害情報が消えてしまい、障害要因の解析が困難になるという問題がある。
【課題を解決するための手段】
【００１５】
パラレルクラスタ（第１ノード、第２ノード）を構成する二台の計算機および各クラスタの計算機と通信する他の計算機（たとえばクライアント計算機）を、各計算機が接続されるポートを独立して有効化、無効化が制御できる1台以上のネットワークスイッチで接続する。これらのネットワークスイッチには、クラスタ制御計算機を接続し、これで実行するネットワーク制御プログラムが、第1ノードを構成する計算機および第２ノードを構成する計算機が実行するクラスタ制御プログラムが待機系を実行系に切り替える前に、元々の実行系の計算機が接続するポートを無効化するように前記ネットワークスイッチの制御を実行する。これにより、元々実行系であった計算機をネットワークから切り離す。
【００１６】
一方、クラスタの各ノードを構成する計算機が実行するクラスタ制御プログラムは、クラスタ制御計算機が実行するネットワーク制御プログラムと連携して、前記ネットワークスイッチによる系切り替えを開始する前に、実行系の切り離しをクラスタ制御計算機が実行するネットワーク制御プログラムに要求する。
【００１７】
クラスタ制御計算機が実行するネットワーク制御プログラムがクラスタのノードの状態に合わせた制御を適正に実施するために、クラスタのノードを構成する計算機が実行するクラスタ制御プログラムは、クラスタ制御計算機が実行するネットワーク制御プログラムに、ノードの起動、実行系・待機系の遷移、ノードの停止といったイベントを通知する。
【発明の効果】
【００１８】
本発明によれば、二台の計算機で構成されるクラスタであって、クラスタの制御のために計算機間で共有する記憶装置がないクラスタ構成の場合に、相手系の状態を誤認識して系切り替えを実行してしまい、両方の計算機が実行系として振る舞うことを防止できる。
【００１９】
また、クラスタを構成する計算機の外部から計算機間の相互監視の状況を監視して、通信が途絶した側と判定される計算機をクラスタから隔絶することで、両系が実行系として振る舞うことを防止でき、かつ、確実に実行系の切り替えを実行できる。
【００２０】
また、不調である計算機を強制的に停止しなくても良いため、その計算機の障害解析に必要なデータが削除されてしまうことを防止できる。
【発明を実施するための最良の形態】
【００２１】
以下に、図面を用いて本発明の実施の形態を説明する。
【００２２】
（実施例1）
図１は、本発明の実施例１のシステムの構成を示すブロック図である。本発明に関するクラスタは、クラスタを構成する第１ノードの計算機１００と第２ノードの計算機１１０、クラスタ相互の通信ネットワークを形成する内部ネットワークスイッチ１２０、それぞれのクラスタにアクセスするクライアント計算機、それぞれのクラスタとクライアント計算機相互の通信ネットワークを形成する外部ネットワークスイッチ１３０、各クラスタからの情報を受けて、前記それぞれのネットワークスイッチのポートの有効化、無効化を制御するプログラムを実行するクラスタ制御計算機１４０から構成する。
【００２３】
第１ノードの計算機１００および第２ノードの計算機１１０は、通常の計算機であり、それぞれ、ＣＰＵ１０４，１１４およびメモリ１０５，１１５、これらをバス１０６，１１６へ接続するのを制御するバス制御装置１０７，１１７、ディスクアダプタ１０８，１１８を介してバス１０６，１１６へ接続される記憶装置１０９，１１９を備える。これらの計算機は、バス１０６，１１６と外部ネットワークスイッチ１３０を接続するための外部ネットワークアダプタ１０１，１１１、各ノードの計算機１００，１１０の実行系・待機系の切り替えを制御し、各ノードの計算機１００，１１０と内部ネットワークスイッチ１２０とを接続するための制御ネットワークアダプタ１０２，１１２および各ノードの計算機の実行系・待機系の評価とともに、各ノードの計算機１００，１１０と内部ネットワ一クスイッチ１２０とを接続するための内部ネットワークアダプタ１０３，１１３を備える。
【００２４】
外部ネットワークアダプタ１０１，１１１はポート１３０１，１３０２を介して外部ネットワークスイッチ１３０に接続される。また、クライアント計算機１５０はポート１３０３を介して外部ネットワークスイッチ１３０に接続される。第１ノードの計算機１００が実行系であれば、ポート１３０１，１３０３のみが有効化され、第１ノードの計算機１００とクライアント計算機１５０が接続される。第２ノードの計算機１１０が実行系であれば、ポート１３０２，１３０３のみが有効化され、第２ノードの計算機１１０とクライアント計算機１５０が接続される。
【００２５】
また、内部ネットワークアダプタ１０３，１１３はポート１２０１，１２０２を介して内部ネットワークスイッチ１２０に接続され、相互に自ノードの計算機１００，１１０の状態についての情報を伝達する。
【００２６】
制御ネットワークアダプタ１０２，１１２はポート１２０３，１２０４を介して内部ネットワークスイッチ１２０に接続される。また、内部ネットワークスイッチ１２０にはポート１２０５を介してクラスタ制御計算機１４０が接続される。制御ネットワークアダプタ１０２，１１２は前記内部ネットワークアダプタ１０３，１１３を介して得られる他ノードの計算機１１０，１００の状態についての情報と自ノードの計算機１００，１１０の状態に応じた制御信号を相互に交換するとともに、クラスタ制御計算機１４０とも制御信号を交換する。クラスタ制御計算機１４０は、収集した情報を基礎に、内部ネットワークスイッチ１２０および外部ネットワークスイッチ１３０の各ポートに有効化あるいは無効化の信号を送る。
【００２７】
第１ノードの計算機１００の内部ネットワークアダプタ１０３と第２ノードの計算機１１０の内部ネットワークアダプタ１１３が、内部ネットワークスイッチ１２０を介して相互に通信するために構成するネットワークおよび第１ノードの計算機１００、第２ノードの計算機１１０、クラスタ制御計算機１４０が、内部ネットワークスイッチ１２０を介してクラスタの制御に関する通信を行うために構成するネットワークは、内部ネットワークスイッチ１２０の設定により実現される。
【００２８】
図２は、実施例１におけるクラスタ制御を実現する手順を実行するプログラムの構成に着目したブロック図である。各ノードの計算機１００，１１０各プログラムは、それが実行される計算機の記憶装置１０８，１１８に格納されており、実行時はメモリ１０５，１１５にロードされて、ＣＰＵ１０４，１１４がプログラムを実行するが、簡単にプログラムを実行する、と簡明に表現することとする。クラスタ制御計算機１４０については、記憶装置、メモリ、ＣＰＵおよび内部ネットワークアダプタ１０３，１１３、外部ネットワークアダプタ１０１，１１１に対応するアダプタについて図示しなかったが、各ノードの計算機１００，１１０と同様に、記憶装置、メモリ、およびＣＰＵおよびアダプタを備えるものであることは言うまでもない。また、保持しているプログラムの実行についても同様である。
【００２９】
クラスタを構成する各ノードの計算機１００，１１０は、クラスタの外部、すなわち、クライアント計算機１５０に実際のサービスを提供するサービスプログラム２０１，２１１、クラスタの構成の制御を実施するクラスタ制御プログラム２０２，２１２、クラスタ制御計算機１４０にノードの実行状態の変更を連絡するネットワーク制御連携プログラム２０３，２１３を備え、実行される。
【００３０】
クラスタ制御計算機１４０は、内部ネットワークスイッチ１２０の各クラスタの接続ポートの有効化、無効化のネットワーク状況を監視する内部ネットワーク監視プログラム２４１、外部ネットワークスイッチ１３０の各クラスタの接続ポートの有効化、無効化の設定を変更するネットワーク制御プログラム２４２を備え、実行している。また、それらが参照する設定データを保持するスイッチ構成テーブル５００，クラスタ構成テーブル５１０を備える。これらについては、後述する。
【００３１】
次に、実施例１における各プログラムの動作について説明する。
【００３２】
各ノードのクラスタ制御プログラム２０２，２１２は、各ノードの運転モードを管理するプログラムである。クラスタ制御プログラム２０２，２１２は、内部ネットワークスイッチ１２０を介して互いに相手ノードの実行状態を監視している。例えば、第１ノードの計算機１００で実行するクラスタ制御プログラム２０２と第２ノードの計算機１１０で実行するクラスタ制御プログラム２１２は、制御ネットワークアダプタ１０２が接続される内部ネットワークスイッチ１２０のポート１２０３、制御ネットワークアダプタ１１２が接続されるポート１２０４を通じて、相互に、一定の周期で継続してメッセージを送る。それぞれのクラスタ制御プログラム２０２，２１２は相手ノードからのメッセージが一定の周期で継続して受信されるのを確認する。この相互の通信によって、各ノードの計算機１００，１１０は相互に実行状態を監視している。
【００３３】
各ノードの計算機の運転モードは、クラスタ制御プログラム２０２，２１２が実行していない停止状態、クラスタ制御２０２，２１２は実行しているがサービスプログラム２０１，２１２が実行していない開始状態、サービスプログラム２０１，２１２がサービスを提供している実行状態、サービスプログラム２０１，２１２が実行しているが処理結果を出力していない待機状態のいずれかである。
【００３４】
各ノードの計算機の運転モードの遷移について説明する。ノードの計算機を起動すると、運転モードは停止状態から開始状態へと遷移する。開始状態から実行状態、あるいは、待機状態への遷移は、通常、クラスタのオペレータの指示により実行する。自ノードの計算機が待機状態であるときに、相手ノードの計算機が待機状態になった、あるいは、実行状態であった相手ノードの計算機の運転状態が不明になった場合、クラスタ制御プログラム２０２，２１２が、自ノードの計算機の運転モードを待機状態から運転状態に遷移させる。オペレータの指示により実行状態のノードと待機状態のノードを入れ替える場合は、実行状態のノードを待機状態に遷移させる。これにより、待機状態にあった相手ノードのクラスタ制御プログラムが、実行状態にあったノードが待機状態に遷移したことを検知するようにして実施する。
【００３５】
サービスプログラム２０１，２１１は、クラスタ制御プログラム２０２，２１２と連携して、外部ネットワークアダプタ１０１，１１１が接続される外部ネットワークスイッチ１３０のポート１３０１，１３０２、クライアント計算機１５０が接続されるポート１３０３を介して、クライアント計算機１５０から送信されたサービス要求を処理する。クラスタ制御プログラム２０２，２１２とサービスプログラム２０１，２１２との連携は、サービスプログラム２０１，２１２を実行しているノードの計算機１００，１１０の実行状態の取得を含む。
【００３６】
第１ノードの計算機１００の運転モードが実行状態である場合、サービスプログラム２０１は要求の処理結果を出力する。この時、待機状態である第２ノードの計算機１１０では、サービスプログラム２１１は、処理結果を外部に出力せずに計算機１１０の内部、例えばディスク１１９、に記録する。記録するデータの内容は、第２ノードの計算機１１０が実行状態になったときに、サービスプログラム２１１が実行状態としてサービス要求処理の処理結果として出力するに足るデータである。また、実行系と待機系のサービスプログラム同士が連携して、リクエスト処理の進捗を同期していても良い。
【００３７】
図３は本発明の実施例１におけるクラスタの系切り替え手順の前半を示す処理フローである。これを参照して、第１ノードの計算機１００の動作を主体に運転モードの遷移について説明する。
【００３８】
第１ノードの計算機１００では、クラスタ制御プログラム２０２の監視処理は、第２ノードの計算機１１０からの一定周期のメッセージの受信に備えて待機している（ステップ３０１）。この受信処理は、内部ネットワークスイッチ１２０のポート１２０該こ接続されている内部ネットワークアダプタ１０３に一定時間メッセージが到着しない場合、失敗する。内部ネットワークアダプタ１０３にメッセージが正常に受信された場合（ステップ３０２の判定がＹｅｓ）は、メッセージ待機を繰り返す。第２ノードの計算機１１０からのメッセージ受信に失敗した場合（ステップ３０２の判定がＮｏ）には、第２ノードの計算機１１０が停止しているのかどうか判定する（ステップ３０３）。この判定の方法は様々の方法があるが、一般には、予め定めた期間連続してメッセージの正常受信に失敗した場合に第２ノードの計算機１１０が停止していると判定する。停止していると判定できない場合は、メッセージの受信処理（ステップ３０１）に戻る。
【００３９】
ステップ３０３で第２ノードの計算機１１０が停止していると判定された場合は、状態遷移（系切り替え処理）が必要かどうかを判定する（ステップ３０４）。状態遷移が必要と判定されたときは、第１ノードの計算機１００の運転モードが待機状態であるか判定する（ステップ３０５）。判定がＮｏ、すなわち、第１ノードの計算機１００の運転モードが実行状態である場合には系切り替えに関しては何もしないが、もし、待機状態である場合は、状態遷移開始処理（ステップ３０６）を実行する。この場合、ステップ３０６は、系切り替え処理を起動する処理である。
【００４０】
以上が、パラレルクラスタの基本的な動作である。次に、本発明を実現するための追加される手順について説明する。
【００４１】
一般に、クラスタのノードの計算機１００，１１０で実行するクラスタ制御プログラム２０２，２１２は、ノードの計算機の運転モードの変更を開始する時に、そのノードの計算機が提供するサービスにあわせた処理を組み込むことができるインターフェイスを持っている。本発明では、これを前提とする。本発明では、このインターフェイスを用いて、ネットワーク制御連携プログラム２０３，２１３が組み込まれる。これらネットワーク制御連携プログラム２０３，２１３は、クラスタ制御プログラム２０２，２１２の起動時と停止時、ノードの計算機の運転モード遷移時に実行される。
【００４２】
以下に、本発明における系切り替え処理について説明する。図３に示すフローの状態遷移開始処理（ステップ３０６）は系切り替え処理を起動する処理である。系切り替え処理は、状態遷移開始処理（ステップ３０６）にトリガーされて、組み込まれているネットワーク制御連携プログラム２０３を起動する（ステップ３１１）。この時、現在の運転モードと、新しく設定される運転モードをパラメータとしてネットワーク制御連携プログラム２０３に渡す。系切り替え処理は、ネットワーク制御連携プログラム２０３の起動後、その終了を待機する（ステップ３１２）。ステップ３１２の終了待機処理は、予め定義された時間でタイムアウトしても良い。
【００４３】
ネットワーク制御連携プログラム２０３は、クラスタ制御計算機１４０で実行するネットワーク制御プログラム２４２に、第１ノードの計算機１００で運転モード遷移が開始された旨を連絡し（ステップ３２１）、ネットワーク制御プログラム２４２の処理（ネットワーク遮断処理、すなわち、外部ネットワークスイッチ１３０のポート１３０１の無効化）完了を待機し（ステップ３２２）、処理完了後に終了する。ステップ３２２における待機処理は、予め定義された時間でタイムアウトしても良い。
【００４４】
連携プログラム２０３の終了を受けて、クラスタ制御プログラム２０２の系切り替え処理は、ノードの計算機の運転モードの変更処理を実施する（ステップ３１３）。
【００４５】
クラスタ制御プログラム２０２の起動処理と停止処理も、同様に、ネットワーク制御連携プログラム２０３を起動する処理を含む。これは、図３のステップ３０６からと同様の処理である。つまり、起動時は停止から開始への遷移であり、停止時はその時のモードから停止への遷移である。これらの処理フローは省略する。
【００４６】
図４は本発明の実施例１におけるクラスタの系切り替え手順の後半を示す処理フローである。これを参照して、ノードの計算機の運転モードの遷移と連携してクラスタのネットワーク構成を変更するクラスタ制御計算機１４０のネットワーク制御プログラム２４２の処理フローについて説明する。ここでも、第１ノードの計算機１００の動作を主体に説明する。
【００４７】
ネットワーク制御プログラム２４２は、クラスタのノードの計算機からの運転モード遷移の通知を待機している（ステップ４０１）。遷移の通知は、第１ノードの計算機１００の制御ネットワークアダプタ１０２、第２ノードの計算機１１０の制御ネットワークアダプタ１１２が接続されるポート１２０３，１２０４を介して内部ネットワークスイッチ１２０に導入されて、ポート１２０５によりクラスタ制御計算機１４０にステップ３１３で伝達される。
【００４８】
運転モード遷移の通知を受信すると、受け取った遷移の内容から処理を分岐する（ステップ４０２）。例えば、前述の相手ノードの計算機異常による系切り替え処理では、第２ノードの計算機１１０を停止と判定した第１ノードの計算機１００のクラスタ制御プログラム２０２は、第１ノードの計算機１００の運転モードが待機モードであるときは待機モードから実行モードに変更する。ネットワーク制御プログラム２４２は、この遷移の内容からステップ４０３に処理を移す。ステップ４０３では、運転モードを遷移するとの通知を送信した第１ノードの計算機１００の相手の第２ノードの計算機１１０を、内部ネットワークスイッチ１２０と外部ネットワークスイッチ１３０から切断する。具体的には、ネットワーク制御プログラム２４２は、内部ネットワークスイッチ１２０と、外部ネットワークスイッチ１３０に対して、第２ノードの計算機１１０の内部ネットワークアダプタ１１３と外部ネットワークアダプタ１１１が接続するポート１２０２，１３０２を無効化するように指示する。
【００４９】
ネットワーク制御連携プログラム２０３の通知（ステップ４０１）がクラスタ制御プログラム２０２の起動処理、すなわち、クラスタノードの計算機の停止から開始への遷移である起動時には、運転モード遷移通知元の第１ノードの計算機１００が接続される内部ネットワークスイッチ１２０のポート１２０１と外部ネットワークスイッチ１３０のポート１３０１を有効化するように指示する。（ステップ４０４）。逆に、クラスタノードの計算機を停止する場合、つまり、クラスタ制御プログラム２０２を停止する場合は、これらのポートを無効化する（ステップ４０５）。それ以外の遷移、実行→待機、実行・待機→開始の場合は、何もしない（図４のフローには記載なし）。
【００５０】
これらの処理のあと、通知の送信元にネットワーク構成変更の完了通知を送信する（ステップ４０６）。
【００５１】
次に、クラスタ制御計算機１４０が保持するデータ構造について、実施例１のデータ構造を図５（ａ）、（ｂ）を参照して説明する。このデータ構造は、例えば、クラスタ制御計算機１４０内の設定ファイルに、クラスタ制御計算機１４０で実行するプログラムが解釈可能な形式で記録され、それらのプログラムが参照可能である。クラスタ制御計算機１４０に、このような設定ファイルを作成する手順があってもよい。
【００５２】
図５（ａ）に示す５００はスイッチ構成テーブルである。このテーブル５００は、クラスタのネットワークを構成している内部ネットワークスイッチ１２０、外部ネットワークスイッチ１３０の情報を保持する。例えば、内部ネットワークスイッチ１２０、外部ネットワークスイッチ１３０の設定を変更する要求の送信先となる制御用ネットワークアドレス、実際にポートの有効化、無効化の制御や統計情報の取得を行う処理を実装する制御プログラムのパスなどを格納する。
【００５３】
図５（ｂ）に示す５１０はクラスタ構成テーブルである。このテーブル５１０には、クラスタの各ノードの計算機がスイッチのどのポートに接続しているかを保持する。例えば、内部ネットワークスイッチ１２０とそのポートの番号、外部ネットワークスイッチ１３０とそのポート番号を記録する。
【００５４】
ネットワーク制御プログラム２４２は、これらのテーブル５００，５１０を参照して、クラスタのネットワーク構成を変更できる。
【００５５】
クラスタ制御計算機１４０は、上記の設定内容をテーブルに格納する手順も有している。
【００５６】
また、テーブル５１０には、過去に取得した統計情報に関する記録に関するデータを記載しても良い。これについては、実施例２で説明する。
【００５７】
以上により、クラスタの運転モード遷移と連携して、系切り替え時にクラスタを構成するネットワーク構成を変更することができる。これにより、相互監視により停止していると判定されたノードの計算機をクラスタから切り離すことができ、確実に障害を発生しているノードの計算機の影響を遮断できる。加えて、相手ノードの計算機が一時的に停止している場合でも、２つのノードの計算機の運転モードが両方とも実行状態となることが確実に防止可能となる。
【００５８】
（実施例２）
実施例２では、実施例１の制御に加えて、以下の制御を実行するものとする。クラスタ制御計算機１４０で実行するネットワーク制御プログラム２４２が、ノードの計算機の相互監視のためのネットワークを構成している内部ネットワークスイッチ１２０のポートの送受信の統計情報を参照し、相手ノードの計算機からの通信が途絶していると判定される場合にクラスタ制御プログラム２０２，２１２に通知し、系切り替えを要求する。あるいは、ネットワーク制御プログラム２４２が、通信が途絶していると判定した相手ノードの計算機が接続するポートを無効化するようにスイッチの制御を実施する。
【００５９】
次に、本発明の実施例２について具体的に説明する。実施例２では、クラスタ制御計算機１４０が、内部ネットワークスイッチ１２０が収集している内部ネットワークの通信状況に関する統計情報を参照して、クラスタのネットワーク構成を変更することにより、障害が発生していると疑われるノードの計算機を隔離する方式を実現する。
【００６０】
一般に、ネットワークを構成するネットワークスイッチは、計算機が接続される各ポートの単位でパケット送受信数等の統計情報を記録している。また、これらの統計情報は、外部から参照可能となっている。
【００６１】
実施例２では、クラスタ制御計算機１４０で実行する内部ネットワーク監視プログラム２４１が、内部ネットワークを構成する内部ネットワークスイッチ１２０が取得している統計情報を取得する。具体的には、第１ノードの計算機１００の内部ネットワークアダプタ１０３および第２ノードの計算機１１０の内部ネットワークアダプタ１１３のそれぞれが接続している内部ネットワークスイッチ１２０のポート１２０１およびポート１２０２のネットワーク統計情報を取得する。
【００６２】
図６に、内部ネットワーク監視プログラム２４１の処理フローを示す。内部ネットワーク監視プログラム２４１は、一定の周期でステップ６０１ないし６０２の処理を実行する。まず、スイッチ構成テーブル５００とクラスタ構成テーブル５１０を参照して、内部ネットワークを構成している内部ネットワークスイッチ１２０のポートのネットワーク統計情報を取得する（ステップ６０１）。具体的には、クラスタ構成テーブル５１０の内部ネットワークの定義を参照して当該スイッチとポートの番号を求め、その統計情報を取得し記録する。
【００６３】
図５（ｂ）に示すテーブル５１０では、第１ノードの内部ネットワークスイッチポートは１２０１−１２０３と記載しているが、第１ノードは内部ネットワークスイッチ１２０の第１ポート１２０１、第３ポート１２０３で内部ネットワークに接続していることを意味する。これは図１の構成では、内部ネットワークスイッチ１２０のポート１２０１に内部ネットワークアダプタ１０３が接続され、内部ネットワークスイッチ１２０のポート１２０３に制御ネットワークアダプタ１０２が接続されていることを意味する。同様に、第２ノードの内部ネットワークスイッチポートは１２０２−１２０４と記載しているが、第２ノードは内部ネットワークスイッチ１２０の第２ポート１２０２、第４ポート１２０４で内部ネットワークスイッチ１２０に接続されていることを意味する。一方、第１ノードの外部ネットワークスイッチポートは１３０１と記載しているが、第１ノードは外部ネットワークスイッチ１３０の第１ポート１３０１で外部ネットワークに接続していることを意味する。これは図１の構成では、外部ネットワークスイッチ１３０のポート１３０１に外部ネットワークアダプタ１０１が接続されていることを意味する。同様に、第２ノードは外部ネットワークスイッチ１３０のポート１３０２で外部ネットワークスイッチ１３０に接続されていることを意味する。更に、テ一ブル５００を参照すれば、内部ネットワークスイッチ１２０から統計情報を取得するのに必要な管理ネットワークのアドレスや、スイッチ制御プログラムを取得できる。これらにより、内部ネットワークを構成するポートに関する統計情報を取得する。
【００６４】
次に、取得した統計情報に基づいて、クラスタのノードの運転状態を判定する（ステップ６０２）。判定の条件は様々であるが、例えば、ノードから内部ネットワークスイッチ１２０に対してある一定時間以上データの送信がない場合は、そのノードが停止していると判定する、といったことが可能である。
【００６５】
異常であると判定されたノードがある場合、そのノードが内部ネットワーク、外部ネットワークに接続するために利用しているポートを無効化する（ステップ６０３）。ここでも、テーブル５１０を参照すれば、無効化しなければならないスイッチ、及び、そのポート番号を取得できる。異常であると判定されたノードの運転モードが実行状態で、相手ノードが待機状態であれば、相手ノードのクラスタ制御プログラム２０２，２１２が系切り替えを実行し、待機状態から実行状態へ運転モードを遷移する。
【００６６】
以上により、クラスタの内部ネットワークをスイッチで構成し、そこで収集される統計情報から異常と判定されるノードを、クラスタから隔離することができる。これによって、ノードで実行するクラスタ制御プログラム２０２や２１２とは独立して、障害を発生しているノードをクラスタから切り離せる。例えば、クラスタ制御プログラムや何らかの要因によってノードの運転モードが変更できなくなってしまった場合でも、そのノードを切り離すことができ、外部への影響を抑えることができる。
【００６７】
加えて、異常なノードの計算機が接続するポートを無効化することに加えて、クラスタ制御計算機１４０から、残存したノードの計算機に系切り替えを実行するよう指示しても良い（ステップ６０４）。指示されたノードの計算機は、その時点で運転モードが待機状態ならば、系切り替えを起動して実行状態に遷移する処理を開始することができる。これによって、ノードの計算機のクラスタ制御プログラムが異常を検知するのを待つことなく、系切り替え処理を開始できる。
【００６８】
実施例２では、クラスタの内部ネットワークを１つの内部ネットワークスイッチ１２０で構成したが、複数のスイッチで構成されていても良い。この場合、ノードの計算機には内部ネットワークに接続するためのネットワークアダプタを複数搭載し、クラスタ構成テーブル５１０の内部ポートに複数のポートを記載しておけば良い。ネットワーク制御プログラム２４２は、テーブル５１０に記載されている全てのポートの有効化・無効化を実施する。また、内部ネットワーク監視プログラム２４１も、テーブル５１０記載の全ての内部ポートの統計情報を取得してノードの計算機の運転状態を判断すればよい。これによって、内部ネットワークを構成する内部ネットワークスイッチ１２０の１つが故障しても、クラスタとしての動作を継続させることが可能となる。
【００６９】
なお、上述の実施例では、内部ネットワークスイッチ１２０、外部ネットワークスイッチ１３０を別のものとして構成したが、これらは、ひとつのネットワークスイッチとしてもよいことは言うまでも無い。
【産業上の利用可能性】
【００７０】
共有の記憶装置を持たずに、ネットワークによる通信で処理を二重化するクラスタに適用可能である。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施例１のシステムの構成を示すブロック図である。
【図２】実施例１におけるクラスタ制御を実現する手順を実行するプログラムの構成に着目したブロック図である。
【図３】本発明の実施例１におけるクラスタの系切り替え手順の前半を示す処理フローである。
【図４】本発明の実施例１におけるクラスタの系切り替え手順の後半を示す処理フローである。
【図５】（ａ）、（ｂ）は本発明の実施例におけるクラスタ制御計算機が保持するデータ構造の例を示す図である。
【図６】本発明の実施例２における内部ネットワークの監視の手順を示す処理フローである。
【符号の説明】
【００７２】
１００，１１０…ノードの計算機、１０１，１１１…外部ネットワークアダプタ、１０２，１１２…制御ネットワークアダプタ、１０３，１１３…内部ネットワークアダプタ、１２０…内部ネットワークスイッチ、１３０…外部ネットワークスイッチ、１４０…クラスタ制御計算機、１５０…クライアント計算機、２０１，２１１…サービスプログラム、２０２，２１２…クラスタ制御プログラム、２０３，２１３…ネットワーク制御連携プログラム、２４１…内部ネットワーク監視プログラム、２４２…ネットワーク制御プログラム、５００…スイッチ構成テーブル、５１０…クラスタ構成テーブル。
【図１】
2007304687.tif 000003
【図２】
2007304687.tif 000004
【図３】
2007304687.tif 000005
【図４】
2007304687.tif 000006
【図５】
2007304687.tif 000007
【図６】
2007304687.tif 000008