説明

クラスタシステム及びコマンド競合制御方法

【課題】クラスタシステムの低価格化を可能とするクラスタシステムにおけるコマンド競合制御方法を提供する。
【解決手段】コマンド競合制御方法は、複数のサーバからなるクラスタシステムにおいて、各サーバが投入されたコマンドを実行するコマンド処理部と各サーバの要求及び通知をサーバ間で送受信する通信部とを有する、クラスタシステムにおけるコマンド競合制御方法であって、各サーバは、投入されたコマンドが競合する状態にあるか否かを判別して、又は、通信部を介して当該判別を他のサーバに要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力するコマンド競合制御部を備え、競合エラーの有無の信号に応じてコマンド競合制御部にて投入されたコマンドの終了又は実行をなすコマンド競合を制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高い可用性が要求されるクラスタシステム及びそのコマンド競合の制御方法に関する。
【背景技術】
【0002】
クラスタシステムは、コンピュータを複数台使用して冗長化することにより、システムの停止時間を最小限に抑え、業務の可用性(availability)を向上させる例えばサーバ−クライアントシステムとして用いられている。
【0003】
従来のクラスタシステムにおけるコマンド競合の制御は、コマンド競合制御機能を有した専用のシステム装置を用意して、このシステム装置にてコマンド競合制御を行った上で、ネットワーク構成装置にコマンドを転送するのが一般的であった(特許文献1、参照)。
【0004】
かかる従来の技術におけるコマンド制御方法では、複数のネットワーク構成装置に接続された専用のネットワーク管理システムにおいて、ネットワーク構成装置毎のコマンド競合エラーのチェック手段とコマンドが実行中か否かを示すコマンド実行中表示手段とを設けることにより、複数ネットワーク構成装置に跨るコマンドの競合チェックを可能としている。
【特許文献1】特開平5−95356号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来の技術では、ネットワーク管理システムなどの専用のシステム装置を用意する必要があり、クラスタシステムの低価格化の阻害要因となる問題があった。
【0006】
そこで、本発明は以上の従来の技術問題に鑑みて考案されたものであり、クラスタシステムの低価格化を可能とするクラスタシステムにおけるコマンド競合制御方法を提供することが解決しようとする課題の一つとして挙げられる。
【課題を解決するための手段】
【0007】
本発明によるクラスタシステムにおけるコマンド競合制御方法は、複数のサーバからなるクラスタシステムにおいて、各サーバが投入されたコマンドを実行するコマンド処理部と各サーバの要求及び通知をサーバ間で送受信する通信部とを有する、クラスタシステムにおけるコマンド競合制御方法であって、各サーバは、投入されたコマンドが競合する状態にあるか否かを判別して、又は、通信部を介して当該判別を他のサーバに要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力するコマンド競合制御部を備え、競合エラーの有無の信号に応じてコマンド競合制御部にて投入されたコマンドの終了又は実行をなすコマンド競合を制御することを特徴とする。
【0008】
本発明によるクラスタシステムは、複数のサーバからなり、かつ、各サーバが投入されたコマンドを実行するコマンド処理部と各サーバの要求及び通知をサーバ間で送受信する通信部とを有する、クラスタシステムであって、各サーバは、投入されたコマンドが競合する状態にあるか否かを判別して、又は、通信部を介して当該判別を他のサーバに要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力するコマンド競合制御部を備え、競合エラーの有無の信号に応じてコマンド競合制御部にて投入されたコマンドの終了又は実行をなすコマンド競合を制御することを特徴とする。
【0009】
上記クラスタシステム及びコマンド競合制御方法において、複数のサーバの内の1つが、コマンド毎にコマンドに関連する競合エラーの有無の競合条件を規定する競合データと、サーバ毎のコマンド処理部において実行されている実行中コマンドとコマンド処理部が属する実行中の実行サーバとの対応関係を規定する実行中コマンドデータと、を備え、コマンド競合制御部が、競合データの競合条件と実行中コマンドデータとを参照して、投入されたコマンドが競合する状態にあるか否かを判別して競合エラーの有無の信号を出力する、又は、当該判別を要求を受信した場合に当該判別を実行し当該判別の結果を送信することとすることができる。
【0010】
上記クラスタシステム及びコマンド競合制御方法において、コマンド競合制御部は、判別において競合エラーの出力に応じて、実行中コマンドデータの実行中コマンド及び実行サーバを、投入されたコマンド及びこれらから実行するサーバに設定、更新することとすることができる。
【0011】
上記クラスタシステム及びコマンド競合制御方法において、コマンド競合制御部は、コマンド処理終了の後、又は、コマンド処理終了の通知の受信の後、実行中コマンドデータから投入されたコマンドを削除することとすることができる。
【0012】
上記クラスタシステム及びコマンド競合制御方法において、各サーバは通信部を介して他のサーバの故障を検出できる他サーバ監視部を備え、他サーバ監視部がいずれかのサーバの故障を検出するとき、コマンド競合制御部は、実行中コマンドデータから故障したサーバ及びその投入コマンドを削除することとすることができる。
【発明を実施するための最良の形態】
【0013】
本発明による実施形態を、図を用いて説明する。
【0014】
図1は、本発明の一実施例を示すクラスタシステムのブロック図である。
【0015】
クラスタシステムは、ほぼ同一構成の複数のコンピュータからなり、唯一の運用サーバ1をなすものと、それ以外の1以上の待機サーバ2とから構成される。運用サーバ1と待機サーバ2にはコマンドを投入するためのキーボード、ディスプレイ装置などを有するコンソール端末3が接続されている。
【0016】
各サーバとなるコンピュータは、少なくとも、CPU(中央処理装置)、その周辺回路、記憶装置、入出力装置、及び通信装置をハードウエア(図示せず)として含む。ここで、記憶装置は、ROM(リードオンリメモリ)、RAM(ランダムアクセスメモリ)などのいわゆるメモリと、補助記憶としてのハードディスク装置などによって構成される。そして、その記憶装置には、CPUが実行すべきプログラム、データなどのソフトウエア(オペレーティングシステム、アプリケーション、ドライバ、etc)が記憶され、そのプログラムを実行するに際し必要なデータがテーブルやファイルなどの形で記憶される。
【0017】
運用サーバ1と待機サーバ2の各サーバは、コマンド受付部11、コマンド競合制御部12、コマンド投入部13、コマンド処理部14、他サーバ監視部15、通信部16を有する。
【0018】
コマンド処理部14は待機サーバ2及び運用サーバ1は投入されたコマンドを実行する。
【0019】
通信部16はネットワーク20に接続され、ネットワーク20を介して相互に情報通信を行う。ネットワーク20は、限定されないが、例えば、IP(Internet Protocol)ネットワークである。それぞれの通信部16で接続されている複数の待機サーバ2と、これらの待機サーバ2と連携する運用サーバ1とから構成されるクラスタシステムにおいて、通信部16は、運用サーバ1及び待機サーバ2の要求及び通知をそれらの間で送受信する。
【0020】
また、運用サーバ1には、そのコマンド競合制御部12より必要に応じて参照あるいは設定、更新される実行中コマンドデータ32及び競合データ31がそれぞれファイルとして記憶装置に格納されている。特に、動的に変化する実行中コマンドデータ32は一般的にメモリに格納される。
【0021】
なお、待機サーバ2が運用サーバとなった場合には、新たな運用サーバ(待機サーバ2)が競合データ31及び実行中コマンドデータ32をそれぞれファイルとして記憶装置に格納することになる。特に、動的に変化する実行中コマンドデータ32は新たな運用サーバのメモリに格納されることになる。
【0022】
ここで、運用及び待機サーバや、その中の各「部」、及びその中の手段はCPU及び記憶装置などコンピュータにおいて実行されるソフトウエアによって各種ハードウエアとともに実現されるものである。
【0023】
例えば、運用サーバ1と待機サーバ2は、各コンピュータ起動時、オペレーティングシステム、クラスタシステムアプリケーションが動作し、その後、表1に示すような起動モードテーブルの生成し、運用モード及び待機モードとして記憶装置に格納され、それらのモードに従ってそれぞれ動作する。
【0024】
表1に示す起動モードテーブルは、コンピュータ番号、起動モードのデータなどを記憶する。ここで、コンピュータNo.は、クラスタシステム内のコンピュータを識別する番号で、起動モードは、コンピュータ番号に対応付けられた運用モード及び待機モードを示すデータであり、そのコンピュータ番号を有するコンピュータのアプリケーションの動作状態を表す。なお、この起動モード処理は、電源投入などによりコンピュータが初期化や、再起動されたときに起動される。コンピュータ1及び2が運用サーバ1及び待機サーバ2となり、それぞれの記憶装置にそれらの識別データが格納されることになる。
【0025】
【表1】

