(57)【要約】【課題】クライアント−サーバシステムにおいて現用サーバに障害が発生して待機サーバへ切り替える際に、アプリケーションに依存することなく適切にＴＣＰセションの継続または切断を行うこと。【解決手段】中継装置１００のコネクション制御部１５０が、ユーザ設定ポリシーテーブル１２０に記憶されたポリシーに基づいて電文の先頭を含む電文パケット２００から電文長２３１および電文ＩＤ２３２を取り出してコネクション管理テーブル１３０に記録し、現用サーバに障害が発生すると、中継した電文の長さとコネクション管理テーブル１３０に記録した電文長２３１から、一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中である場合にはセション切断処理を行うようにセション切断処理部１６０に指示し、一つの電文の中継途中でない場合にはセション継続処理を行うようにセション継続処理部１７０に指示するよう構成する。【選択図】        図２
2006215635.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとサーバとの間の通信を中継する中継プログラムであって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手順と、
前記継続可否判定手順によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手順と、
をコンピュータに実行させることを特徴とする中継プログラム。
【請求項２】
前記継続可否判定手順は、アプリケーションごとにユーザが継続可否判定に関する情報として指定するポリシーに基づいて、前記コネクションの継続が可能であるか否かをＴＣＰ層で判定することを特徴とする請求項１に記載の中継プログラム。
【請求項３】
前記ポリシーは、電文の長さを示す電文長と電文を識別する電文識別子とに関する情報であることを特徴とする請求項２に記載の中継プログラム。
【請求項４】
クライアントとサーバとの間の通信を中継する中継方法であって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定工程と、
前記継続可否判定工程によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理工程と、
を含んだことを特徴とする中継方法。
【請求項５】
クライアントとサーバとの間の通信を中継する中継装置であって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手段と、
前記継続可否判定手段によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手段と、
を備えたことを特徴とする中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、クライアントとサーバとの間の通信を中継する中継プログラム、中継方法および中継装置に関し、特に、現用サーバに障害が発生して待機サーバへ切り替える障害復旧処理をアプリケーションに依存することなく行うとともに、中継処理負荷を低減することができる中継プログラム、中継方法および中継装置に関するものである。
【背景技術】
【０００２】
従来、ネットワークを介してサーバがクライアントにサービスを提供するクライアント−サーバシステムでは、信頼性向上のために、サービスを提供しているサーバである現用サーバと、現用サーバに障害が発生した際に現用サーバの代替機として動作する待機サーバと、サーバとクライアントとの間の通信を中継する中継装置とからサーバシステムを構成してきた。
【０００３】
ここで、中継装置は、現用サーバに障害が発生すると現用サーバから待機サーバに切り替える障害復旧処理を行うことによって、サーバシステム全体としてサービス提供の継続を可能としている（例えば、特許文献１参照。）。
【０００４】
【特許文献１】特開２００３−２５６２９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、かかる中継装置は、アプリケーション層でクライアントとサーバとの間の中継を行うことから、待機サーバへ切り替える際のアプリケーション層でのコネクションの継続可否の判定がアプリケーションに依存し、アプリケーションから独立した汎用的な障害復旧を行うことができない。
【０００６】
したがって、従来の中継装置には、アプリケーションごとに中継装置が行う障害復旧処理を開発する必要があるという問題があった。また、アプリケーション層でクライアントとサーバとの間の中継を行うことから、ＴＣＰ層での中継に比べて中継処理負荷がかかるという問題もあった。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、現用サーバに障害が発生して待機サーバへ切り替える障害復旧処理をアプリケーションに依存することなく行うとともに、中継処理負荷を低減することができる中継プログラム、中継方法および中継装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、請求項１の発明に係る中継プログラムは、クライアントとサーバとの間の通信を中継する中継プログラムであって、前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手順と、前記継続可否判定手順によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手順と、をコンピュータに実行させることを特徴とする。
【０００９】
この請求項１の発明によれば、サーバに障害が発生して代替のサーバに切り替える際に、障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定し、アプリケーション層でのコネクションの継続が可能であると判定した場合にはそのコネクションを継続するコネクション継続処理を行い、コネクションの継続が可能でないと判定した場合にはそのコネクションを切断するコネクション切断処理を行うよう構成したので、アプリケーションに依存しない汎用的な障害復旧処理を行うことができる。
【００１０】
また、請求項２の発明に係る中継プログラムは、請求項１の発明において、前記継続可否判定手順は、アプリケーションごとにユーザが継続可否判定に関する情報として指定するポリシーに基づいて、前記コネクションの継続が可能であるか否かをＴＣＰ層で判定することを特徴とする。
【００１１】
この請求項２の発明によれば、アプリケーションごとにユーザが継続可否判定に関する情報として指定するポリシーに基づいて、コネクションの継続が可能であるか否かをＴＣＰ層で判定するよう構成したので、異なるポリシーを用いることによって異なるアプリケーションのコネクションの継続可否の判定をＴＣＰ層で行うことができる。
【００１２】
また、請求項３の発明に係る中継プログラムは、請求項２の発明において、前記ポリシーは、電文の長さを示す電文長と電文を識別する電文識別子とに関する情報であることを特徴とする。
【００１３】
この請求項３の発明によれば、電文の長さを示す電文長と電文を識別する電文識別子とに関する情報をポリシーとするので、ＴＣＰ層でコネクションの継続可否の判定を行うことができる。
【００１４】
また、請求項４の発明に係る中継方法は、クライアントとサーバとの間の通信を中継する中継方法であって、前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定工程と、前記継続可否判定工程によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理工程と、を含んだことを特徴とする。
【００１５】
この請求項４の発明によれば、サーバに障害が発生して代替のサーバに切り替える際に、障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定し、アプリケーション層でのコネクションの継続が可能であると判定した場合にはそのコネクションを継続するコネクション継続処理を行い、コネクションの継続が可能でないと判定した場合にはそのコネクションを切断するコネクション切断処理を行うよう構成したので、アプリケーションに依存しない汎用的な障害復旧処理を行うことができる。
【００１６】
また、請求項５の発明に係る中継装置は、クライアントとサーバとの間の通信を中継する中継装置であって、前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手段と、前記継続可否判定手段によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手段と、を備えたことを特徴とする。
【００１７】
この請求項５の発明によれば、サーバに障害が発生して代替のサーバに切り替える際に、障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定し、アプリケーション層でのコネクションの継続が可能であると判定した場合にはそのコネクションを継続するコネクション継続処理を行い、コネクションの継続が可能でないと判定した場合にはそのコネクションを切断するコネクション切断処理を行うよう構成したので、アプリケーションに依存しない汎用的な障害復旧処理を行うことができる。
【発明の効果】
【００１８】
請求項１、４および５の発明によれば、アプリケーションに依存しない汎用的な障害復旧処理を行うので、アプリケーションごとの障害復旧処理の開発を不要とすることができるという効果を奏する。
【００１９】
また、請求項２の発明によれば、異なるポリシーを用いることによって異なるアプリケーションのコネクションの継続可否の判定をＴＣＰ層で行うので、アプリケーションごとの障害復旧処理の開発を不要とすることができるという効果を奏する。
【００２０】
また、請求項３の発明によれば、ＴＣＰ層でコネクションの継続可否の判定を行うので、アプリケーションに依存することなくコネクションの継続可否の判定を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係る中継プログラム、中継方法および中継装置の好適な実施例を詳細に説明する。
【実施例】
【００２２】
まず、本実施例に係る中継装置による障害復旧処理の概念について説明する。図１は、本実施例に係る中継装置による障害復旧処理の概念を説明するための説明図である。同図に示すように、このサーバシステムは、現用サーバ「ＳＶ＃１」と待機サーバ「ＳＶ＃２」とが「ＬＡＮ２」を介して中継装置１００に接続され、中継装置１００が「ＬＡＮ１」を介してルータに接続されて構成される。また、中継装置１００、現用サーバおよび待機サーバは「ＬＡＮ３」を介して運用管理端末に接続される。
【００２３】
ここで、「ＬＡＮ１」、「ＬＡＮ２」および「ＬＡＮ３」はＬＡＮ（ローカルエリアネットワーク）であり、運用管理端末は現用サーバに発生した障害を検知して中継装置１００に待機サーバへの切り替え指示を行う装置である。また、ルータはＷＡＮを介してクライアントに接続される。
【００２４】
中継装置１００は、クライアント（ＣＬ）とサーバ（ＳＶ）間のパケットをＮＡＴ(Network Address Translation)して中継する。このとき、中継装置１００は、アプリケーション層での接続であるＴＣＰセションごとにクライアント−サーバ間のパケットを監視し、電文を含むパケットである電文パケットから電文の長さである電文長、電文を識別する電文ＩＤおよびＴＣＰシーケンス番号を取り出して記録する。
【００２５】
そして、現用サーバにソフト／ハード障害が発生した場合に、運用管理端末から待機サーバへの切り替えを指示されると、ＴＣＰセションを継続して待機サーバへの切り替えが可能であるか否かを電文長に基づいて判定する。すなわち、電文パケットに含まれる電文長と実際に送受信された電文の長さから、ＴＣＰセションを継続して待機サーバへの切り替えが可能であるか否かを判定する。
【００２６】
その結果、ＴＣＰセションを継続して待機サーバへの切り替えが可能であると判定した場合には、待機サーバとの間でＴＣＰセションを張り、クライアント−サーバ間のＴＣＰセションを維持するセション継続処理を行う。一方、ＴＣＰセションを継続して待機サーバへの切り替えが可能でないと判定した場合には、クライアントにＲＳＴ(reset)パケットを送信してクライアントからの再接続を促すセション切断処理を行う。
【００２７】
このように、本実施例に係る中継装置１００は、クライアント−サーバ間のパケットを監視してＴＣＰセションごとに電文長などを記録し、運用管理端末から待機サーバへの切り替えを指示されると、ＴＣＰセションを継続して待機サーバへの切り替えが可能であるか否かを電文長に基づいて判定することによって、アプリケーションに依存することなく適切にＴＣＰセションの継続または切断を行ってサーバ切り替えを行うことができる。
【００２８】
次に、本実施例に係る中継装置１００の構成について説明する。図２は、本実施例に係る中継装置１００の構成を示す機能ブロック図である。同図に示すように、この中継装置１００は、通信部１１０と、ユーザ設定ポリシーテーブル１２０と、コネクション管理テーブル１３０と、要求受付部１４０と、コネクション制御部１５０と、セション切断処理部１６０と、セション継続処理部１７０と、ポリシー編集部１８０とを有する。
【００２９】
通信部１１０は、ＬＡＮを介してサーバ、クライアント、運用管理端末などと通信する処理部であり、電文パケットなどのパケットの送受信やＴＣＰセション確立要求の受信などを行う。
【００３０】
図３−１および図３−２は、通信部１１０が送受信する電文パケットのフォーマットを示す図である。図３−１は電文の先頭を含む電文パケットのフォーマットを示し、図３−２は電文の継続部分を含む電文パケットのフォーマットを示す。
【００３１】
図３−１に示すように、電文の先頭を含む電文パケット２００は、ＩＰヘッダ２１０と、ＴＣＰヘッダ２２０と、Ｌ７ヘッダ２３０と、電文とを有する。ＩＰヘッダ２１０は、ＩＰ層でのヘッダであり、ＴＣＰヘッダ２２０は、ＴＣＰ層でのヘッダである。
【００３２】
Ｌ７ヘッダ２３０は、アプリケーション層でのヘッダであり、電文長２３１および電文ＩＤ２３２を有する。電文長２３１は、複数の電文パケット２００に分割されて転送されることがある電文の長さを示し、電文ＩＤ２３２は、電文を識別する識別子である。
【００３３】
また、図３−２に示すように、電文の継続部分を含む電文パケット２００は、ＩＰヘッダ２１０と、ＴＣＰヘッダ２３０と、電文とを有する。
【００３４】
ユーザ設定ポリシーテーブル１２０は、電文の識別やパケットの監視に使用する情報であるポリシーなどユーザが指定する情報を記憶するテーブルであり、インタフェース構成を記憶する構成定義設定テーブル３１０と、パケットの振り分けに関する情報を記憶する振り分け設定テーブル３２０と、ポリシーを記憶する電文識別テーブル３３０から構成される。
【００３５】
図４−１は、構成定義設定テーブル３１０の一例を示す図である。同図に示すように、この構成定義設定テーブル３１０は、中継装置１００が有するインタフェースとＩＰアドレス／マスク長とを対応させて記憶する。
【００３６】
図４−２は、振り分け設定テーブル３２０の一例を示す図である。同図に示すように、この振り分け設定テーブル３２０には、代表ＩＰアドレス／マスク長、代表ポート番号、電文識別ポリシー名、ＳＶ側ゲートウェイアドレス／マスク長、ホスト名、ＳＶ ＩＰアドレス、ＳＶポート番号および現用／待機が含まれる。
【００３７】
代表ＩＰアドレス／マスク長は、クライアントがサーバと通信する際に使用するＩＰアドレスおよびマスク長であり、代表ポート番号は中継装置１００が使用するポートの番号である。電文識別ポリシー名は、電文の識別に使用するポリシーの番号であり、ＳＶ側ゲートウェイアドレス／マスク長は、サーバとの接続に用いるＩＰアドレスおよびマスク長である。ホスト名は、現用サーバおよび待機サーバとして使用されるサーバの名前であり、ＳＶ ＩＰアドレスは、サーバの実ＩＰアドレスである。ＳＶポート番号は、サーバのアプリケーションが実際に使用するポートの番号であり、現用／待機は、サーバが現用サーバであるか待機サーバであるかを示す情報である。
【００３８】
図４−３は、電文識別テーブル３３０の一例を示す図である。同図に示すように、この電文識別テーブル３３０には、電文識別ポリシー名、電文長フィールド種別、電文長先頭識別、電文長末端識別、電文長値フィールド種別、電文ＩＤフィールド種別、電文ＩＤ先頭識別、電文ＩＤ末端識別、電文ＩＤチェック方法、送達確認、パケットチェック方向、対処およびログ採取レベルが含まれる。
【００３９】
電文長フィールド種別は、電文パケット２００に含まれる電文長２３１のフィールドが固定であるか可変であるかを示す情報である。電文長先頭識別は、電文長２３１の先頭を識別する仕方を示す情報であり、例えば、「電文offset:1byte」はＬ７ヘッダ２３０の先頭から２バイト目が電文長２３１の先頭であることを示し、「文字列:"Length:"」は「Length:」という文字列に続くバイトが電文長２３１の先頭であることを示す。
【００４０】
電文長末端識別は、電文長２３１の末端を識別する仕方を示す情報であり、例えば、「電文offset:5byte」はＬ７ヘッダ２３０の先頭から５バイト目が電文長２３１の末端であることを示し、「文字列:"\r\n"」は「\r\n」という文字列の前が電文長２３１の末端であることを示す。
【００４１】
電文長値フィールド種別は、電文長２３１のデータ型を示す情報であり、例えば、「unsigned int」は符号無し整数型であることを示し、「文字列」は文字列型であることを示す。
【００４２】
電文ＩＤフィールド種別は、電文パケット２００に含まれる電文ＩＤ２３２のフィールドが固定であるか可変であるかを示す情報である。電文ＩＤ先頭識別は、電文ＩＤ２３２の先頭を識別する仕方を示す情報であり、例えば、「電文offset:6byte」はＬ７ヘッダ２３０の先頭から６バイト目が電文ＩＤ２３２の先頭であることを示し、「文字列:"ID:"」は「ID:」という文字列に続くバイトが電文ＩＤ２３２の先頭であることを示す。
【００４３】
電文ＩＤ末端識別は、電文ＩＤ２３２の末端を識別する仕方を示す情報であり、例えば、「電文offset:7byte」はＬ７ヘッダ２３０の先頭から７バイト目が電文ＩＤ２３２の末端であることを示し、「文字列:"\r\n"」は「\r\n」という文字列の前が電文ＩＤ２３２の末端であることを示す。
【００４４】
電文ＩＤチェック方法は、電文パケットが正しい順番で送られてきたか否かをチェックする方法を示す情報であり、例えば、「正規表現文字列"xml.+"に一致」は電文ＩＤ２３２がＸＭＬの正規表現文字列の形式であることを示す。
【００４５】
送達確認は、パケットの受信確認行うか否かを示す情報であり、例えば、「する」は送達確認としてａｃｋを返すことを示す。パケットチェック方向は、サーバとクライアント間で送受信されるパケットのうちどちらの方向のパケットをチェックするかを示す情報であり、例えば、「両方向」はクライアントからサーバに送られるパケットおよびサーバからクライアントに送られるパケットの両方をチェックすることを示す。
【００４６】
対処は、受信した電文パケット２００に異常があった場合の処置を示す情報であり、例えば、「通過」は、異常を見つけた場合でも電文パケットをそのまま中継することを示す。ログ採取レベルは、ログを採取するレベルを示す情報であり、例えば、「詳細」は詳細なログを採取することを示す。
【００４７】
この電文識別テーブル３３０に電文パケット２００の中から電文長２３１や電文ＩＤ２３２を取り出すために必要な情報や電文ＩＤ２３２のチェックに必要な情報などをアプリケーションごとにポリシーとして記憶することによって、中継装置１００は、異なるアプリケーションに対してＴＣＰセションの継続可否を適切に判断することができる。
【００４８】
図２に戻って、コネクション管理テーブル１３０は、ＴＣＰセションが確立されているクライアント−サーバ間のコネクションに関する情報をＴＣＰセションごとに記憶するテーブルである。
【００４９】
図５は、コネクション管理テーブル１３０の一例を示す図である。同図に示すように、このコネクション管理テーブル１３０は、クライアント側（ＣＬ側）に関する情報とサーバ側（ＳＶ側）に関する情報とを対応させてＴＣＰセションごとに記憶する。
【００５０】
具体的には、クライアント側に関する情報として、ＩＰアドレス、ポート番号、代表ＩＰアドレス、代表ポート番号、シーケンス番号、送信／受信済電文長、電文長２３１および電文ＩＤ２３２を記憶し、サーバに関する情報としてＩＰアドレス、ポート番号、シーケンス番号offset、送信／受信済電文長、電文長２３１および電文ＩＤ２３２を記憶する。
【００５１】
ここで、シーケンス番号は、パケットに付加される一連番号であり、送信／受信済電文長は、電文のうち送受信が済んだ電文の長さである。この送信／受信済電文長と先頭の電文パケット２３０で指定された電文長２３１とを比較することによって、中継装置１００は、各ＴＣＰセションで電文が送受信中であるか否かを判定することができる。
【００５２】
シーケンス番号offsetは、現用サーバに障害が発生して待機サーバへの切り換えが行われた際に、待機サーバが送信するパケットのシーケンス番号から現用サーバが送信したパケットのシーケンス番号を引いた差である。現用サーバに障害が発生して待機サーバへの切り替えが行われた場合に、クライアントが受信するパケットはシーケンス番号が連続している必要がある。そこで、中継装置１００は、ＴＣＰセションごとにシーケンス番号offsetを記憶し、待機サーバが送信するパケットのシーケンス番号にこのシーケンス番号offsetを加えた値をシーケンス番号としてクライアントに送信する。
【００５３】
図２に戻って、要求受付部１４０は、クライアントからＴＣＰセション確立要求を受け取り、クライアントと中継装置１００との間および中継装置１００とサーバとの間でＴＣＰセションを確立する処理部である。また、この要求受付部１４０は、確立したＴＣＰセションについて、クライアントおよびサーバのＩＰアドレス、ポート番号、シーケンス番号などの情報をコネクション管理テーブル１３０に登録する。
【００５４】
コネクション制御部１５０は、通信部１１０を介してクライアントおよびサーバからパケットを受け取って中継を行う処理部である。また、このコネクション制御部１５０は、電文パケット２００を受信すると、電文パケット２００が電文の先頭を含む場合には、電文パケット２００から電文長２３１および電文ＩＤ２３２を電文識別テーブル３３０に記憶されたポリシーに基づいて取り出してコネクション管理テーブル１３０に格納する。
【００５５】
また、このコネクション制御部１５０は、電文パケット２００を受信すると、その電文パケット２００に含まれる電文の長さを用いてコネクション管理テーブル１３０の送信／受信済電文長を更新する。
【００５６】
そして、このコネクション制御部１５０は、現用サーバに障害が発生すると、運用管理端末から通信部１１０を介して待機サーバへの切り替え通知を受信し、確立中の各ＴＣＰセションについて、一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中であるＴＣＰセションについてはセション切断処理部１６０に対してセション切断処理の実行を指示し、一つの電文の中継途中でないＴＣＰセションについてはセション継続処理部１７０に対してセション継続処理の実行を指示する。
【００５７】
ここで、このコネクション制御部１５０は、一つの電文の中継途中であるか否かの判定を、コネクション管理テーブル１３０に格納した送信／受信済電文長と電文長２３１を比較することによって行う。
【００５８】
このコネクション制御部１５０が待機サーバへの切り替え通知を運用管理端末から受信した際に、確立中の各ＴＣＰセションについて電文長２３１を用いて一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中であるＴＣＰセションについてはセション切断処理を指示し、一つの電文の中継途中でないＴＣＰセションについてはセション継続処理を指示することによって、様々なアプリケーションに対してＴＣＰセションの継続または切断を適切に行うことができる。
【００５９】
セション切断処理部１６０は、現用サーバに障害が発生して待機サーバへ切り替える際にコネクション制御部１５０の指示に基づいてセション切断処理を行う処理部であり、具体的には、現用サーバおよびクライアントにＲＳＴパケットを送信してＴＣＰセションを切断する。
【００６０】
セション継続処理部１７０は、現用サーバに障害が発生して待機サーバへ切り替える際にコネクション制御部１５０の指示に基づいてセション継続処理を行う処理部であり、具体的には、現用サーバにＲＳＴパケットを送信し、待機サーバとの間でＴＣＰセションを確立する。
【００６１】
ポリシー編集部１８０は、ユーザの指示に基づいてユーザ設定ポリシーテーブル１２０を編集する処理部である。ユーザは、このポリシー編集部１８０に対してアプリケーションごとに電文識別テーブル３３０に記憶するポリシーなどを指定することによって、様々なアプリケーションに対して中継装置１００を対応させることができる。
【００６２】
次に、本実施例に係る中継装置１００による中継処理の処理手順について説明する。図６は、本実施例に係る中継装置１００による中継処理の処理手順を示すフローチャートである。なお、ここでは、クライアントからサーバに要求電文を送る場合について説明する。
【００６３】
同図に示すように、この中継装置１００は、クライアント（ＣＬ）からサーバ（ＳＶ）へのＴＣＰセション確立要求を受け付けると（ステップＳ１０１）、要求受付部１４０が、クライアントおよびサーバのＩＰアドレス、ポート番号、シーケンス番号などをコネクション管理テーブル１３０に記録し（ステップＳ１０２）、クライアントとの間および現用サーバとの間でそれぞれＴＣＰセションを確立する（ステップＳ１０３）。
【００６４】
そして、コネクション制御部１５０が、現用サーバから待機サーバへの切り替えを指示するＳＶ現待切り替え通知または要求電文の電文パケット２００を待ち、この時点でＳＶ現待切り替え通知を運用管理端末から受信すると（ステップＳ１０４、ＳＶ現待切り替え通知）、一つの電文の中継途中ではないと判断し、セション継続処理部１７０に指示してセション継続処理を行う。
【００６５】
具体的には、セション継続処理部１７０は、故障した現用サーバへＲＳＴパケットを送付し（ステップＳ１０５）、待機サーバとの間でＴＣＰセションを確立する（ステップＳ１０６）。また、待機サーバから送られてくるシーケンス番号からシーケンス番号のオフセット値を算出してシーケンス番号offsetとしてコネクション管理テーブル１３０に記録する（ステップＳ１０７）。このシーケンス番号offsetは、これ以降クライアントに転送されるパケットのシーケンス番号に反映される。
【００６６】
一方、コネクション制御部１５０は、クライアントから要求電文の電文パケット２００を受信すると（ステップＳ１０４、要求電文受信）、電文ＩＤ２３２が正しいか否かを電文識別テーブル３３０に記憶された電文ＩＤチェック方法を用いて判定し（ステップＳ１０８）、電文ＩＤ２３２が正しい場合には、電文長２３１および電文ＩＤ２３２をコネクション管理テーブル１３０に記録し、シーケンス番号の記録更新を行って現用サーバへ電文パケット２００を転送する（ステップＳ１０９）。
【００６７】
そして、クライアントからのパケットまたは運用管理端末からのＳＶ現待切り替え通知を待ち、パケットを受信すると（ステップＳ１１０、パケット受信）、シーケンス番号の記録更新を行い（ステップＳ１１１）、電文パケット２００であるか否かを判定する（ステップＳ１１２）。
【００６８】
その結果、電文パケット２００である場合には、現用サーバへパケットを転送し（ステップＳ１１３）、中継した電文の長さを算出してコネクション管理テーブル１３０の送信／受信済電文長を更新する。そして、コネクション管理テーブル１３に記録された電文長２３１に送信／受信済電文長が達したか否かを判定し（ステップＳ１１４）、電文長２３１に達しない場合にはステップＳ１１０に戻って次の電文パケット２００を待ち、電文長２３１に達した場合には、一つの要求電文の中継が完了したのでステップＳ１０４に戻る。
【００６９】
一方、電文パケット２００でない場合には、ＦＩＮパケットか否かを判定し（ステップＳ１１５）、ＦＩＮパケットであれば現用サーバへ転送し、現用サーバからのＦＩＮ／ＡＣＫパケットを待ってクライアントに転送する（ステップＳ１１６）。そして、このＴＣＰセションで使用したメモリ領域を開放してＴＣＰセションを完了する（ステップＳ１１７）。
【００７０】
また、ＦＩＮパケットでなければ、ＲＳＴパケットであるか否かを判定し（ステップＳ１１８）、ＲＳＴパケットであれば現用サーバへＲＳＴパケットを発行し（ステップＳ１１９）、このＴＣＰセションで使用したメモリ領域を開放してＴＣＰセションを切断する（ステップＳ１１７）。
【００７１】
また、ＲＳＴパケットでなければ異常パケットなので、セション切断処理部１６０に指示してセション切断処理を行う。すなわち、セション切断処理部１６０は、クライアントと現用サーバにＲＳＴパケットを発行し（ステップＳ１２０、ステップＳ１１９）、このＴＣＰセションで使用したメモリ領域を開放してＴＣＰセションを切断する（ステップＳ１１７）。
【００７２】
また、ステップＳ１１０においてＳＶ現待切り替え通知を受信すると、この時点では、コネクション制御部１５０は、一つの電文の中継途中であると判断し、セション切断処理部１６０に指示してセション切断処理を行う。
【００７３】
また、ステップＳ１０８の判定で電文ＩＤ２３２が正しくない場合にも、異常パケットなので、セション切断処理部１６０に指示してセション切断処理を行う。
【００７４】
このように、コネクション制御部１５０が、ＳＶ現待切り替え通知を受信した時点で一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中でない場合にはセション継続処理部１７０に指示してセション継続処理を行い、一つの電文の中継途中である場合にはセション切断処理部１６０に指示してセション切断処理を行うので、ＴＣＰセションの継続または切断を適切に行って待機サーバへ切り替えることができる。
【００７５】
なお、ここでは、クライアントから要求電文を受信する場合の処理について説明したが、サーバからの応答電文については、ステップＳ１０４でサーバからの応答電文を受信し、ステップＳ１０８〜ステップＳ１２０の処理でクライアントと現用サーバを入れ替えた処理を行う。
【００７６】
次に、正常時およびサーバ異常発生時のクライアント−サーバ（ＣＬ−ＳＶ）間通信処理シーケンスについて図７〜図９を用いて説明する。図７は、ＣＬ−ＳＶ間通信処理シーケンス（正常時）を示すシーケンス図である。
【００７７】
同図に示すように、まず、クライアントがＴＣＰセションの確立を要求する（ステップＳ２０１）。具体的には、クライアントがシーケンス番号「２０００」のｓｙｎパケットを現用サーバ「ＳＶ＃１］に送信し、現用サーバがシーケンス番号「８０００」のｓｙｎパケットと確認応答番号「２００１」のａｃｋパケットをクライアントに送信すると、クライアントが確認応答番号「８００１」のａｃｋパケットを現用サーバに送信してＴＣＰセションが確立される。このとき、中継装置１００は、クライアントおよび現用サーバが送信するパケットのシーケンス番号を記録する。
【００７８】
そして、クライアントが電文「要求電文１」をサーバに送信する（ステップＳ２０２）。具体的には、クライアントがシーケンス番号「２００１」で長さが５３バイトのｄａｔａパケットとシーケンス番号「２０５４」で長さが１８バイトのｄａｔａパケットをサーバに送信し、それぞれに対してサーバが確認応答番号が「２０５４」および「２０７２」のａｃｋパケットをクライアントに応答する。ここで、ｄａｔａパケットは電文パケット２００であり、この「要求電文１」は二つの電文パケット２００から構成される。
【００７９】
なお、中継装置１００は、最初の電文パケット２００を中継するときに、電文長２３１および電文ＩＤ２３２をコネクション管理テーブル１３０に記録するとともに、電文ＩＤ２３２のチェックを行う。また、中継装置１００は、２番目の電文パケット２００を中継するときに電文長２３２をチェックすることによって、「要求電文１」の中継が完了したことを認識する。
【００８０】
そして、サーバが電文「応答電文１」をクライアントに送信する（ステップＳ２０３）。具体的には、サーバは四つのｄａｔａパケットを用いて「応答電文１」を送信する。中継装置１００は、４番目の電文パケット２００を中継するときに「応答電文１」の電文長２３２をチェックすることによって、「応答電文１」の中継が完了したことを認識する。
【００８１】
以下同様に、クライアントからの要求電文の送信とサーバからの応答電文の送信が繰り返される。そして、最後にＦＩＮパケットがクライアントからサーバに送信され、ａｃｋパケットをサーバが応答するとＴＣＰセションが終了する。
【００８２】
図８は、ＣＬ−ＳＶ間通信処理シーケンス（セション継続可能時）を示すシーケンス図である。なお、ここでは、セションの確立が行われた後のシーケンスを示す。同図に示すように、クライアントが電文「要求電文１」をサーバに送信し（ステップＳ３０１）、サーバが電文「応答電文１」をクライアントに送信する（ステップＳ３０２）。
【００８３】
そして、クライアントから次の「要求電文２」が送信される前に、現用サーバが故障すると、中継装置１００は、「応答電文１」と「要求電文２」の間での待機サーバへの切り替えであるので、ＴＣＰセションの継続が可能であると判定し、セション継続処理を行う。
【００８４】
すなわち、中継装置１００は、現用サーバにＲＳＴパケット（ｒｓｔ：２０７２）を送信し、待機サーバとの間でＴＣＰセションを確立する（ステップＳ３０３）。このとき、中継装置１００は、クライアントから現用サーバへの確認応答番号「９９４５」から待機サーバへの確認応答番号「５０２６」を引いてシーケンス番号のオフセット値を算出し、コネクション管理テーブル１３０にシーケンス番号offsetとして記録する。
【００８５】
そして、中継装置１００は、待機サーバからクライアントに送信されるパケットに対しては、このシーケンス番号のオフセット値をシーケンス番号に加算してクライアントに送信し、クライアントから待機サーバに送信される応答パケットに対しては、このシーケンス番号のオフセット値をシーケンス番号から引いて待機サーバに送信する。
【００８６】
このように、中継した電文の長さに基づいて中継装置１００が要求電文と応答電文との間での待機サーバへの切り替えであると判定することによって、ＴＣＰセションの継続が可能であるとの判定をアプリケーションに依存することなく適切に行うことができる。
【００８７】
また、中継装置１００が待機サーバとの間でＴＣＰセションを確立した際にシーケンス番号のオフセット値を算出し、待機サーバからクライアントに送信される電文に関して中継するパケットについては、オフセット値を用いてシーケンス番号を補正することによって、クライアントは、待機サーバへの切り替え後も連続したシーケンス番号を有する応答電文を受信することができる。
【００８８】
図９は、ＣＬ−ＳＶ間通信処理シーケンス（セション継続不可時）を示すシーケンス図である。なお、ここでも、図８と同様に、セションの確立が行われた後のシーケンスを示す。図９に示すように、クライアントが電文「要求電文１」をサーバに送信し（ステップＳ４０１）、サーバが電文「応答電文１」をクライアントに送信する（ステップＳ４０２）。
【００８９】
ただし、ここでは、中継装置１００が４番目のｄａｔａパケットを中継する前に現用サーバが故障する。すると、中継装置１００は、中継した電文の長さから「応答電文１」の中継途中での待機サーバへの切り替えであると判定し、セション切断処理を行う（ステップＳ４０３）。
【００９０】
すなわち、中継装置１００は、現用サーバとクライアントにＲＳＴパケットを送信してＴＣＰセションを切断する。その後、クライアントがサーバに対して新たなＴＣＰセションの確立を要求すると、中継装置１００は、待機サーバとの間でＴＣＰセションの確立を行う（ステップＳ４０４）。そして、ＴＣＰセションが確立すると、クライアントは、次の電文「要求電文２」をサーバに送信する（ステップＳ４０５）。
【００９１】
このように、中継した電文の長さから中継装置１００が応答電文の中継途中での待機サーバへの切り替えであると判定することによって、ＴＣＰセションの継続が不可能であるとの判定をアプリケーションに依存することなく適切に行うことができる。
【００９２】
上述してきたように、本実施例では、中継装置１００のコネクション制御部１５０が、ユーザ設定ポリシーテーブル１２０に記憶されたポリシーに基づいて電文の先頭を含む電文パケット２００から電文長２３１および電文ＩＤ２３２を取り出してコネクション管理テーブル１３０に記録し、現用サーバに障害が発生すると、中継した電文の長さとコネクション管理テーブル１３０に記録した電文長２３１から、一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中である場合にはセション切断処理を行うようにセション切断処理部１６０に指示し、一つの電文の中継途中でない場合にはセション継続処理を行うようにセション継続処理部１７０に指示することとしたので、ＴＣＰセションの継続または切断をアプリケーションに依存することなく適切に行って待機サーバへの切り替えを行うことができる。
【００９３】
また、本実施例では、コネクション制御部１５０が、コネクション管理テーブル１３０に記録した電文ＩＤ２３２に基づいて、中継するパケットが異常パケットであるか否かを判定し、異常パケットである場合にはセション切断処理を行うようにセション切断処理部１６０に指示することとしたので、アプリケーションに依存することなくＴＣＰ層レベルでクライアント−サーバ間の通信の異常を検知し、適切な障害復旧処理を行うことができる。
【００９４】
また、本実施例では、アプリケーション層レベルの代わりにＴＣＰ層レベルでクライアントとサーバとの間の通信を中継することとしたので、アプリケーション層レベルでの中継と比較して中継処理負荷を低減することができる。
【００９５】
なお、本実施例では、中継装置１００について説明したが、この中継装置１００が有する構成をソフトウェアによって実現することで、同様の機能を有する中継プログラムを得ることができる。そこで、この中継プログラムを実行するコンピュータについて説明する。
【００９６】
図１０は、本実施例に係る中継プログラムを実行するコンピュータの構成を示す機能ブロック図である。同図に示すように、このコンピュータ５００は、ＨＤＤ５１０と、ＲＡＭ５２０と、ＣＰＵ５３０と、ＤＶＤドライブ５４０と、ＬＡＮインタフェース５５０〜５７０とを有する。
【００９７】
ＨＤＤ５１０は、中継プログラム５１１などを記憶するディスク装置であり、ＲＡＭ５２０は、ＨＤＤ５１０からＣＰＵ５３０によって読み出された中継プログラム５１１やその実行途中結果などを記憶するメモリである。
【００９８】
ＣＰＵ５３０は、ＨＤＤ５１０からＲＡＭ５２０にプログラムを読み出して実行する中央処理装置であり、ＤＶＤドライブ５４０は、ＤＶＤの読み書きを行う装置である。ＬＡＮインタフェース５５０〜５７０は、コンピュータ５００をそれぞれ「ＬＡＮ１」、「ＬＡＮ２」および「ＬＡＮ３」に接続するためのインタフェースである。
【００９９】
そして、このコンピュータ５００において実行される中継プログラム５１１は、ＤＶＤに記憶され、ＤＶＤドライブ５４０によってＤＶＤから読み出されてコンピュータ５００にインストールされる。
【０１００】
あるいは、この中継プログラム５１１は、ＬＡＮインタフェース５５０〜５７０を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ５００にインストールされる。
【０１０１】
そして、インストールされた中継プログラム５１１は、ＨＤＤ５１０に記憶され、ＲＡＭ５２０に読み出されてＣＰＵ５３０によって中継プロセス５３１として実行される。
【０１０２】
また、本実施例では、サーバが故障した場合について説明したが、本発明はこれに限定されるものではなく、現用中継装置が故障して待機中継装置に切り替える場合にも同様に適用することができる。
【０１０３】
すなわち、現用中継装置が故障した場合には、待機中継装置が各ＴＣＰセションについて一つの電文の中継途中であるか否かを判定し、一つの電文の中継途中である場合には、そのＴＣＰセションに対してセション切断処理を行い、一つの電文の中継途中でない場合には、そのＴＣＰセションに対してセション継続処理を行う。
【０１０４】
（付記１）クライアントとサーバとの間の通信を中継する中継プログラムであって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手順と、
前記継続可否判定手順によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手順と、
をコンピュータに実行させることを特徴とする中継プログラム。
【０１０５】
（付記２）前記継続可否判定手順は、アプリケーションごとにユーザが継続可否判定に関する情報として指定するポリシーに基づいて、前記コネクションの継続が可能であるか否かをＴＣＰ層で判定することを特徴とする付記１に記載の中継プログラム。
【０１０６】
（付記３）前記ポリシーは、電文の長さを示す電文長と電文を識別する電文識別子とに関する情報であることを特徴とする付記２に記載の中継プログラム。
【０１０７】
（付記４）前記継続可否判定手順は、一つの電文の中継途中で障害が発生したか否かを電文長を用いて判定し、一つの電文の中継途中で障害が発生した場合にはアプリケーション層でのコネクションの継続が可能でないと判定し、ある電文の中継と次の電文の中継の間で障害が発生した場合にはアプリケーション層でのコネクションの継続が可能であると判定することを特徴とする付記３に記載の中継プログラム。
【０１０８】
（付記５）前記ポリシーを編集するポリシー編集手順をさらにコンピュータに実行させることを特徴とする付記２、３または４に記載の中継プログラム。
【０１０９】
（付記６）前記障害処理手順が行うコネクション継続処理には、サーバから送信されるパケットのシーケンス番号が障害前後で連続することを保証する処理が含まれることを特徴とする付記１〜５のいずれか一つに記載の中継プログラム。
【０１１０】
（付記７）クライアントとサーバとの間の通信を中継する中継プログラムを実行する現用中継コンピュータに障害が発生した場合に代替コンピュータとして動作する待機中継コンピュータで実行され、クライアントとサーバとの間の通信を中継する中継プログラムであって、
前記現用中継コンピュータに障害が発生した際に、サーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手順と、
前記継続可否判定手順によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手順と、
を待機中継コンピュータに実行させることを特徴とする中継プログラム。
【０１１１】
（付記８）クライアントとサーバとの間の通信を中継する中継プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手順と、
前記継続可否判定手順によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手順と、
をコンピュータに実行させる中継プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【０１１２】
（付記９）クライアントとサーバとの間の通信を中継する中継方法であって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定工程と、
前記継続可否判定工程によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理工程と、
を含んだことを特徴とする中継方法。
【０１１３】
（付記１０）クライアントとサーバとの間の通信を中継する中継装置であって、
前記サーバに障害が発生して代替のサーバに切り替える際に、該障害が発生したサーバとクライアントとの間で確立されているアプリケーション層でのコネクションの継続が可能であるか否かをアプリケーションに依存することなく判定する継続可否判定手段と、
前記継続可否判定手段によりアプリケーション層でのコネクションの継続が可能であると判定された場合には該コネクションを継続するコネクション継続処理を行い、前記継続可否判定手順によりコネクションの継続が可能でないと判定された場合には該コネクションを切断するコネクション切断処理を行う障害処理手段と、
を備えたことを特徴とする中継装置。
【産業上の利用可能性】
【０１１４】
以上のように、本発明に係る中継プログラム、中継方法および中継装置は、クライアントにサービスを提供するサーバシステムに有用であり、特に、信頼性の高いサーバシステムを構築する場合に適している。
【図面の簡単な説明】
【０１１５】
【図１】本実施例に係る中継装置による障害復旧処理の概念を説明するための説明図である。
【図２】本実施例に係る中継装置の構成を示す機能ブロック図である。
【図３−１】電文パケット（先頭）のフォーマットを示す図である。
【図３−２】電文パケット（２番目以降）のフォーマットを示す図である。
【図４−１】構成定義設定テーブルの一例を示す図である。
【図４−２】振り分け設定テーブルの一例を示す図である。
【図４−３】電文識別テーブルの一例を示す図である。
【図５】コネクション管理テーブルの一例を示す図である。
【図６】本実施例に係る中継装置による中継処理の処理手順を示すフローチャートである。
【図７】ＣＬ−ＳＶ間通信処理シーケンス（正常時）を示すシーケンス図である。
【図８】ＣＬ−ＳＶ間通信処理シーケンス（セション継続可能時）を示すシーケンス図である。
【図９】ＣＬ−ＳＶ間通信処理シーケンス（セション継続不可時）を示すシーケンス図である。
【図１０】本実施例に係る中継プログラムを実行するコンピュータの構成を示す機能ブロック図である。
【符号の説明】
【０１１６】
１００    中継装置
１１０    通信部
１２０    ユーザ設定ポリシーテーブル
１３０    コネクション管理テーブル
１４０    要求受付部
１５０    コネクション制御部
１６０    セション切断処理部
１７０    セション継続処理部
１８０    ポリシー編集部
２００    電文パケット
２１０    ＩＰヘッダ
２２０    ＴＣＰヘッダ
２３０    Ｌ７ヘッダ
２３１    電文長
２３２    電文ＩＤ
３１０    構成定義設定テーブル
３２０    振り分け設定テーブル
３３０    電文識別テーブル
５００    コンピュータ
５１０    ＨＤＤ
５１１    中継プログラム
５２０    ＲＡＭ
５３０    ＣＰＵ
５３１    中継プロセス
５４０    ＤＶＤドライブ
５５０，５６０，５７０    ＬＡＮインタフェース
【図１】
2006215635.tif 000003
【図２】
2006215635.tif 000004
【図３−１】
2006215635.tif 000005
【図３−２】
2006215635.tif 000006
【図４−１】
2006215635.tif 000007
【図４−２】
2006215635.tif 000008
【図４−３】
2006215635.tif 000009
【図５】
2006215635.tif 000010
【図６】
2006215635.tif 000011
【図７】
2006215635.tif 000012
【図８】
2006215635.tif 000013
【図９】
2006215635.tif 000014
【図１０】
2006215635.tif 000015