(57)【要約】【課題】クライアントサーバシステムにおける信頼性向上方式であるマスタスレーブ方式よりも安価でスケーラビリティに優れるクラスタ方式では、サーバに障害が発生した時点の処理内容が失われるのでマスタスレーブ方式よりも可用性に劣っていた。【解決手段】クライアント３とサーバ２間の要求と応答を取得し保持する手段と、サーバ２の障害検知手段と、サーバ障害時に保持していた要求を予備のサーバ２に送信する手段と、予備のサーバ２から応答を受信する手段と、障害が発生した時点のクライアント３とサーバ２の通信状態を検出する手段と、上記状態から通信状態を再開するようにサーバ２に成り代わって応答を行う手段と、をプログラム１０１の実行により実現する代理応答装置１を設ける。【選択図】  図１
2004280738.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと複数のサーバとが通信ネットワークを介して接続されたネットワークシステムにおいて、前記クライアントの要求メッセージを処理をしているいずれかの前記サーバに障害が発生した場合に、障害が発生していない他の前記サーバに、前記要求メッセージの処理を継続させ、継続させた前記処理結果である応答パケットを前記クライアントに送信する代理応答装置であって、
前記サーバでの障害発生を監視する手段と、
前記サーバが前記クライアントとの間で送受信する要求メッセージと対応する応答メッセージとを構成するパケットを前記通信ネットワークから取得し、保存する手段と、
いずれかの前記サーバに障害が発生したことを検知した際に、前記クライアントに送信されていない応答パケットを、前記障害が発生していない他のサーバから取得し、前記クライアントに送信する手段と、を備える代理応答装置。
【請求項２】
請求項１に記載の代理応答装置であって、
前記応答パケットを前記障害が発生していない他のサーバから取得し、前記クライアントに送信する手段は、
前記クライアントから、新たな要求パケットを受信し、前記障害が発生していない他のサーバに送信する手段と、
前記障害が発生していない他のサーバから、前記新たな要求パケットに対する応答パケットを受信し、前記クライアントに送信する手段と、を備える代理応答装置。
【請求項３】
請求項２に記載の代理応答装置であって、
前記応答パケットを前記障害が発生していない他のサーバから取得し、前記クライアントに送信する手段は、
前記クライアントから要求され、対応する応答パケットを前記障害が発生したサーバから応答されていない要求パケットを、前記障害が発生していない他のサーバに送信する手段と、
前記障害が発生していない他のサーバから、前記要求パケットに対する応答パケットを受信し、前記クライアントに送信する手段と、を備える代理応答装置。
【請求項４】
請求項２に記載の代理応答装置であって、
前記複数のサーバのアドレスを保持する手段を備え、
前記応答パケットを前記障害が発生していない他のサーバから取得し、前記クライアントに送信する手段は、当該応答パケットの送信元アドレスを障害が発生した前記サーバのアドレスに書き換えて送信する代理応答装置。
【請求項５】
請求項３に記載の代理応答装置であって、
前記応答されていない要求パケットを、前記障害が発生していない他のサーバに送信する手段は、当該要求パケットの送信元アドレスを当該代理応答装置のアドレスに書き換えて送信する代理応答装置。
【請求項６】
請求項１に記載の代理応答装置であって、
前記クライアントと前記サーバ間で送受信されるパケットを取得し蓄積する手段を備え、
障害発生を監視する手段が、いずれかの前記サーバに障害が発生したことを検知した場合には、
前記蓄積する手段に蓄えられたパケットを用いて、前記障害が発生したサーバにおいて障害が発生した状態を、前記障害が発生していない他のサーバとの間で、再現する手段を備える代理応答装置。
【請求項７】
請求項６に記載の代理応答装置であって、
前記再現する手段は、
前記サーバの障害を検知した際に、蓄積したパケットから前記クライアントが送信したパケットの送信先アドレスを、前記障害が発生していない他のサーバのアドレスを書き換えて送信する手段と、
前記障害が発生していない他のサーバから応答された応答パケットを受信する手段と、
前記応答パケットの内、前記障害が発生したサーバが前記クライアントに既に送信済みのパケットを識別する手段と、を備える代理応答装置。
【請求項８】
クライアントと複数のサーバと、負荷分散装置とが通信ネットワークを介して接続されたネットワークシステムにおいて、
前記負荷分散装置と、
前記クライアントの要求メッセージを処理しているいずれかの前記サーバに障害が発生した場合に、障害が発生していない他の前記サーバに、前記要求メッセージの処理を継続させ、継続させた前記処理結果である応答パケットを前記クライアントに送信する代理応答装置を備え、
前記負荷分散装置は、前記クライアントの要求メッセージを処理しているいずれかの前記サーバに障害が発生した場合に、前記障害が発生していない他のサーバに、前記クライアントからの新たな要求メッセージを処理させる手段を備え、
前記代理応答装置は、
前記サーバでの障害発生を監視する手段と、
前記サーバが前記クライアントとの間で送受信する要求メッセージと対応する応答メッセージとを構成するパケットを前記通信ネットワークから取得し、保存する手段と、
いずれかの前記サーバに障害が発生したことを検知した際に、前記クライアントに送信されていない応答パケットを、前記障害が発生していない他のサーバから取得し、前記クライアントに送信する手段と、を備えるネットワークシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、経済的なスケーラビリティとシステムの高可用性を可能とするクライアントサーバ型のシステムに関する。
【０００２】
【従来の技術】
計算機とネットワークの発達により、クライアントがサーバにメッセージを送信しサーバが処理結果をクライアントにメッセージとして応答するクライアントサーバ型のシステムの適用範囲が広がり、上記システムの可用性（ａｖａｉｌａｂｉｌｉｔｙ）の向上が益々重要になってきた。併せて、システムコストを最小にするため、クライアントの要求量に応じてサーバの処理能力を増減できる経済的なスケーラビリティが求められている。
【０００３】
クライアントサーバ型システムの可用性を向上させる方法には、特許文献１等に記載されるマスタスレーブ方式がある。上記方式は例えば、クライアント、複数のサーバａ、ｂがＩＰ網などの通信ネットワークで接続される。各サーバａ、ｂは、クライアントからの要求に応答するのに必要な情報を共有し、さらに互いに障害発生を検知できる同期部を持つ。
【０００４】
上記方式では、クライアントの要求に応答するサーバａと予備となるサーバｂを用意し、サーバａに障害が発生した際には、サーバｂは上記障害を検知しサーバａの代わりにクライアントに対して応答する。さらに、クライアントとサーバａ、ｂは、送信先が確実にメッセージを受信するまでメッセージを保持する。これにより、上記方式では、サーバａ、ｂの２つが同時に障害を起こさない限り、クライアントの要求に応答できる。
【０００５】
上記方式はサーバａに対し必ず予備のサーバｂが必要になるので経済的なスケーラビリティを持つとは言えないが、さらに、予備のサーバ台数を軽減する方式として、特許文献２に記載される技術が考案されている。
【０００６】
別の可用性向上方式として、クラスタ方式がある。この方式は例えば、クライアント、サーバａ、ｂ、負荷分散装置ａ、ｂがＩＰ網で接続される構成を備える。この方式でのサーバａ、ｂは、同期部を持たない。負荷分散装置ａ、ｂは、互いに障害発生を検知し、障害発生時には代わりに処理を続行できる機能と、サーバａ、ｂの障害発生を検知する機能と、クライアントからのメッセージを障害の発生していないサーバに中継する機能と、サーバからのメッセージをクライアントに中継する機能を持つ。上記方式においてサーバａに障害が発生した場合、負荷分散装置は、それ以降のクライアントからのメッセージを、障害の発生していないサーバｂに中継する。さらに、クライアントとサーバａ、ｂは、送信先が確実にメッセージを受信するまでメッセージを保持し、受信が失敗した場合にはメッセージを再送する。上記例では、サーバａ、ｂの２台だけであるが、３台以上でも構わない。これにより、上記方式では、サーバａ、ｂが同時にすべて障害を起こさない限り、クライアントの要求に応答できる。
【０００７】
上記方式は、サーバ台数を増減させることでシステムの処理能力を増減でき、経済的なスケーラビリティを持つ。
【０００８】
【特許文献１】
特開平１１−６８８３７号公報
【特許文献２】
特開平５−３１６１１６号公報
【０００９】
【発明が解決しようとする課題】
クラスタ方式は、経済的なスケーラビリティを持ち、サーバに障害が発生した際も、障害発生後のクライアントの要求に対しては応答できるだけの可用性を持つ。
【００１０】
しかし、上記方式では、サーバに障害が発生する前にサーバが受信完了していたクライアントの要求に対しては、サーバの障害により上記要求のメッセージが失われるので応答できないという点で可用性に欠ける。特許文献２に記載の技術も同様の課題を持つ。
【００１１】
【課題を解決するための手段】
本発明は、クラスタ方式のシステムに可用性を与える代理応答装置を提供する。
【００１２】
本発明の代理応答装置は、障害発生を監視する監視対象サーバと上記監視対象サーバの代りに応答できる予備サーバのアドレスを保持し、上記監視対象サーバが送受信するメッセージを通信ネットワークから取得する手段と、上記監視対象サーバの障害を検知する手段と、上記監視対象サーバの障害を検知した際には、上記取得したクライアントからの要求のメッセージのうち応答していないメッセージについて、送信元アドレスを上記代理応答装置のアドレスに書き換え、上記予備サーバに送信する手段を有し、上記予備サーバからの応答メッセージの送信元アドレスを上記監視対象サーバのアドレスに書き換えクライアントに中継する手段を有する。
【００１３】
これにより、サーバａ、ｂを監視対象サーバとし、互いに予備のサーバと設定すると、例えばサーバａが受信した後に障害が発生した際、失われるはずのクライアントの要求メッセージは、予め代理応答装置が通信ネットワークから取得しているので、上記メッセージを代理応答装置が予備のサーバに送信し、その応答をクライアントに中継することで、クライアントの要求に応答できる。
【００１４】
【発明の実施の形態】
以下、本発明の実施例について図面を参照して説明する。
【００１５】
図１は、本実施例の代理応答装置を適用したネットワークシステムの概略構成を示す。
【００１６】
クライアント端末（以下、クライアントと言う）３は、インターネットなどの通信ネットワーク（以下ＩＰ網という）６ａを介して負荷分散装置４ａ、４ｂと接続されている。負荷分散装置４ａは、サーバ装置（以下、サーバという）２ａ、２ｂと、代理応答装置１とＩＰ網６ｂを介して接続されている。負荷分散装置４ｂは、負荷分散装置４ａの予備であり、負荷分散装置４ａに障害が発生した際に、負荷分散装置４ａに代り処理を続行する。
【００１７】
クライアント３とサーバ２ａ、２ｂでやりとりされるメッセージは、ＩＰパケットを用いて送受信する。この際、メッセージは、必要に応じて複数のＩＰパケットに分割して送受信される。クライアント３から送信されたＩＰパケットは、ＩＰ網６ａを介し、負荷分散装置４ａに届く。負荷分散装置４ａは、上記クライアント３からの上記ＩＰパケットを、サーバの負荷に応じてサーバ２ａ又はサーバ２ｂのいずれかに振分ける。さらに、負荷分散装置４ａは、同一のメッセージを構成する複数のＩＰパケットを同一のサーバに振分ける機能を持つ。なお、サーバは、３台以上でも構わない。
【００１８】
代理応答装置１は、ＩＰ網６ｂに接続され、ＩＰ網６ｂに流れるすべてのＩＰパケットを取得できる。
【００１９】
図２は、代理応答装置１を実現する情報処理装置のハードウェア構成を示す。代理応答装置１を実現する情報処理装置は、プロセッサ１００と、記憶装置１０８と、ＩＰ網６ｂに接続するための入力回路インタフェイス１０５および出力回路インタフェイス１０７と、入力回路インタフェイス１０５で受信されたＩＰパケットを一時的に蓄積するための受信バッファ１０４と、出力回路インタフェイス１０７で送信すべきＩＰパケットを一時的に蓄積するための送信バッファ１０６と、これらを接続するバスなどの内部通信線からなる。記憶装置１０８は、プログラムメモリ１０１と、パケットバッファ１０２と、サーバ管理表１０３を格納している。プログラムメモリ１０１には、プロセッサ１００が実行し、代理応答装置１を実現する各種制御プログラムが記録され、パケットバッファ１０２には、クライアント３とサーバ２ａ、２ｂがやりとりするＩＰパケットが蓄積される。記憶装置１０８は、半導体記憶装置、または、ハードディスクなどの外部記憶装置で構成する。
【００２０】
なお、上記各プログラムは、予め記憶装置１０８に格納されていてもよいし、図示していない着脱可能な記憶媒体または通信媒体（すなわちネットワークまたはそれを伝搬する搬送波）を介して、上記記憶装置１０８に導入されてもよい。
【００２１】
上記代理応答装置１は、システム管理者によるデータ入力を可能にするための入力装置と表示装置を備えているが、これらの装置は以下の説明では使用しないため、図２では省略してある。
【００２２】
代理応答装置１は、クライアント３とサーバ２ａ、２ｂでやりとりされるメッセージを管理するためのパケットバッファ１０２を備え、クライアント３が送信した要求のメッセージとそれに対応するサーバ２ａ、２ｂの応答のメッセージをまとめて一つの単位（以下、セッションと呼ぶ）として管理する。セッションは、パケットバッファ１０２のセッション管理エントリ１１０−１、１１０−２、・・・に登録される。
【００２３】
図３に、パケットバッファ１０２の一構成例を示す。
【００２４】
パケットバッファ１０２の各エントリは、セッション識別子１１１、クライアントアドレス１１２、サーバアドレス１１３、クライアント送信パケットバッファ１１４、サーバ送信パケットバッファ１１５とからなる。
【００２５】
セッション識別子１１１には、各エントリを識別するために、一意な識別子を与えられる。クライアントアドレス１１２には、要求を送信したクライアント３のＩＰアドレスが設定される。サーバアドレス１１３には、上記要求を受信したサーバ２ａのＩＰアドレスが設定される。クライアント送信パケットバッファ１１４には、クライアント３がサーバ２ａに送信したすべてのＩＰパケットがそのまま格納される。サーバ送信パケットバッファ１１５には、サーバ２ａがクライアント３に送信したすべてのＩＰパケットがそのまま格納される。
【００２６】
図４に、代理応答装置１が備えるサーバ管理表１０３の一構成例を示す。サーバ管理表１０３は、代理応答装置１が監視すべきサーバのＩＰアドレスと、上記サーバに障害が発生した際に代わりに処理が可能な予備のサーバのＩＰアドレスを管理するためのものである。サーバ管理表１０３の各エントリ１２０−１、１２０−２、・・・は、監視対象サーバアドレス１２１、予備サーバアドレス１２２とからなっている。
【００２７】
図５は、代理応答装置１が扱うＩＰパケットの概略である。ＩＰパケットは、送信元アドレス１５０、送信先アドレス１５１、パケット番号１５２、パケット種別１５３、パケットデータ１５４とからなる。例えば、クライアント３からサーバ２ａに送信されたＩＰパケットの場合、送信元アドレス１５０にはクライアント３のＩＰアドレス、送信先アドレス１５１にはサーバ２ａのＩＰアドレスが設定される。パケット番号１５２には、送信した最初のＩＰパケットには１が、その後２、３、・・・と、送信した順番を示す数値が設定される。パケット種別１５３には、ＩＰパケットの種類が設定される。ＩＰパケットの種類には、接続要求、データ送信、切断要求、受信応答がある。パケットデータ１５４は、送信したいデータが格納される。
【００２８】
図６は、クライアント３がサーバ２ａに要求のメッセージを送信し、サーバ２ａが上記メッセージに対する応答のメッセージを応答するセッションにおける、メッセージフローの一例を示した図である。それぞれの矢印はメッセージを構成する一つのＩＰパケットの送信を示している。
【００２９】
クライアント３は、要求のメッセージの送信に先立ち、接続要求１３０ａをサーバ２ａに送信する。サーバ２ａは、接続要求１３０ａを受信したことを示す受信応答をクライアント３に送信する。以下、受信応答１３３−１ａ、１３３−２ａ、１３５−１ａ、１３５−２ａ、１３７ａは、同様にそれぞれ処理要求１３２−１ａ、１３２−２ａ、処理結果１３４−１ａ、１３４−２ａ、切断要求１３６ａに対応する。受信応答を構成するパケットのパケット種別１５３には「受信応答」が設定されており、パケット番号１５２にどのパケットを受信したかを示すため上記パケットのパケット番号が設定されている。
【００３０】
続いて、クライアント３は、要求のメッセージを、一つ以上、例えば２つのＩＰパケット（処理要求１３２−１ａ、１３２−２ａとする）によりサーバ２ａに送信する。
【００３１】
サーバ２ａは、上記要求のメッセージに対応する応答のメッセージを、一つ以上、例えば２つのＩＰパケット（処理結果１３４−１ａ、１３４−２ａとする）によりクライアント３に送信する。なお、上記処理要求１３２−１ａ、１３２−２ａ、処理結果１３４−１ａ、１３４−２ａは、説明の都合上「処理要求」と「処理結果」と呼んでいるが、ＩＰパケットのパケット種別１５３は、両方ともデータ送信である。
【００３２】
続いて、サーバ２ａが、切断要求１３６ａをクライアント３に送信すると、一つのセッションが正常に終了する。クライアント３が切断要求を送信しても良い。
【００３３】
この際、クライアント３およびサーバ２ａは、送信したＩＰパケットに対する受信応答を受信するまで、当該ＩＰパケットを保持し、受信応答が送信されてこない場合には、上記ＩＰパケットを再送する。これにより、クライアント３とサーバ２ａ間のＩＰ網および負荷分散装置に一時的な障害が発生しても障害復帰後に、正しくＩＰパケットの送受信が行われる。
【００３４】
代理応答装置１の動作を説明する。代理応答装置１は、サーバ２ａに障害が発生した際に、サーバ２ａに代わって応答することで、図６で示したフローを正しく終了させる。
【００３５】
図７は、代理応答装置１の動作を例示するフローチャートであり、プロセッサ１００の動作として説明する。
【００３６】
代理応答装置１が接続するＩＰ網６ｂに流れるすべてのＩＰパケットが、入力回路インタフェイス１０５により取得され、受信バッファ１０４に格納される。
【００３７】
プロセッサ１００は、受信バッファ１０４に上記ＩＰパケットがあれば、一つ取得し（ステップ１７０）、
取得したＩＰパケットが監視対象のサーバ２ａに関係するか否かを、上記ＩＰパケットの送信元アドレス１５０または送信先アドレス１５１が、サーバ管理表１０３の監視対象サーバアドレス１２１に一致しているかで判定する。もし、ステップ１７０で受信バッファ１０４からＩＰパケットを取得しなかった場合は、ステップ１７５に進む（ステップ１７１）。
【００３８】
一致している場合プロセッサ１００は、上記ＩＰパケットのパケット種別１５３が切断要求か判定し（ステップ１７２）、
切断要求でないなら上記ＩＰパケットをパケットバッファ１０２の該当するエントリに格納する（ステップ１７３）。該当するエントリは、上記ＩＰパケットの送信元アドレス１５０と送信先アドレス１５１の組が、クライアントアドレス１１２とサーバアドレス１１３の組と一致するか（順不同でも一致と見なす）で判定する。格納先は、上記ＩＰパケットの送信先がサーバならクライアント送信パケットバッファ１１４に、上記ＩＰパケットの送信元がサーバならサーバ送信パケットバッファ１１５となる。この際、該当するエントリが無い場合には、新しくエントリを作成する。
【００３９】
ステップ１７２にてパケット種別１５３が切断要求の場合には、該当するエントリを削除する（ステップ１７４）。
【００４０】
プロセッサ１００は、サーバ管理表１０３の各エントリの監視対象サーバアドレス１２１を持つサーバの障害の有無を判定し（ステップ１７５）、
障害が発生している場合には、代理応答処理を実行する（ステップ１７７）。サーバの障害の有無の判定方法は、特に限定されないが、一例としては、パケットバッファ１０２に格納されたすべてのセッションを監視し、サーバから一定時間応答が無いセッションを見つけたら上記サーバに障害が発生したと判定する。他の例としては、サーバで、代理応答装置１に障害がないことを意味するメッセージを送信し続けるプログラムを実行させ、代理応答装置１が上記メッセージを受信できなくなったときに、上記サーバに障害が発生したと判定する。
【００４１】
あるセッションにおいて、最初に代理応答処理を行う場合は、受信している全てのＩＰパケットを用いて、障害発生までの処理を実行し、同じ状態を再現する。
【００４２】
また、ステップ１７７は一つのＩＰパケット毎に実行され、実行後は、ステップ１７０に戻る。
【００４３】
上述の代理応答処理（ステップ１７７）の動作の一実施例について図８を用いて詳細に説明する。図８の処理も一つのＩＰパケット毎に実行され、実行後は、図７のステップ１７０に戻る。
【００４４】
以下では、クライアント３が、接続要求１３０ａ、処理要求１３２−１ａ、１３２−２ａをサーバ２ａに送信する段階でサーバ２ａに障害が発生した場合の第一の障害例と、サーバ２ａが、処理結果１３４−１ａ、１３４−２ａ、切断要求１３６ａをクライアント３に送信する段階でサーバ２ａに障害が発生した場合の第二の障害例、とに分け、それぞれの場合における代理応答装置１の動作を説明する。この二つ障害例をあわせると、すべての場合を網羅する。
【００４５】
図９は、第一の障害例のクライアント３、サーバ２ａ、代理応答装置１、予備のサーバ２ｂのメッセージフローを示す。代理応答装置１は、クライアント３とサーバ２ａ間のすべてのＩＰパケットを受信している。
【００４６】
第一の障害例は、処理要求１３２−１ａをクライアント３が送信した後に、１６０ａにてサーバ２ａに障害が発生し応答できない状況である。
【００４７】
プロセッサ１００は、図７のステップ１７０パケットバッファ１０２の各エントリのサーバアドレス１１３と、障害が発生したサーバ２ａのＩＰアドレスとを比較し、代理応答すべきセッションを探し（ステップ１８０）、
上記セッションがある場合には、上記サーバ２ａの予備のサーバ２ｂのアドレスをサーバ管理表１０３の予備サーバアドレス１２２から取得し、また、代理応答装置１が受信している、クライアント３とサーバ２ａ間のＩＰパケットを参照して、図９の接続要求１３０ｂ、受信応答１３１ｂに示されるように、予備のサーバ２ｂに接続する（ステップ１８１）。
【００４８】
ステップ１８０で、代理応答すべきセッションがない場合、すなわち、障害発生時に代理応答すべきセッションはすべて代理応答処理をしたがまだ障害が回復していない場合は、ステップ１７７の処理を終了する。
【００４９】
既にサーバ２ｂに接続している場合には、ステップ１８１は行わない。
【００５０】
プロセッサ１００は、代理応答の対象となるセッションのクライアント送信パケットバッファ１１４に格納されているすべてのＩＰパケットに対し、対応する受信応答のＩＰパケットがサーバ送信パケットバッファ１１５に存在するか調べる（ステップ１８２）。
【００５１】
第一の障害例では、処理要求１３２−１ａに対応する受信応答が無いので、上記処理要求１３２−１ａに対応する受信応答１３３−１ａを生成しクライアント３に送信する（ステップ１８３）。
【００５２】
この際、クライアント３にはサーバ２ａに障害が発生していないようにみせるため、受信応答のＩＰパケットの送信元アドレス１５１を、サーバ２ａのＩＰアドレスに設定する。代理応答装置１は、処理要求１３２−２ａに対する受信応答１３３−２ａも同様に処理する。
【００５３】
ステップ１８２において、受信応答のＩＰパケットの欠落がない場合は、プロセッサ１００は、上記セッションのクライアント送信パケットバッファ１１４に処理要求のメッセージのＩＰパケットがあるか判定し（ステップ１８４）、
上記ＩＰパケットがある場合には、上記ＩＰパケットをサーバ２ｂに送信し、上記ＩＰパケットをクライアント送信パケットバッファ１１４から削除する（ステップ１８５）。この際、上記ＩＰパケットの送信元アドレス１５０と送信先アドレス１５１は、それぞれ代理応答装置１とサーバ２ｂのＩＰアドレスに書換える。この処理は、図９のメッセージフローの処理要求１３２−１ｂ、１３２−２ｂに示される。
【００５４】
サーバ２ｂには、クライアント３から送信されるのと同等の要求が代理応答装置１から送信されるので、クライアント３から要求されたのと同等の応答を代理応答装置１に行う。この処理は、図９のメッセージフローの受信応答１３３−１ｂ、１３３−２ｂに示される。
【００５５】
ステップ１８４において、処理要求のメッセージのＩＰパケットが無い場合は、プロセッサ１００は、予備サーバ２ｂから送信されたＩＰパケットを判定し、（ステップ１８６）、
予備サーバが応答したＩＰパケットが処理結果１３４−１ｂ、１３４−２ｂまたは切断要求１３６ｂである場合には、サーバ２ｂに受信応答パケット１３３−１ｂ、１３３−２ｂ、または１３７ｂを送信する（ステップ１８７）。
【００５６】
プロセッサ１００は、上記処理結果のＩＰパケットが既にクライアント３に送信済みか判定するため、サーバ送信パケットバッファ１１５に格納されているすべてのＩＰパケットと上記ＩＰパケットのパケット番号１５２を比較し（ステップ１８８）、
一致しなかった場合には上記ＩＰパケットが切断要求か判定し（ステップ１８９）、
切断要求でない場合（処理結果１３４−１ｂ、１３４−２ｂであった場合）には、上記ＩＰパケットをクライアント３に代理応答する（ステップ１９０）。代理応答する際には、上記ＩＰパケットの送信元アドレス１５０と送信先アドレス１５１をそれぞれサーバ２ａとクライアント３のＩＰアドレスに書換え、処理結果１３４−１ａ、１３４−２ａとして送信する。
【００５７】
ステップ１８８で一致した場合は、さらに上記二つのＩＰパケットのパケットデータ１５４も一致するか比較し（ステップ１９１）、一致する場合には、何もしない。
【００５８】
ステップ１８９で判定した上記ＩＰパケットが切断要求１３６ｂの場合には、クライアント３に送信元アドレス１５０がサーバ２ａのＩＰアドレスである切断要求１３６ａを送信し、パケットバッファ１０２の上記セッションのエントリを削除する（ステップ１９２）。
【００５９】
また、ステップ１９１で比較したパケットデータ１５４が一致しなかった場合は、例外的なケースではあるが、予備サーバ２ｂは、サーバ２ａと異なる応答と返していることになる。サーバ２ｂはサーバ２ａの予備となりえないのでセッションを終了させ代理応答処理を終了する。さらに、サーバ２ｂと接続中である場合には、サーバ２ｂにも切断要求を送信する（ステップ１９２）。
【００６０】
以上の説明からわかるように、プロセッサ１００は、サーバ２ａに発生した障害が続く間は、ステップ１８０以降の処理を実行し、ステップ１８２、１８４、１８６の判定で状況に応じた処理を実行する。
【００６１】
以上の処理により、代理応答装置１は、クライアント３にサーバ２ａが応答すべきＩＰパケットをすべて代理応答したことになる。
【００６２】
第二の障害例では、処理結果１３４−１ａをサーバ２ａが送信した後に、１６０ｂにてサーバ２ａに障害が発生し応答できない状況である。
【００６３】
まず、説明で用いる各パケットの関係について説明する。クライアント３の要求メッセージのＩＰパケット１３２−１ａ、１３２−２ａと、代理要求で使われるＩＰパケット１３２−１ｂ、１３２−２ｂとは、それぞれパケットデータ１５４が同一という関係にある。
【００６４】
サーバ２ａからの応答メッセージであるＩＰパケット１３４−１ａと、サーバ２ｂからの応答メッセージであるＩＰパケット１３４−１ｂとは、パケットデータ１５４が同一という関係にある。
【００６５】
図１０において、代理応答装置１は、受信しているクライアント３とサーバ２ａ間のＩＰパケットを参照して、サーバ２ｂからの応答メッセージであるＩＰパケット１３４−１ｂを受信する処理までを再現する。
【００６６】
ステップ１８０〜１８７、ＩＰパケット１３０ａ〜１３２−２ｂに関しては、正常なメッセージフロー又は第一の障害例と同様であるので、図１０の処理結果１３４−１ｂを受信した場合の動作から説明する。
【００６７】
プロセッサ１００は、サーバ２ｂからの処理結果１３４−１ｂを受信すると、既にクライアント３に送信済みか判定する（ステップ１８８）。
【００６８】
第二の障害例では、処理結果１３４−１ｂは、既にクライアント３にサーバ２ａが処理結果１３４−１ａで送付しているので、パケット番号が処理結果１３４−１ｂと同一の処理結果１３４−１ａが、サーバ送信パケットバッファ１１５に存在する。この場合プロセッサ１００は、上記二つのＩＰパケットのパケットデータ１５４も一致するか比較し（ステップ１９１）、一致する場合には、何もしない。
【００６９】
プロセッサ１００は、サーバ２ｂから処理結果１３４−２ｂを受信すると、このパケットはサーバ送信パケットバッファ１１５に存在しないので、第一の障害例と同様の処理を行う。
【００７０】
以下、第一の障害例と処理は同様であり、第二の障害例でも、代理応答装置１は、クライアント３にサーバ２ａが応答すべきＩＰパケットをすべて代理応答できることになる。
【００７１】
最後に、図１に示したシステム全体の動作を、通常状態から障害発生、代理応答、障害復旧を経て通常状態に戻る一連のサイクルについて、図面を用いて説明する。
【００７２】
図１１は、上記サイクルでのメッセージフローを示している。それぞれの矢印は、図６、９、１０とは異なり、複数のＩＰパケットからなる一つの要求または応答メッセージを示している。
【００７３】
通常状態では、クライアント３ａ、３ｂから送られた要求のメッセージ１４０、１４２は、負荷分散装置４ａに送られた後、サーバの負荷が同じになるようにサーバ２ａまたはサーバ２ｂに送られる。上記要求に対する応答１４１、応答１４２は、サーバ２ａ、サーバ２ｂから負荷分散装置４ａを経由してクライアント３ａ、３ｂに送られる。
【００７４】
ここで、要求１４４ａがサーバ２ａに送られた直後にサーバ２ａで障害１６０が発生したとする。
【００７５】
上述のように、一つの矢印は、順序性があるＩＰパケットではなく、独立したメッセージを示しているので、クライアント３ａは、要求１４４ａに対する応答がなくても要求１４５を要求することがある。
【００７６】
負荷分散装置４ａは、１６１で障害を検知すると、つづくクライアント３ａからの要求１４５を障害が発生していないサーバ２ｂに送る。要求１４５に対する応答１４６は、サーバ２ｂから負荷分散装置４ａを経由してクライアント３ａに送られる。
【００７７】
代理応答装置１は、１６２で障害を検知すると、障害発生１６０のために、サーバ２ａがクライアント３ａに応答を返していない要求１４４ａについて、要求１４４ａと同一の内容の要求１４４ｂをクライアント３ａの代わりにサーバ２ｂに送り、サーバ２ａに成りすまして応答１４７をクライアント３ａに送信する。
【００７８】
障害が発生している間は、負荷分散装置４ａは、クライアント３ｂの次の要求１４８も、サーバ２ｂに送り、その応答１４９をクライアント３ｂに送信する。このため、負荷分散ができないものの、クライアント３ａ、３ｂの要求は確実に処理されることになる。
【００７９】
上記負荷分散装置４ａの処理と代理応答装置１の処理とは、並行して、あるいは、任意の順番で行われてもよい。
【００８０】
このように、代理応答装置１は、負荷分散装置４ａが障害発生を検知して、クライアントの要求を処理するサーバを２ａから２ｂに切り替えるまでの間、サーバ２ａが応答していないすべての要求について、同様の処理を行う。
【００８１】
その後、１６３でサーバ２ａの障害が復旧すると、負荷分散装置４ａと代理応答装置１は、１６４、１６５で復旧を検知し、再び通常の処理に戻る。以降のメッセージ１５０〜１５３は、メッセージ１４１〜１４３と同様に正常に行われ、負荷も分散される。
【００８２】
【発明の効果】
本発明によれば、可用性とスケーラビリティとを兼ね備えるクラスタ方式のクライアントサーバ型のシステムを提供できる。
【図面の簡単な説明】
【図１】実施例の代理応答装置１を用いたネットワークシステムの一構成図。
【図２】代理応答装置１の構成を示す図。
【図３】代理応答装置１が備えるパケットバッファ１０２の１実施例を示す図。
【図４】代理応答装置１が備えるサーバ管理表１０３の１実施例を示す図。
【図５】クライアントとサーバ間で送受信されるパケットフォーマットの１例を示す図。
【図６】クライアント３とサーバ２ａ間で正常にＩＰパケットが送受信される場合のメッセージフローを示す図。
【図７】代理応答装置１で実行される処理の一実施例を示すフローチャートの主要部を示す図。
【図８】代理応答装置１で実行される代理応答処理１７７の１実施例を示すフローチャートの主要部を示す図。
【図９】クライアント３とサーバ２ａ間で発生した第一の障害例のメッセージフローを示す図。
【図１０】クライアント３とサーバ２ａ間で発生した第二の障害例のメッセージフローを示す図
【図１１】障害発生から復旧までの代理応答装置１を適用したネットワークシステム内のメッセージフローを示す図。
【符号の説明】
１…代理応答装置、２…サーバ、３…クライアント、４…負荷分散装置、６…ネットワーク、１０１…プログラム、１０２…パケットバッファ、１０３…サーバ管理表。
【図１】
2004280738.tif 000003
【図２】
2004280738.tif 000004
【図３】
2004280738.tif 000005
【図４】
2004280738.tif 000006
【図５】
2004280738.tif 000007
【図６】
2004280738.tif 000008
【図７】
2004280738.tif 000009
【図８】
2004280738.tif 000010
【図９】
2004280738.tif 000011
【図１０】
2004280738.tif 000012
【図１１】
2004280738.tif 000013