【0026】
サーバが運用サーバ1の場合のコマンド競合制御部12は、投入されたコマンドがシステムにおいて競合する状態にあるか否かを判別して競合エラーの有無の信号を出力し、その信号に応じてコマンド処理部14における投入されたコマンドの終了又は実行をなすコマンド競合を制御する。一方、サーバが待機サーバ2の場合のコマンド競合制御部12は、通信部16を介して当該判別を他のサーバすなわち運用サーバ1に要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力し、その信号に応じてコマンド競合制御部12が投入されたコマンドの終了又は実行をなすコマンド競合を制御する。
【0027】
運用サーバ1の記憶装置に格納されている競合データ31は、コマンド競合制御部12へ投入された各種のコマンド(以下、単に投入コマンドいう)と実行中の各種のコマンドとの競合条件を規定する予め設定されているデータである。競合データ31はコマンド種別毎に当該コマンドに関連する競合条件すなわち、コマンド1〜nの投入及び実行中の競合条件を規定し、たとえば、下記の表2の対応テーブルである。この競合データテーブルの競合条件中、○は「”実行中コマンド”がクラスタシステム内のいずれかのサーバで実行中であっても、”投入コマンド”は競合エラーとならない」条件を示し、△は「”投入コマンド”が投入されたサーバ(以下、単に投入サーバいう)内で”実行中コマンド”が実行中の場合は”投入コマンド”は競合エラーとなるが、他サーバで”実行中コマンド”が実行中の場合は”投入コマンド”は競合エラーとならない」条件を示し、×は「”実行中コマンド”がクラスタシステム内のいずれかのサーバで実行中は”投入コマンド”は競合エラーとなる」条件を示す。
【0028】
【表2】

