(57)【要約】【課題】予備を設けたコンピュータシステムのコストの低減する。【解決手段】設定された複数のルールに応じてクライアントからのイベントを処理するサーバシステムにおいて、複数のサーバを用意し、ルール毎にプライマリサーバとセカンダリサーバを任意に選択してそれらのサーバにルールを設定し、プライマリとしてルールを設定されたサーバは常にイベント処理結果をクライアントに通知するが、セカンダリとしてルールを設定されたサーバはプライマリとしてルールを設定されたサーバが障害時のみにイベント処理結果をクライアントに通知することを特徴とする。【選択図】図１
2007257023.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバを連結して多数のイベントを処理するサーバ多重化システムであって、
前記複数のサーバのうち、イベントを処理するプライマリサーバおよびセカンダリサーバを定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールを定める振り分けルールを出力するルール分配部と、
処理を行う前記イベントと前記振り分けルールとを入力し、該振り分けルールに示されるプライマリサーバおよびセカンダリサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布する振り分け装置と、を具備し、
前記サーバのそれぞれは、
前記ルールごとに自身がプライマリサーバまたはセカンダリサーバであるか、および、自身がセカンダリサーバである場合のプライマリサーバが記述されたルールテーブルと、
前記複数のサーバの生存状態が格納されたサーバ生存テーブルと、
前記振り分け装置からの前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身がプライマリサーバ、または、セカンダリサーバのいずれとして定められているかを確認し、プライマリサーバとして定められている場合には前記イベントの処理結果を出力させ、セカンダリサーバとして定められている場合には前記サーバ生存テーブルを参照し、プライマリサーバが生存していない場合には前記イベントの処理結果を出力させる制御装置とを有するサーバ多重化システム。
【請求項２】
請求項１記載のサーバ多重化システムにおいて、
前記ルール分配部は、ルールに応じてセカンダリサーバを定めないサーバ多重化システム。
【請求項３】
請求項１または請求項２記載のサーバ多重化システムにおいて、
前記ルール分配部は、前記複数のサーバのうち、プライマリサーバとして定めるサーバの数をセカンダリサーバして定めるサーバの数よりも大として定めるサーバ多重化システム。
【請求項４】
複数のサーバを連結して多数のイベントを処理するサーバ多重化システムであって、
前記複数のサーバのうち、イベントを処理するサーバの優先順位を定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールを定める振り分けルールを出力するルール分配部と、
処理を行う前記イベントと前記振り分けルールとを入力し、該振り分けルールに示されるイベントを処理するサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布する振り分け装置と、を具備し、
前記サーバのそれぞれは、
前記ルールごとに自身の優先順位、および、自身よりも優先順位が上位のサーバが記述されたルールテーブルと、
前記複数のサーバの生存状態が格納されたサーバ生存テーブルと、
前記振り分け装置からの前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身の優先順位を確認し、最優先として定められている場合には前記イベントの処理結果を出力させ、優先度が低く定められている場合には前記サーバ生存テーブルを参照し、自身よりも優先度の高いサーバが生存していない場合には前記イベントの処理結果を出力させる制御装置とを有するサーバ多重化システム。
【請求項５】
複数のサーバを連結して多数のイベントを処理するサーバ多重化システムで行われるサーバ多重化方法であって、
前記複数のサーバのうち、イベントを処理するプライマリサーバおよびセカンダリサーバを定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールである振り分けルールを定め、
前記振り分けルールに示されるプライマリサーバおよびセカンダリサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布し、
前記サーバのそれぞれは、前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身がプライマリサーバ、または、セカンダリサーバのいずれとして定められているかを確認し、プライマリサーバとして定められている場合には前記イベントの処理結果を出力し、セカンダリサーバとして定められている場合には前記サーバ生存テーブルを参照し、プライマリサーバが生存していない場合には前記イベントの処理結果を出力するサーバ多重化方法。
【請求項６】
請求項５記載のサーバ多重化方法において、
ルールに応じてセカンダリサーバを定めないサーバ多重化方法。
【請求項７】
請求項５または請求項６記載のサーバ多重化方法において、
前記複数のサーバのうち、プライマリサーバとして定めるサーバの数をセカンダリサーバして定めるサーバの数よりも大として定めるサーバ多重化方法。
【請求項８】
複数のサーバを連結して多数のイベントを処理するサーバ多重化システムで行われるサーバ多重化方法であって、
前記複数のサーバのうち、イベントを処理するサーバの優先順位を定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールである振り分けルールを定め、
前記振り分けルールに示されるイベントを処理するサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布し、
前記サーバのそれぞれは、前記振り分けルールおよび前記ルールテーブルを参照して自身の優先順位を確認し、最優先として定められている場合には前記イベントの処理結果を出力し、優先度が低く定められている場合には前記サーバ生存テーブルを参照し、自身よりも優先度の高いサーバが生存していない場合には前記イベントの処理結果を出力するサーバ多重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現用機のサーバと予備機であるサーバとを有するコンピュータシステムにおけるサーバ多重化システムおよびサーバ多重化方法に関する。
【背景技術】
【０００２】
正常時に使用される現用機と、現用機に障害が発生した場合に使用される予備機と備えるコンピュータシステムについては、例えば特許文献１（特許第３００８８８７号公報）に開示されている。
【０００３】
このようなシステムの一つであるサーバが二重化された従来のシステムについて、図７を参照して説明する。
【０００４】
図７に示すシステムでは、サーバ単位で現用機であるプライマリサーバ６０２ａと、予備機であるセカンダリサーバ６０２ｂを定義していた。
【０００５】
送信元であるクライアント６０４がイベント６０９を送信すると、該イベント６０９は振り分け装置６０１によりプライマリサーバ６０２ａとセカンダリサーバ６０２ｂに振り分けられる。プライマリサーバ６０２ａとセカンダリサーバ６０２ｂは同じ処理を行い、お互いに生存確認６０８を行っており、プライマリサーバ６０２ａ生存時にはプライマリサーバ６０２ａのみが結果６１１を送信先であるクライアント６０５へ出力し、セカンダリサーバ６０２ｂは結果６１２を出力しない。そして、プライマリサーバ６０２ａが障害になると、セカンダリサーバ６０２ｂがその障害を検出し、結果６１２の出力を開始することにより二重化を実現していた。
【特許文献１】特許第３００８８８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
図７に示した従来例においては、プライマリサーバ１台に対しセカンダリサーバ１台が必要なためコストが２倍かかるという問題点がある。
【０００７】
近年のコンピュータシステムでは、複数のサーバを連結して多数のイベントを処理するコンピュータシステムが一般的であるが、図７に示した技術をこのようなシステムに適用した場合には実際に処理を行うサーバの数の倍の台数が必要となってしまう。
【０００８】
本発明は上述したような従来の技術が有する問題点に鑑みてなされたものであって、予備を設けたコンピュータシステムのコストの低減することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のサーバ多重化システムは複数のサーバを連結して多数のイベントを処理するサーバ多重化システムであって、
前記複数のサーバのうち、イベントを処理するプライマリサーバおよびセカンダリサーバを定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールを定める振り分けルールを出力するルール分配部と、
処理を行う前記イベントと前記振り分けルールとを入力し、該振り分けルールに示されるプライマリサーバおよびセカンダリサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布する振り分け装置と、を具備し、
前記サーバのそれぞれは、
前記ルールごとに自身がプライマリサーバまたはセカンダリサーバであるか、および、自身がセカンダリサーバである場合のプライマリサーバが記述されたルールテーブルと、
前記複数のサーバの生存状態が格納されたサーバ生存テーブルと、
前記振り分け装置からの前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身がプライマリサーバ、または、セカンダリサーバのいずれとして定められているかを確認し、プライマリサーバとして定められている場合には前記イベントの処理結果を出力させ、セカンダリサーバとして定められている場合には前記サーバ生存テーブルを参照し、プライマリサーバが生存していない場合には前記イベントの処理結果を出力させる制御装置とを有する。
【００１０】
この場合、前記ルール分配部は、ルールに応じてセカンダリサーバを定めないこととしてもよい。
【００１１】
また、前記ルール分配部は、前記複数のサーバのうち、プライマリサーバとして定めるサーバの数をセカンダリサーバして定めるサーバの数よりも大として定めることとしてもよい。
【００１２】
本発明の他の形態によるサーバ多重化システムは複数のサーバを連結して多数のイベントを処理するサーバ多重化システムであって、
前記複数のサーバのうち、イベントを処理するサーバの優先順位を定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールを定める振り分けルールを出力するルール分配部と、
処理を行う前記イベントと前記振り分けルールとを入力し、該振り分けルールに示されるイベントを処理するサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布する振り分け装置と、を具備し、
前記サーバのそれぞれは、
前記ルールごとに自身の優先順位、および、自身よりも優先順位が上位のサーバが記述されたルールテーブルと、
前記複数のサーバの生存状態が格納されたサーバ生存テーブルと、
前記振り分け装置からの前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身の優先順位を確認し、最優先として定められている場合には前記イベントの処理結果を出力させ、優先度が低く定められている場合には前記サーバ生存テーブルを参照し、自身よりも優先度の高いサーバが生存していない場合には前記イベントの処理結果を出力させる制御装置とを有する。
【００１３】
本発明のサーバ多重化方法は複数のサーバを連結して多数のイベントを処理するサーバ多重化システムで行われるサーバ多重化方法であって、
前記複数のサーバのうち、イベントを処理するプライマリサーバおよびセカンダリサーバを定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールである振り分けルールを定め、
前記振り分けルールに示されるプライマリサーバおよびセカンダリサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布し、
前記サーバのそれぞれは、前記イベントおよび振り分けルールの配布を受けると、前記振り分けルールおよび前記ルールテーブルを参照して自身がプライマリサーバ、または、セカンダリサーバのいずれとして定められているかを確認し、プライマリサーバとして定められている場合には前記イベントの処理結果を出力し、セカンダリサーバとして定められている場合には前記サーバ生存テーブルを参照し、プライマリサーバが生存していない場合には前記イベントの処理結果を出力する。
【００１４】
この場合、ルールに応じてセカンダリサーバを定めないこととしてもよい。
【００１５】
また、前記複数のサーバのうち、プライマリサーバとして定めるサーバの数をセカンダリサーバして定めるサーバの数よりも大として定めることとしてもよい。
【００１６】
本発明の他の形態によるサーバ多重化方法は複数のサーバを連結して多数のイベントを処理するサーバ多重化システムで行われるサーバ多重化方法であって、
前記複数のサーバのうち、イベントを処理するサーバの優先順位を定める複数のルールを決定し、各サーバに分配するとともに前記イベントごとに使用するルールである振り分けルールを定め、
前記振り分けルールに示されるイベントを処理するサーバとして定められたサーバに対して処理を行う前記イベントをコピーして前記振り分けルールとともに配布し、
前記サーバのそれぞれは、前記振り分けルールおよび前記ルールテーブルを参照して自身の優先順位を確認し、最優先として定められている場合には前記イベントの処理結果を出力し、優先度が低く定められている場合には前記サーバ生存テーブルを参照し、自身よりも優先度の高いサーバが生存していない場合には前記イベントの処理結果を出力する。
【発明の効果】
【００１７】
本発明により処理ルール毎に耐障害制御を選択することができ、柔軟な耐障害制御が可能となる。例えば、重要なルールのみセカンダリルールを設定して、それほど重要でないルールはセカンダリルールを設定せず、障害時には重要なルールのみをフェールオーバーすることにより、障害時には機能を縮退した運用が可能となる。また、サーバ単位のフェールオーバーでは、サーバ１台につき１台のバックアップが必要であり２倍のリソースを必要としていたが、本発明ではルールの分配の調整（サーバ間に均等プライマリルールとセカンダリルールを分配する、重要なルールのみセカンダリルールを設定するなど）により対障害用リソースの調整が容易である。
【発明を実施するための最良の形態】
【００１８】
次に、本発明の実施例について図面を参照して説明する。
【００１９】
図１は本発明によるシステムの第１の実施例の構成を示すブロック図である。
【００２０】
本実施例のシステムは複数のサーバ１０２ａ〜１０２ｃ（サーバ＃１〜サーバ＃３）、振り分け装置１０１、ルール分配部１０３からなる。また、システムは送信元クライアント１０４と送信先クライアント１０５と通信を行う。なお、図１において送信元クライアント１０４と送信先クライアント１０５は別として示しているが、同一でもよい。
【００２１】
なお、振り分け装置１０１、サーバ１０２ａ〜１０２ｃ、ルール分配部１０３のそれぞれは、制御装置、記憶装置、入力装置および表示装置からなる一般的なコンピュータにより構成されるものである。これらの各部については図示せず、以下でも特に説明しないが、各構成要素の動作は記憶装置に格納されたプログラムにより動作する制御装置により制御される。また、振り分け装置１０１、サーバ１０２ａ〜１０２ｃ、ルール分配部１０３を独立したものとして示しているが、これらを纏めて１つのデータ処理装置を構成するものとしてもよい。
【００２２】
サーバ１０２ａ〜１０２ｃのそれぞれは不図示のバスを介して相互に接続して互いの生存確認を行っている。この生存確認は例えばイーサネットを使用する場合にはブロードキャストパケットを用いて行われる。
【００２３】
図２は、各サーバ１０２ａ〜１０２ｃの内部の要部構成を示す図であり、図２では例としてサーバ１０２ｂ（サーバ＃２）をサーバ２０１としてその内部構成が示されているが、すべてのサーバは同様の構成を備えている。
【００２４】
各サーバ１０２ａ〜１０２ｃは内部にルールテーブル２０２とサーバ生存テーブル２０６を持つ。
【００２５】
ルールテーブル２０２には、複数の処理ルールが記述されるルール２０３、各ルール毎に自サーバがプライマリかセカンダリかを示すフラグ２０２、および自サーバがセカンダリの場合に、そのルールのプライマリサーバが設定されるプライマリサーバが記述されるプライマリサーバ２０５の項目が対応して格納される。
【００２６】
図２では、ルール２０３として処理ルール２０３ａ（ルールＡ），２０３ｂ（ルールＢ）が記述され、フラグ２０２としてフラグ２０４ａ（セカンダリ），２０４ｂ（プライマリ）が記述され、ルールＡにおけるプライマリサーバとしてサーバ２０５ａがプライマリサーバ２０５に記述されている。
【００２７】
サーバ生存テーブル２０６には自サーバ以外のサーバ名２０７ａ，２０７ｂについての生存情報２０８ａ，２０８ｂが保持される。図２に示す例では、サーバ１０２ａ，１０２ｃ（サーバ＃１，サーバ＃３）についての生存情報が保持され、ともに生存状態であることを示す”○”が格納されている。
【００２８】
各サーバは処理ルールに基づいてイベントを処理する。処理の内容としては、イベントを検出したら単純に送信先のクライアント１０５に通知するものから、イベントの内容に基づいて、計算、データベースの索引、加工などを行うもの、複数のイベントに基づいて処理を行う（複数のセンサーデータの平均を取るなど）ものなどがある。以下の実施例の動作の説明では、簡単化のため、イベントを検出したら送信先のクライアント１０５に通知する処理を前提に説明する。
【００２９】
次に、本実施例の動作について説明する。
【００３０】
本実施例では設定すべきルールはルールＡ（１０６ａ）、ルールＢ（１０６ｂ）、ルールＣ（１０６ｃ）の３つがある。ルール分配部１０３はルール毎にプライマリとして設定するサーバとセカンダリとして設定するサーバを選択し、ルールを設定する。
【００３１】
例えば、図１におけるルールＡ（１０６ａ）では、プライマリとしてサーバ＃１（１０２ａ）、セカンダリとしてサーバ＃２（１０２ｂ）を選択し、それぞれにプライマリルール（１０６ａｐ）、セカンダリルール（１０６ａｓ）を設定する。
【００３２】
同様にルールＢ（１０６ｂ）では、プライマリサーバとしてサーバ＃２（１０２ｂ）、セカンダリとしてサーバ＃３（１０２ｃ）を選択し、それぞれにプライマリルール（１０６ｂｐ）、セカンダリルール（１０６ｂｓ）を設定する。また、ルールＣ（１０６ｃ）では、プライマリサーバとしてサーバ＃３（１０２ｃ）、セカンダリとしてサーバ＃１（１０２ａ）を選択し、それぞれにプライマリルール（１０６ｃｐ）、セカンダリルール（１０６ｃｓ）を設定する。
【００３３】
また、ルール分配部１０３は、各サーバに設定されたルールで処理されるイベントをそのサーバに転送されるように振り分け装置１０１に振り分けルール１０７を設定する。例えば図１ではサーバ＃１（１０２ａ）、サーバ＃２（１０２ｂ）にルールＡ（１０６ａ）のプライマリルール（１０６ａｐ）、セカンダリルール（１０６ａｓ）が設定されているので、ルールＡ（１０６ａ）で処理されるイベントＡ（１０９）はサーバ＃１（１０２ａ）、サーバ＃２（１０２ｂ）に転送されるように振り分けルール１０７が設定される。図１では省略しているが、ルールＢ（１０６ｂ）、ルールＣ（１０６ｃ）で処理されるイベントも同様に、設定されたサーバに転送されるように振り分けルールが設定される。また、振り分け装置１０１は各サーバと同様のルールテーブルを備えており、振り分けルールにより処理を行うプライマリサーバとセカンダリサーバを把握する。この振り分け装置１０１のルールテーブルの内容は、各サーバと同様にルール分配部の配信により記述されてもよく、また、予め定められたものとしてもよい。
【００３４】
その後、送信元クライアント（１０４）からイベントが送信されてくると、振り分け装置１０１はそのイベントを処理するルールが設定されたサーバにイベントを転送し、サーバはそのイベントを処理する。この時、サーバ同士はお互いに生存確認を行っており、プライマリルールを設定されたサーバは処理結果を送信先のクライアント１０５に送信するが、セカンダリルールを設定されたサーバはプライマリルールを設定されたサーバが正常時には処理結果を送信先クライアント１０５に送信することはなく、プライマリルールを設定されたサーバが障害時には処理結果を送信先クライアント１０５に送信する。
【００３５】
図１のように送信元のクライアント１０４からイベントＡ（１０９）が送信されてくると、振り分け装置１０１はイベントＡを処理するルールＡ（１０６ａｐ，１０６ａｓ）が設定されたサーバ＃１（１０２ａ）、サーバ＃２（１０２ｂ）にコピーしたイベントＡ（１１０ａ，１１０ｂ）を転送する。
【００３６】
イベントＡ（１１０ａ，１１０ｂ）を受信したサーバ＃１（１０２ａ）、サーバ＃２（１０２ｂ）は、ルールＡ（１０６ａｐ，１０６ａｓ）に従ってイベントＡ（１１０ａ，１１０ｂ）を処理するが、プライマリルール（１０６ａｐ）を設定されたサーバ＃１（１０２ａ）が正常時にはサーバ＃１（１０２ａ）のみが処理結果を送信先のクライアント１０５に通知１１１を出力し、セカンダリルール（１０６ａｓ）を設定されたサーバ＃２（１０２ｂ）は処理結果１１２を通知しない。しかし、プライマリルール（１０６ａｐ）を設定されたサーバ＃１（１０２ａ）が障害時に、サーバ＃１（１０２ａ）の障害を検出したセカンダリルール（１０６ａｓ）を設定されたサーバ＃２（１０２ｂ）がイベントＡ（１１０ｂ）を受信した場合には、サーバ＃２（１０２ｂ）が送信先のクライアント１０５に処理結果１１２を通知する。
【００３７】
各サーバの動作の例としてサーバ＃２（１０２ｂ）を例とし、図２〜４を参照して説明する。
【００３８】
図２では、サーバ＃２（１０２ｂ）がサーバ２０１として示されている。サーバ２０１内のルールテーブル２０２にはルールＡのセカンダリルール２０３ａとルールＢのプライマリルール２０３ｂが設定されている。また、ルールテーブル２０２には設定されたルールがプライマリかセカンダリかを表すフラグ２０４と、セカンダリルールの場合にプライマリルールが設定されたサーバ２０５が設定されている。その他に、サーバ内には他のサーバの生存情報を保持するサーバ生存テーブル２０６があり、サーバ間の生存確認通信の結果によって随時更新される。
【００３９】
プライマリルールに関するイベントを受信した時の動作を図２で説明する。イベントＢ（２０９）を受信すると、サーバ２０１はルールテーブル２０２を検索し、イベントＢ（２０９）に関するルールＢ（２０３ｂ）を検索する。そしてルールＢ（２０３ｂ）に従ってイベントＢ（２０９）を処理するが、ルールテーブル（２０２）のプライマリ／セカンダリフラグ（２０４ｂ）を見るとルールＢ（２０３ｂ）がプライマリルールであることが分かるので、処理結果（２１０）をそのまま通知する。
【００４０】
プライマリルールが設定されたサーバが正常時に、セカンダリルールに関するイベントを受信した時の動作を図３で説明する。
【００４１】
図３では、サーバ＃２（１０２ｂ）がサーバ３０１として示されている。また、図２において２００番台の符号で示されていたその他の構成要件については、３００番台の符号とする。
【００４２】
イベントＡ（３０９）を受信すると、サーバ３０１はルールテーブル３０２を検索し、イベントＡ（３０９）に関するルールＡ（３０３ａ）を検索する。そしてルールＡ（３０３ａ）に従ってイベントＡ（３０９）を処理するが、ルールテーブル３０２のプライマリ／セカンダリフラグ３０４ａを見るとルールＡ（３０３ａ）がセカンダリルールであることが分かる。するとサーバ３０１は、ルールＡ（３０３ａ）に従ってイベントＡ（３０９）を処理した後に、ルールテーブル３０２にあるプライマリサーバ情報３０５からサーバ＃１（３０５ａ）を検索し、サーバ生存テーブル３０６からサーバ＃１の生存情報３０７ａを検索する。その結果サーバ＃１は正常であることを示す内容３０８ａが記述されているので、処理結果を通知するのを中止する。
【００４３】
プライマリルールが設定されたサーバが障害時に、セカンダリルールに関するイベントを受信した時の動作を図４で説明する。
【００４４】
図４では、サーバ＃２（１０２ｂ）がサーバ４０１として示されている。また、図２において２００番台の符号で示されていたその他の構成要件については、４００番台の符号とする。
【００４５】
イベントＡ（４０９）を受信して、ルールＡ（４０３ａ）に従い処理をし、プライマリサーバの生存情報（４０７ａ）を検索するまではプライマリサーバ正常時と同様である。サーバ＃１の生存情報（４０７ａ）を検索した結果、サーバ＃１が障害であることを示す内容（４０８ａ）が記述されていることが分かると、サーバ４０１はイベントＡの処理結果（４１０）をクライアントに通知する。
【００４６】
図１ではルールの数とサーバの数が同数であるが、図示の都合であって、特にそのような制約はない。例えばサーバの数≪ルールの数であってもよい。
【００４７】
また、図１では全てのルールにセカンダリルールを設定しているが、重要なルールのみセカンダリルールを設定して、それほど重要でないルールはセカンダリルールを設定せず、障害時には重要なルールのみをフェールオーバーすることとしてもよい。
【００４８】
図５は本発明による第２の実施例の構成を示すブロック図である。
【００４９】
本実施例のシステムは複数のサーバ５０２ａ〜５０２ｃ（サーバ＃１〜サーバ＃３）、各サーバ５０２ａ〜５０２ｃの予備となる予備サーバ５０２ｄ、振り分け装置５０１、ルール分配部５０３からなる。また、システムは送信元クライアント５０４と送信先クライアント５０５と通信を行う。なお、図５において送信元クライアント５０４と送信先クライアント５０５は別として示しているが、同一でもよい。
【００５０】
本実施例では正常時にルールを処理する複数の処理サーバ５０２ａ〜５０２ｃに対し、１つの予備サーバ５０２ｄを用意し、全てのルールのセカンダリルールを予備サーバ５０２ｄに設定する。これによりサーバｎ台を二重化するためにはｎ台の予備サーバが必要であったのを、１台の予備サーバで済むように出来る。また、１台の予備サーバでは予備サーバの負荷が高くなるので、ｍ台（ｍ＜ｎ）の予備サーバを用意し、同様にセカンダリルールを設定してもよい。このように、ルール単位でプライマリとセカンダリのサーバを選択することにより、現用サーバの台数と予備サーバの台数の比を柔軟に設定することが出来る。
【００５１】
各サーバは処理ルールに基づいてイベントを処理する。処理の内容としては、イベントを検出したら単純に送信先のクライアント５０５に通知するものから、イベントの内容に基づいて、計算、データベースの索引、加工などを行うもの、複数のイベントに基づいて処理を行う（複数のセンサーデータの平均を取るなど）ものなどがある。以下の実施例の動作の説明では、簡単化のため、イベントを検出したら送信先のクライアント５０５に通知する処理を前提に説明する。
【００５２】
次に、本実施例の動作について説明する。
【００５３】
本実施例では設定すべきルールはルールＡ（５０６ａ）、ルールＢ（５０６ｂ）、ルールＣ（５０６ｃ）の３つがある。ルール分配部５０３はルール毎にプライマリとして設定するサーバを設定し、セカンダリとしては世にサーバ５０２ｄを選択する。
【００５４】
例えば、図５におけるルールＡ（５０６ａ）では、プライマリとしてサーバ＃１（５０２ａ）、セカンダリとして予備サーバ５０２ｄを選択し、それぞれにプライマリルール（５０６ａｐ）、セカンダリルール（５０６ａｓ）を設定する。
【００５５】
同様にルールＢ（５０６ｂ）では、プライマリサーバとしてサーバ＃２（５０２ｂ）、セカンダリとして予備サーバ５０２ｄを選択し、それぞれにプライマリルール（５０６ｂｐ）、セカンダリルール（５０６ｂｓ）を設定する。また、ルールＣ（５０６ｃ）では、プライマリサーバとしてサーバ＃３（５０２ｃ）、セカンダリとして予備サーバ５０２ｄを選択し、それぞれにプライマリルール（５０６ｃｐ）、セカンダリルール（５０６ｃｓ）を設定する。
【００５６】
また、ルール分配部５０３は、各サーバに設定されたルールで処理されるイベントをそのサーバに転送されるように振り分け装置５０１に振り分けルール５０７を設定する。例えば図５ではサーバ＃１（５０２ａ）、予備サーバ（５０２ｄ）にルールＡ（５０６ａ）のプライマリルール（５０６ａｐ）、セカンダリルール（５０６ａｓ）が設定されているので、ルールＡ（５０６ａ）で処理されるイベントＡ（５０９）はサーバ＃１（５０２ａ）、予備サーバ５０２ｄに転送されるように振り分けルール５０７が設定される。図１では省略しているが、ルールＢ（５０６ｂ），ルールＣ（５０６ｃ）で処理されるイベントも同様に、設定されたプライマリサーバ５０２ｂ，５０２ｃおよび予備サーバ５０２ｄに転送されるように振り分けルールが設定される。
【００５７】
その後、送信元のクライアント５０４からイベントが送信されてくると、振り分け装置５０１はそのイベントを処理するルールが設定されたプライマリのサーバと予備サーバ５０２ｄにイベントを転送し、プライマリのサーバと予備サーバ５０２ｄはそのイベントを処理する。この時、プライマリのサーバと予備サーバ５０２ｄ同士はお互いに生存確認を行っており、プライマリルールを設定されたサーバは処理結果を送信先のクライアント５０５に送信するが、予備サーバ５０２ｄはプライマリルールを設定されたサーバが正常時には処理結果を送信先クライアント５０５に送信することはなく、プライマリルールを設定されたサーバが障害時には処理結果を送信先クライアント５０５に送信する。
【００５８】
図１のように送信元のクライアント５０４からイベントＡ（５０９）が送信されてくると、振り分け装置５０１はイベントＡを処理するルールＡ（５０６ａｐ，５０６ａｓ）が設定されたサーバ＃１（５０２ａ）、予備サーバ５０２ｄにコピーしたイベントＡ（５１０ａ，５１０ｂ）を転送する。
【００５９】
イベントＡ（５１０ａ，５１０ｂ）を受信したサーバ＃１（５０２ａ）、予備サーバ５０２ｄは、ルールＡ（５０６ａｐ，５０６ａｓ）に従ってイベントＡ（５１０ａ，５１０ｂ）を処理するが、プライマリルール（５０６ａｐ）を設定されたサーバ＃１（５０２ａ）が正常時にはサーバ＃１（５０２ａ）のみが処理結果を送信先のクライアント５０５に通知５１１を出力し、セカンダリルール（５０６ａｓ）を設定された予備サーバ５０２ｄは処理結果５１２を通知しない。しかし、プライマリルール５０６ａｐを設定されたサーバ＃１（５０２ａ）が障害時に、サーバ＃１（５０２ａ）の障害を検出したセカンダリルール５０６ａｓを設定された予備サーバ５０２ｄがイベントＡ（５１０ｂ）を受信した場合には、予備サーバ５０２ｄが送信先のクライアント５０５に処理結果５１２を通知する。
【００６０】
図６は、本発明の第３の実施例の要部構成を示す図である。
【００６１】
本実施例のおおよその構成は図１および図５に示した第１の実施例および第２の実施例と同様であるが、各サーバ内のテーブルの構成が異なるものとされている。以下では、図５に示した符号を用いて本実施例について説明する。
【００６２】
図６は各サーバ５０２ａ〜５０２ｃの内部の要部構成を示す図であり、図６では例としてサーバ５０３ｃ（サーバ＃３）をサーバ７０１としてその内部構成が示されているが、すべてのサーバは同様の構成を備えている。
【００６３】
各サーバは内部にルールテーブル７０２とサーバ生存テーブル７０６を持つ。
【００６４】
ルールテーブル７０２には、複数の処理ルールが記述されるルール７０３、各ルール毎の自サーバの優先度７０２、および自サーバよりも上位のサーバが設定されるプライマリサーバが記述されるプライマリサーバ７０５の項目が対応して格納される。
【００６５】
図６では、ルール７０３として処理ルール７０３ａ（ルールＡ）が記述され、優先度７０２として３番目（７０４ａ）であり、プライマリサーバ７０５サーバ＃１およびサーバ＃２の内容７０５ａが記述されている。
【００６６】
サーバ生存テーブル７０６には自サーバ以外のサーバ名７０７ａ，７０７ｂについての生存情報７０８ａ，７０８ｂが保持される。図７に示す例では、サーバ７０２ａ，７０２ｂ（サーバ＃１，サーバ＃２）についての生存情報が保持され、ともに非生存状態であることを示す”×”が格納されている。
【００６７】
上記のように本実施例ではルールＡのプライマリ（一次）ルールをサーバ＃１へ、セカンダリ（二次）ルールをサーバ＃２に設定するのに加え、三次ルール（７０３ａ）をサーバ＃３（７０１）に設定する。この場合、ルールテーブル（７０２）にはそのルール（７０３ａ）の優先度７０４ａと、そのルール（７０３ａ）の上位優先度のルールが設定されたサーバ（７０５ａ）が設定されている。
【００６８】
ルール（７０３ａ）に一致するイベントＡ（７０９）を受信すると、サーバ７０１はルール７０３ａに基づいてイベントＡ（７０９）を処理するが、サーバ生存テーブル（７０６）を見て、そのルール（７０３ａ）の上位優先度のルールが設定されたサーバ＃１（７０７ａ）、サーバ＃２（７０７ｂ）の両方が障害の時のみ処理結果を通知（７１０）し、それ以外の場合（サーバ＃１（７０７ａ）、サーバ＃２（７０７ｂ）いずれかが生存している場合）は通知しない。このように本実施例ではサーバの二重化だけでなく多重化も可能である。
【図面の簡単な説明】
【００６９】
【図１】本発明によるシステムの第１の実施例の構成を示すブロック図である。
【図２】サーバの内部の要部構成を示す図である。
【図３】サーバの内部の要部構成を示す図である。
【図４】サーバの内部の要部構成を示す図である。
【図５】本発明による第２の実施例の構成を示すブロック図である。
【図６】本発明の第３の実施例の要部構成を示す図である。
【図７】従来例の構成を示す図である。
【符号の説明】
【００７０】
１０１    振り分け装置
１０２ａ〜１０２ｃ    サーバ
１０３    ルール分配部
１０４，１０５    クライアント
【図１】
2007257023.tif 000003
【図２】
2007257023.tif 000004
【図３】
2007257023.tif 000005
【図４】
2007257023.tif 000006
【図５】
2007257023.tif 000007
【図６】
2007257023.tif 000008
【図７】
2007257023.tif 000009