【0029】
運用サーバ1の記憶装置に格納されている実行中コマンドデータ32は、コマンド処理部14で実行されている各種のコマンド(実行中コマンド)と、かかるコマンド処理部14が属する実行中のサーバ(実行サーバ)と、の対応関係(状態)を規定するデータである。たとえば、実行中コマンドデータ32は、運用サーバ1と待機サーバ2では、下記の表3のテーブルの場合がある。このテーブル中、selfは自サーバ(運用サーバ1)で或るコマンド1の実行中を示し、mateは自サーバ以外の他サーバ(待機サーバ2)で或るコマンド2が実行中であることを示す。ここで、実行中コマンドデータ32はコマンド種別毎の投入されたコマンドが実行されている運用サーバ1又は待機サーバ2のいずれかを示しているが、コマンド種別に応じて、実行サーバが運用サーバ1(self)のみ又は待機サーバ2(mate)のみの場合もあり得る。
【0030】
【表3】

【0031】
実行中コマンドデータ32は、運用サーバ1に対する待機サーバ毎でコマンド種別毎に作成され、投入コマンド及び投入サーバに応じて更新されるので、待機サーバの個数に対応する数のテーブルとして運用サーバ1の記憶装置に格納されている。
【0032】
<運用サーバのコマンド競合制御方法>
運用サーバ1に或るコマンドを投入した場合の運用サーバのコマンド競合制御方法を、を、図2に示す動作フローに従って説明する。
【0033】
まず、コンソール端末3からの投入コマンドをコマンド受付部11で受け付ける(ステップS1)。
【0034】
次に、運用サーバ1のコマンド競合制御部12は、投入コマンドについて、競合データ31及び実行中コマンドデータ32を利用して競合エラーの有無(有又は無)を判定する(ステップS2)。ここで、上記の競合データ31及び実行中コマンドデータ32から導かれる運用サーバ1における競合エラー有無の判定論理を表4に示す。
【0035】
【表4】

【0036】
このように、コマンド競合制御部12が競合データ31と実行中コマンドデータ32とから導かれる競合エラーの有無を判定した後、かかるコマンド競合制御部12の判定で競合エラーとなる場合は、コンソール端末3に競合エラーを応答して終了する(ステップS3)。
【0037】
一方、競合エラー無の場合は、コマンド競合制御部12がすべての実行中コマンドデータ32に投入コマンドをselfとして設定、更新する(ステップS4)。すなわち、コマンド競合制御部12が競合データ31と実行中コマンドデータ32とから導かれる競合エラーの有無に応じて実行中コマンドデータ32にコマンド状態を更新する。
【0038】
次に、コマンド投入部13を介してコマンド処理部14が投入コマンドのコマンド処理を行う(ステップS5)。
【0039】
最後に、コマンド処理終了後、実行中コマンドデータ32から投入コマンドを削除して終了する(ステップS6)。
【0040】
<待機サーバのコマンド競合制御方法>
次に、待機サーバ2にコマンドを投入した場合のクラスタシステム(待機サーバ2及び運用サーバ1)のコマンド競合制御方法を、図3及び図4に示す動作フローに従って説明する。
【0041】
まず、図3に示すように、待機サーバ2において、コンソール端末3からの投入コマンドをコマンド受付部11で受け付ける(ステップS11)。
【0042】
次に、待機サーバ2のコマンド競合制御部12が投入コマンドの実行可否の判定(競合エラー有無)を運用サーバ1へ通信部16を介して要求送信する(ステップS12)。
【0043】
そして、待機サーバ2のコマンド競合制御部12が運用サーバ1から送信される通知を待つ(ステップS13)。
【0044】
次に、待機サーバ2のコマンド競合制御部12は、運用サーバ1から実行可否の判定結果を受信したとき、競合エラー有又は競合エラー無の判定をする(ステップS14)。
【0045】
ステップS14において、待機サーバ2のコマンド競合制御部12が競合エラー有を受信した場合は、コンソール端末3に競合エラーを応答して終了する(ステップS15)。
【0046】
ステップS14において、待機サーバ2が競合エラー無を受信した場合は、コマンド投入部13を介してコマンド処理部14が投入コマンドのコマンド処理を行う(ステップS16)。
【0047】
最後に、コマンド処理終了後、待機サーバ2のコマンド競合制御部12が運用サーバ1に実行中コマンドデータ32から投入コマンドの削除を運用サーバ1に通信部16を介して要求送信して終了する(ステップS17)。
【0048】
次に、運用サーバ1側の待機サーバ2のためのコマンド競合制御方法を、図4に示す動作フローに従って説明する。
【0049】
まず、図4に示すように、運用サーバ1のコマンド競合制御部12は、通信部16を介してステップS12において待機サーバ2からの実行可否の判定要求を受信する(ステップS21)。
【0050】
次に、待機サーバ2から実行可否の判定を要求された投入コマンドについて、運用サーバ1のコマンド競合制御部12は競合データ31及び実行中コマンドデータ32を利用して競合エラーの有無を判定する(ステップS22)。ここで、上記の競合データ31及び実行中コマンドデータ32から導かれる待機サーバ2のための運用サーバ1における競合エラー有無の判定論理を表5に示す。
【0051】
【表5】

【0052】
かかるコマンド競合制御部12の判定で競合エラーとなる場合は、待機サーバ2に競合エラー有を応答して終了する(ステップS23)。
【0053】
一方、競合エラー無の場合は、実行中コマンドデータ32において投入コマンドをmateとして設定、更新する(ステップS24)。
【0054】
次に、運用サーバ1のコマンド競合制御部12は待機サーバ2に競合エラー無を通信部16を介して応答送信する(ステップS25)。このように、運用サーバ1において、コマンド競合制御部12は、要求された投入コマンドについての競合データ31と実行中コマンドデータ32とから導かれる競合エラーの有無を判定し、競合エラーの有無をコンソール端末3及び待機サーバ2に通知する。
【0055】
次に、運用サーバ1が待機サーバ2から送信される通知を待つ(ステップS26)。
【0056】
最後に、ステップS17の待機サーバ2のコマンド処理終了後の投入コマンドの削除要求を、待機サーバ2からを受信すると、実行中コマンドデータ32から投入コマンドを削除して終了する(ステップS27)。なお、待機サーバが複数ある場合は、待機サーバ毎に競合データ31と比較して実行可能(競合エラー無)なら、それぞれの待機サーバ2に競合エラー無を送信し、もし競合エラーのため実行不可能ならコンソール端末3にコマンド競合エラー有を通知し、コマンドを終了させる。
【0057】
一方、待機サーバ2にてコマンド実行中に、待機サーバ2が故障した場合は、運用サーバ1の実行中コマンドデータ32における待機サーバ2(故障したサーバ)の投入コマンドが実行中という設定のままとなってしまう。
【0058】
これを解消するために、図1の他サーバ監視部15が待機サーバ2の故障を検出するとコマンド競合制御部12と連携して実行中コマンドデータ32から故障したサーバの投入コマンドを削除する。
【0059】
一般に、クラスタシステムを構成するそれぞれのサーバは、他のサーバに対して、ハートビートメッセージを動作中として、所定の時間間隔で繰り返しネットワークに送信する。そこで、他のサーバによりハートビートメッセージが例えば運用サーバ1に受信されなくなった場合には、そのハートビートメッセージの送信元サーバは、故障サーバになり、動作していないと判定される。
【0060】
なお、クラスタシステム内から運用サーバ1が存在しなくなった場合は、それぞれのサーバのコマンド競合制御部12が競合データ31、実行中コマンドデータ32を利用してコマンド競合制御を行う。
【0061】
以上のように、クラスタシステムを構成するサーバ間で連携してコマンド競合制御を行うことにより、専用の装置を設置する必要が無くなり、コストダウンを図ることが可能となる。
【0062】
運用サーバ1と待機サーバ2が1対1のクラスタシステムに適用した例を説明したが、待機サーバ2を複数とした場合も同一の方法で適用可能である。
【0063】
各サーバの記憶装置をサーバ間でミラーすることにより、すなわち、待機サーバは、受け取ったデータを待機サーバの記憶装置に書き込むことで、運用サーバと待機サーバ間のデータを同期可能とすることができる。
【0064】
以上のように本発明によるクラスタシステム及びコマンド競合制御方法によれば、競合データと実行中コマンドデータを利用して、クラスタシステムを構成するサーバが連携してコマンド競合を制御することにより、システムの低価格化を実現できる。
【図面の簡単な説明】
【0065】
【図1】本発明による実施例を示すクラスタシステムのブロック図である。
【図2】本発明による実施例のクラスタシステムの運用サーバのコマンド競合制御方法を示す動作フローチャートである。
【図3】本発明による実施例のクラスタシステムの運用サーバのコマンド競合制御方法を示す動作フローチャートである。
【図4】本発明による実施例のクラスタシステムの運用サーバのコマンド競合制御方法を示す動作フローチャートである。
【符号の説明】
【0066】
1 運用サーバ
2 待機サーバ
3 コンソール端末
11 コマンド受付部
12 コマンド競合制御部
13 コマンド投入部
14 コマンド処理部
15 他サーバ監視部
16 通信部
20 ネットワーク
31 競合データ
32 実行中コマンドデータ

【特許請求の範囲】
【請求項1】
複数のサーバからなるクラスタシステムにおいて、各サーバが投入されたコマンドを実行するコマンド処理部と各サーバの要求及び通知をサーバ間で送受信する通信部とを有する、クラスタシステムにおけるコマンド競合制御方法であって、
各サーバは、投入されたコマンドが競合する状態にあるか否かを判別して、又は、前記通信部を介して当該判別を他のサーバに要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力するコマンド競合制御部を備え、前記競合エラーの有無の信号に応じて前記コマンド競合制御部にて投入されたコマンドの終了又は実行をなすコマンド競合を制御することを特徴とするコマンド競合制御方法。
【請求項2】
前記複数のサーバの内の1つが、コマンド毎に前記コマンドに関連する競合エラーの有無の競合条件を規定する競合データと、サーバ毎のコマンド処理部において実行されている実行中コマンドと前記コマンド処理部が属する実行中の実行サーバとの対応関係を規定する実行中コマンドデータと、を備え、前記コマンド競合制御部が、前記競合データの前記競合条件と前記実行中コマンドデータとを参照して、前記投入されたコマンドが競合する状態にあるか否かを判別して前記競合エラーの有無の信号を出力する、又は、当該判別を要求を受信した場合に当該判別を実行し当該判別の結果を送信することを特徴とする請求項1記載のコマンド競合制御方法。
【請求項3】
前記コマンド競合制御部は、前記判別において前記競合エラーの出力に応じて、前記実行中コマンドデータの前記実行中コマンド及び前記実行サーバを、前記投入されたコマンド及びこれらから実行するサーバに設定、更新することを特徴とする請求項2記載のコマンド競合制御方法。
【請求項4】
前記コマンド競合制御部は、コマンド処理終了の後、又は、コマンド処理終了の通知の受信の後、前記実行中コマンドデータから前記投入されたコマンドを削除することを特徴とする請求項2又は3記載のコマンド競合制御方法。
【請求項5】
各サーバは前記通信部を介して他のサーバの故障を検出できる他サーバ監視部を備え、前記他サーバ監視部がいずれかのサーバの故障を検出するとき、前記コマンド競合制御部は、前記実行中コマンドデータから故障したサーバ及びその投入コマンドを削除することを特徴とする請求項2〜4のいずれか1記載のコマンド競合制御方法。
【請求項6】
複数のサーバからなり、かつ、各サーバが投入されたコマンドを実行するコマンド処理部と各サーバの要求及び通知をサーバ間で送受信する通信部とを有する、クラスタシステムであって、
各サーバは、投入されたコマンドが競合する状態にあるか否かを判別して、又は、前記通信部を介して当該判別を他のサーバに要求送信し当該判別の結果を受信して、競合エラーの有無の信号を出力するコマンド競合制御部を備え、前記競合エラーの有無の信号に応じて前記コマンド競合制御部にて投入されたコマンドの終了又は実行をなすコマンド競合を制御することを特徴とするクラスタシステム。
【請求項7】
前記複数のサーバの内の1つが、コマンド毎に前記コマンドに関連する競合エラーの有無の競合条件を規定する競合データと、サーバ毎のコマンド処理部において実行されている実行中コマンドと前記コマンド処理部が属する実行中の実行サーバとの対応関係を規定する実行中コマンドデータと、を備え、前記コマンド競合制御部が、前記競合データの前記競合条件と前記実行中コマンドデータとを参照して、前記投入されたコマンドが競合する状態にあるか否かを判別して前記競合エラーの有無の信号を出力する、又は、当該判別を要求を受信した場合に当該判別を実行し当該判別の結果を送信することを特徴とする請求項6記載のクラスタシステム。
【請求項8】
前記コマンド競合制御部は、前記判別において前記競合エラーの出力に応じて、前記実行中コマンドデータの前記実行中コマンド及び前記実行サーバを、前記投入されたコマンド及びこれらから実行するサーバに設定、更新することを特徴とする請求項7記載のクラスタシステム。
【請求項9】
前記コマンド競合制御部は、コマンド処理終了の後、又は、コマンド処理終了の通知の受信の後、前記実行中コマンドデータから前記投入されたコマンドを削除することを特徴とする請求項7又は8記載のクラスタシステム。
【請求項10】
各サーバは前記通信部を介して他のサーバの故障を検出できる他サーバ監視部を備え、前記他サーバ監視部がいずれかのサーバの故障を検出するとき、前記コマンド競合制御部は、前記実行中コマンドデータから故障したサーバ及びその投入コマンドを削除することを特徴とする請求項7〜9のいずれか1記載のクラスタシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate