(57)【要約】【課題】可用性が高く連続運転に適し且つ安価に構築可能なサーバシステム及び仲介装置並びに誤り隠蔽方法を提供する。【解決手段】クライアント７０とサーバ２０の間に仲介装置３０を複数介在させ、該仲介装置３０が、クライアント７０からの処理要求をサーバに転送するとともにサーバ２０から受信した前記処理要求に対する応答結果のうち正当なものを要求元のクライアント７０に転送する一方、全ての仲介装置３０のうち常に一の仲介装置３０のみがクライアント・サーバ間の処理要求及び応答結果の転送を行う状態（ａｃｔｉｖｅ状態）となるように前記転送処理を制御し、ａｃｔｉｖｅ状態の仲介装置に所定の仮想アドレスを付した。【選択図】　図１
2004038783.tif 000002
【特許請求の範囲】
【請求項１】
クライアントサーバ型システムにおけるサーバ側のシステムにおいて、
クライアントからの処理要求をサーバに転送するとともにサーバから受信した前記処理要求に対する応答結果のうち正当なものを要求元のクライアントに転送する転送手段を備えた仲介装置を複数設けるとともに、
前記仲介装置は、全ての仲介装置のうち常に一の仲介装置のみがクライアント・サーバ間の処理要求及び応答結果の転送を行う状態（ａｃｔｉｖｅ状態）となるように前記転送手段の動作を制御する制御手段と、クライアントからは単一のサーバとして見えるように一の仮想アドレスを、サーバからは単一のルータとして見えるように他の仮想アドレスを、ａｃｔｉｖｅ状態の仲介装置に割り当てるアドレス制御手段とを備えた
ことを特徴とするサーバシステム。
【請求項２】
クライアント・サーバ・仲介装置間の通信としてＴＣＰ／ＩＰプロトコルスイートを用い、前記アドレス制御手段はａｃｔｉｖｅ状態の仲介装置に前記各仮想アドレスとしてネットワーク層における仮想ＩＰアドレスを割り当てる
ことを特徴とする請求項１記載のサーバシステム。
【請求項３】
前記仲介装置は、他の仲介装置の障害を検出する障害検出手段を備えた
ことを特徴とする請求項１又は２何れか１項記載のサーバシステム。
【請求項４】
前記仲介装置の制御手段は、自仲介装置がａｃｔｉｖｅ状態の場合は、前記障害検出手段により障害が検出された他の仲介装置をシステムから切り離す
ことを特徴とする請求項３記載のサーバシステム。
【請求項５】
前記仲介装置の制御手段は、自仲介装置の転送手段がクライアント・サーバ間の処理要求及び転送結果の転送を行うように動作していない状態（ｂａｃｋｕｐ状態）であり、且つ、前記障害検出手段がａｃｔｉｖｅ状態の仲介装置の障害を検出した場合は、自仲介装置がａｃｔｉｖｅ状態となるように転送手段を制御する
ことを特徴とする請求項３又は４何れか１項記載のサーバシステム。
【請求項６】
ｂａｃｋｕｐ状態の仲介装置には各々優先度が定められており、ｂａｃｋｕｐ状態の仲介装置の制御手段は、前記障害検出手段がａｃｔｉｖｅ状態の仲介装置の障害を検出した場合は、ｂａｃｋｕｐ状態の各仲介装置の優先度のうち自仲介装置の優先度が最も高いときには自仲介装置がａｃｔｉｖｅ状態となるように転送手段を制御し、自仲介装置の優先度よりも高い優先度の仲介装置があるときには自仲介装置の優先度を繰り上げる
ことを特徴とする請求項３乃至５何れか１項記載のサーバシステム。
【請求項７】
ｂａｃｋｕｐ状態からａｃｔｉｖｅ状態となった仲介装置のアドレス制御手段は、前記仮想アドレスと仲介装置を一意に特定可能なアドレスとの対応関係の更新を指示するパケットをネットワークに送出する
ことを特徴とする請求項１乃至６何れか１項記載のサーバシステム。
【請求項８】
クライアント・サーバ・仲介装置間の通信としてＴＣＰ／ＩＰプロトコルスイートを用い、前記アドレス制御手段は仮想ＩＰアドレスとＭＡＣアドレスとの対応関係を更新するＧｒａｔｕｉｔｏｕｓ　ＡＲＰをブロードキャストする
ことを特徴とする請求項７記載のサーバシステム。
【請求項９】
クライアントサーバ型システムにおけるサーバ側のシステムにおいてクライアントとサーバの間に介在する仲介装置であって、
クライアントからの処理要求をサーバに転送するとともにサーバから受信した前記処理要求に対する応答結果のうち正当なものを要求元のクライアントに転送する転送手段と、
クライアント・サーバ間に介在する複数の仲介装置のうち常に一の仲介装置のみがクライアント・サーバ間の処理要求及び応答結果の転送を行う状態（ａｃｔｉｖｅ状態）となるように前記転送手段の動作を制御する制御手段と、
クライアントからは単一のサーバとして見えるように一の仮想アドレスを、サーバからは単一のルータとして見えるように他の仮想アドレスを、ａｃｔｉｖｅ状態の仲介装置に割り当てるアドレス制御手段とを備えた
ことを特徴とする仲介装置。
【請求項１０】
クライアントサーバ型システムにおいてサーバで発生した誤りをクライアントに対して隠蔽する方法において、
クライアントとサーバの間に、クライアントからの処理要求をサーバに転送するとともにサーバから受信した前記処理要求に対する応答結果のうち正当なものを要求元のクライアントに転送する転送手段を有する仲介装置を複数介在させ、
各仲介装置は、全ての仲介装置のうち常に一の仲介装置のみがクライアント・サーバ間の処理要求及び応答結果の転送を行う状態（ａｃｔｉｖｅ状態）となるように前記転送手段の動作を制御するとともに、クライアントからは単一のサーバとして見えるように一の仮想アドレスを、サーバからは単一のルータとして見えるように他の仮想アドレスを、ａｃｔｉｖｅ状態の仲介装置に割り当てる
ことを特徴とするクライアントサーバ型システムにおける誤り隠蔽方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＥＣサーバ・Ｗｅｂサーバ・認証サーバ等のインターネットビジネス用システムや通信網のノードシステムなどのように長時間の連続運転が求められるサーバシステムに関する。
【０００２】
【従来の技術】
この種のサーバシステムは、クライアントに対して常にサービスを適切に提供する必要がある。すなわち、サーバシステムの「誤り」を隠蔽し、「障害（Ｆａｉｌｕｒｅ）」発生を防止する必要がある。ここで「障害」とはシステムの機能損失を意味する。「障害」発生要因の具体例としては例えばハードウェアにおけるバグや故障、ソフトウェアにおけるバグなどが挙げられる。そして、これら「障害」の原因を「フォールト」と呼ぶ。仮にシステムに「フォールト」が存在していても、そのことが直ちに「障害」を引き起こすとは限らず潜在することもある。「フォールト」が原因で障害が表面化することを「誤り（Ｅｒｒｏｒ）」という。そして、「誤り」が発生したシステムが正常な状態から逸脱すると「障害」が発生する。なお、「誤り」はバグや故障などの狭義の「フォールト」のみが原因ではなく、例えば間欠故障やオペレータの設定ミスや操作ミスなども「誤り」の原因となる。
【０００３】
この「誤り」を隠蔽することができる高信頼性サーバシステムの一例として、出願人は特願２００１−２５６５１１号「サーバシステム，仲介装置，クライアントサーバ型システムにおける誤り隠蔽方法」を提案した。この高信頼性サーバシステムの一例について図３１を参照して説明する。なお、ここではクライアントに対してＷｅｂサービスを提供するシステムについて例示する。
【０００４】
この高信頼性サーバシステム１０１０は、図３１に示すように、クライアント１０４１の要求を受け取り、該要求に対する応答を返す高信頼性サーバ１０２０と、高信頼性サーバ１０２０とクライアント１０４１との間に介在する仲介装置１０３０を備えている。
【０００５】
高信頼性サーバ１０２０は、一つ以上のサーバで構成されている。図３１の例では、高信頼性サーバ１０２０は、３つのサーバ１０２１，１０２２，１０２３で構成されている。各サーバは、正常に稼働していれば、同じ要求に対してそれぞれ同じ応答を返す。
【０００６】
仲介装置１０３０は、ネットワーク１０５０を介してクライアント１０４１からの要求を受け取り後述する適切なタイミングで高信頼性サーバ１０２０へ該要求を転送し、高信頼性サーバ１０２０からの応答の正当性をチェックして正しい応答をクライアント１０４１へ返す制御部１０３１と、高信頼性サーバ１０２０の各サーバ１０２１，１０２２，１０２３の状態を管理するサーバ管理表１０３２とを備えている。制御部１０３１は、サーバ管理表１０３２に対してどのサーバが正常又は障害であるかを登録し、このサーバ管理表１０３２を参照して、どのサーバにクライアント１０４１からの要求を処理させるかを判断する。サーバ管理表１０３２は、サーバを識別するためのサーバＩＤ，サーバのＩＰアドレス，サーバの稼働情報から構成される。
【０００７】
クライアント１０４１は、Ｗｅｂブラウザを用いて、ネットワーク１０５０を経由して高信頼性サーバ１０２０にＷｅｂページを要求する。
【０００８】
次に、仲介装置１０３０の動作について説明する。クライアント１０４１が高信頼性サーバシステム１０１０へＷｅｂページ要求メッセージ１１１０を送信すると、制御部１０３１はこの要求メッセ時１１１０を受け取り、サーバ管理表１０３２を見て、正常なサーバへ転送する。例えば、サーバ管理表１０３２においてサーバ１０２１，１０２２，１０２３が正常であれば、制御部１０３１は要求メッセージ１１１０のコピー１１１１，１１１２，１１１３を作り、それぞれをサーバ１０２１，１０２２，１０２３へ転送する。
【０００９】
サーバ１０２１は、要求メッセージ１１１１を受け取り、応答１１２１を制御部１０３１へ返す。同様に、サーバ１０２２は応答１１２２を、サーバ１０２３は応答１１２３を制御部１０３１へ返す。制御部１０３１は、応答１１２１，１１２２，１１２３で多数決を行い、多数派の応答を正常と判断してクライアント１０４１へ応答１１２０を返す。
【００１０】
もし、多数決の結果、全部一致せずに不一致の応答があった場合、その応答を返したサーバは障害であると制御部１０３１は判断し、サーバ管理表１０３２の稼働状態を情報を「正常」から「障害」へ変更する。以後、制御部１０３１は障害となったサーバへはクライアントからの要求を転送しない。
【００１１】
【発明が解決しようとする課題】
上述のように、従来の高信頼性サーバシステムでは、クライアントからの要求を受け取った制御部は、複数のサーバへ該要求を転送し、該要求に対するサーバからの応答を受け取り多数決を実行するという方式を採用してきた。したがって、もしあるサーバが障害となり誤った応答を制御部へ返したとしても、多数決によって誤りを隠蔽することができた。
【００１２】
しかし、制御部自体が障害となった場合には、システム全体がダウンしてしまうという問題点があった。また、この問題を避けるために制御部を単に複数並べる事も考えられるが、この場合には、クライアントやサーバからは複数の制御部が見えてしまう。このため、制御部が障害のたびに、クライアントとサーバ側で手動で設定を変更する必要が生じたり、又は、手動での設定変更を避ける場合には自動化するためにクライアントとサーバの双方に改造が必要が生じるという問題があった。
【００１３】
本発明は、上記事情に鑑みてなされたものであり、その目的とするところは、可用性が高く連続運転に適し且つ安価に構築可能なサーバシステム及び仲介装置並びに誤り隠蔽方法を提供することにある
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本願発明は、クライアントサーバ型システムにおいて、クライアントとサーバの間に仲介装置を複数介在させ、該仲介装置が、クライアントからの処理要求をサーバに転送するとともにサーバから受信した前記処理要求に対する応答結果のうち正当なものを要求元のクライアントに転送する一方、全ての仲介装置のうち常に一の仲介装置のみがクライアント・サーバ間の処理要求及び応答結果の転送を行う状態（ａｃｔｉｖｅ状態）となるように前記転送処理を制御し、さらにａｃｔｉｖｅ状態の仲介装置に対し、クライアントからは単一のサーバとして見えるように一の仮想アドレスを、サーバからは単一のルータとして見えるように他の仮想アドレスを割り当てることを特徴とする。
【００１５】
本発明によれば、クライアント・サーバ間の処理要求及び応答結果を転送している一の仲介装置が障害となっても、他の正常な仲介装置によって前記転送を継続できるので、システム全体のダウンを防ぎ、より可用性の高いクライアントサーバ型システムを構築できる。また、ａｃｔｉｖｅ状態の仲介装置には常に所定の仮想アドレスが割り当てられ、クライアント及びサーバは常に該仮想アドレスを使って仲介装置に対してアクセスする。これにより、高信頼性サーバシステム内で障害があるなしにかかわらず、クライアントからは一の仮想アドレスが付された障害のない正常なサーバに見え、サーバからは他の仮想アドレスが付された障害のない正常なルータに見える。したがって、障害等により仲介装置の状態が変更されても、サーバやクライアントは仲介装置についてのアドレスを変更する必要がない。すなわち、既存のサーバやクライアントを無改造で利用できるので、可用性の高いクライアントサーバ型システムを低コストで構築することができる。
【００１６】
【発明の実施の形態】
（第１の実施の形態）
本発明の第１の実施の形態に係る高信頼性サーバシステムについて図面を参照して説明する。図１は第１の実施形態に係る高信頼性サーバシステムの全体構成を説明するブロック図である。なお、本実施の形態では、認証サーバを提供するシステム、具体的にはサーバがＲＡＤＩＵＳサーバであるシステムについて例示する。また、サーバが稼働しているコンピュータや仲介装置ではＯＳとしてＬｉｎｕｘ（登録商標）が稼働しているシステムについて例示する。
【００１７】
この高信頼性サーバシステム１０は、図１に示すように、クライアント７０からの処理要求に対して応答を返す高信頼性サーバ２０と、高信頼性サーバ２０とクライアント７０との間に介在する複数の仲介装置３０とを備えている。図１の例では、仲介装置３０として２つの仲介装置３０ａ及び３０ｂを備えている。なお、以下の説明において、複数の仲介装置３０及びその構成要素の各々を個別に表す場合には、仲介装置３０ａや仲介装置３０ｂなどのように符号「ａ」「ｂ」を付して表すものとする。
【００１８】
このシステムにおいて各装置間の通信プロトコル体系は不問である。本実施の形態ではＴＣＰ／ＩＰプロトコルスイートを用いた。なお、ＴＣＰ／ＩＰプロトコルスイートは、ＴＣＰ及びＩＰを狭義に表すものではなく、ＵＤＰやＡＲＰなどを含む広義のプロトコル体系を意味する。
【００１９】
高信頼性サーバ２０は、一つ以上のサーバで構成される。図１の例では、高信頼性サーバ２０は、３つのサーバ２１，２２，２３で構成され、各サーバは、正常に稼働していれば、同じ要求に対してそれぞれ同じ応答を返す。ここで、各サーバ２１，２２，２３は、コンピュータ上などで動作するソフトウェアで実装してもよいし、ハードウェアで実装してもよい。すなわち、高信頼性サーバ２０は、複数のハードウェアによって実現してもよいし、一台のハードウェア上に複数のサーバを実装することによって実現してもよい。図１の例では、サーバ２１，２２，２３はそれぞれコンピュータ２４，２５，２６上で動作しているソフトウェアである。各コンピュータ２４，２５，２６に割り当てられたＩＰアドレスは、それぞれ１７２．１６．３．３、１７２．１６．３．４、１７２．１６．３．５となっている。また、コンピュータ２４，２５，２６に割り当てられたＭＡＣアドレスは、それぞれｃｃ：ｃｃ：ｃｃ：ｃｃ：ｃｃ：０３、ｃｃ：ｃｃ：ｃｃ：ｃｃ：ｃｃ：０４、ｃｃ：ｃｃ：ｃｃ：ｃｃ：ｃｃ：０５となっている。
【００２０】
クライアント７０は、高信頼性サーバシステム１０によりサービスの提供を受ける装置である。本実施の形態では、クライアント７０としてＲＡＳ（Ｒｅｍｏｔｅ　Ａｃｃｅｓｓ　Ｓｅｒｖｅｒ）などのＮＡＳ（Ｎｅｔｗｏｒｋ　Ａｃｃｅｓｓ　Ｓｅｒｖｅｒ）であるものを例示する。また、本実施の形態では、クライアント７０には、ＩＰアドレスとして１９２．１６８．３．２００が、ＭＡＣアドレスとしてｄｄ：ｄｄ：ｄｄ：ｄｄ：ｄｄ：００が割り当てられている。
【００２１】
各仲介装置３０は、サーバ２１，２２，２３側のネットワーク（以下、内部ネットワークという）８１に接続するＮＩＣ（Ｎｅｔｗｏｒｋ　Ｉｎｔｅｒｆａｃｅ　Ｃａｒｄ）３１と、クライアント７０側のネットワーク（以下、外部ネットワークという）８２と接続するＮＩＣ３２とを備えている。また、仲介装置３０は、ＮＩＣ３１を介して内部ネットワーク８１からパケットを受信する内部ネットワーク側パケット受信部３３と、ＮＩＣ３１を介して内部ネットワーク８１へパケットを送信する内部ネットワーク側パケット送信部３４と、ＮＩＣ３２を介して外部ネットワーク８２からパケットを受信する外部ネットワーク側パケット受信部３５と、ＮＩＣ３２を介して外部ネットワーク８２へパケットを送信する外部ネットワーク側パケット送信部３６とを備えている。さらに、仲介装置３０は、内部ネットワーク側パケット受信部３３及び外部ネットワーク側パケット受信部３５から受信したパケットに対して後述する処理を行い、内部ネットワーク側パケット送信部３４及び外部ネットワーク側パケット送信部３６を用いてパケットを送信するパケット制御部４０を備えている。
【００２２】
各仲介装置３０は、ＮＩＣ３１を介して、サーバ２１，２２，２３が動作しているコンピュータ２４，２５，２６に接続されている内部ネットワーク８１と接続している。図１の例では、コンピュータ２４，２５，２６とＮＩＣ３１はＨＵＢ８３に接続されている。また、各仲介装置３０は、ＮＩＣ３２を介して、クライアント７０が接続されている外部ネットワーク８２に接続されている。図１の例では、クライアント７０とＮＩＣ３２はＨＵＢ８４に接続されている。
【００２３】
次に、パケット制御部４０の詳細な構成について図２を参照して説明する。図２に示すように、パケット制御部４０は、高信頼性サーバ２０の全てのサーバ（図１の例の場合、サーバ２１，２２，２３）の状態を管理するサーバ管理表４２と、高信頼性サーバシステム１０内の全ての仲介装置３０（図１の例の場合、仲介装置３０ａ及び３０ｂ）の状態を管理する仲介装置管理表４４と、仲介装置３０間で正常状態か障害状態かを確認するとともに、サーバ管理表４２と仲介装置管理表４４の情報をやりとりする仲介装置制御部４３と、クライアント７０からの要求を受け取り高信頼性サーバ２０へ該要求を転送し、高信頼性サーバ２０からの応答の正当性をチェックして正しい応答をクライアント７０へ返すサーバ制御部４１とを備えている。
【００２４】
サーバ制御部４１は、サーバ管理表４２に対してどのサーバが正常又は障害であるかを登録し、このサーバ管理表４２を参照して、どのサーバにクライアント７０からの要求を処理させるかを判断する。
【００２５】
図３に、サーバ管理表４２の一例を示す。図３に示すように、サーバ管理表４２は、各サーバを識別するためのサーバＩＤ、サーバが動作しているコンピュータのＩＰアドレス、サーバの稼働状態から構成されている。図３の例では、各サーバの状態が正常である場合を示している。
【００２６】
サーバ制御部４１は、各サーバからの応答パケットからサーバの障害を検出した場合、サーバ管理表４２内の該当するサーバの稼働状態を「正常」から「障害」に変更する。例として、サーバ２３が障害になった場合のサーバ管理表４２を図４に示す。
【００２７】
一方、サーバ制御部４１は、障害となっているサーバが正常になったことを検出した場合、サーバ管理表４２の稼働状態を「障害」から「正常」に変更する。例えば、サーバ２３が障害から復旧した場合、サーバ制御部４１はサーバ管理表４２を図４に示すものから図３に示すものへと変更する。サーバが正常になったことを認識する方法としては、例えばサーバ制御部４１がサーバにパケットを投げてその応答から判断する方法や、コンピュータが立ち上がったときにサーバ制御部４１へサーバが立ち上がったことを通知するソフトウェアをコンピュータ上で動作させる方法などが挙げられる。
【００２８】
外部ネットワーク８２と接続するＮＩＣ３２及び内部ネットワーク８１と接続するＮＩＣ３１には、仲介装置３０毎に異なるＩＰアドレス及びＭＡＣアドレス（ハードウェアアドレス）が割り当てられている。図１の例では、仲介装置３０ａのＮＩＣ３２ａには、ＩＰアドレスとして１９２．１６８．３．１が、ＭＡＣアドレスとしてａａ：ａａ：ａａ：ａａ：ａａ：０１が割り当てられ、仲介装置３０ｂのＮＩＣ３２ｂには、ＩＰアドレスとして１９２．１６８．３．２が、ＭＡＣアドレスとしてはａａ：ａａ：ａａ：ａａ：ａａ：０２が割り当てられている。また、図１の例では、仲介装置３０ａのＮＩＣ３１ａには、ＩＰアドレスとして１７２．１６．３．１が、ＭＡＣアドレスとしてｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０１が割り当てられ、仲介装置３０ｂのＮＩＣ３１ｂには、ＩＰアドレスとして１７２．１６．３．２が、ＭＡＣアドレスとしてｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０２が割り当てられている。
【００２９】
各仲介装置３０は、（１）システム内の複数の仲介装置３０のうち一つだけがａｃｔｉｖｅ状態（正常に稼働している状態）、（２）ｂａｃｋｕｐ状態（ａｃｔｉｖｅ状態の仲介装置の障害に備えて待機している状態）、（３）ｄｏｗｎ状態（障害や電源が入っていないなどが原因でａｃｔｉｖｅ状態にもｂａｃｋｕｐ状態にもなることができない状態）を取りうる。図１の例では、仲介装置３０ａがａｃｔｉｖｅ状態であり、仲介装置３０ｂがｂａｃｋｕｐ状態である。なお、以下の説明において、何れかの状態にある仲介装置３０内の各構成要素を表す場合には、「その状態にある構成要素」という形式で表す場合がある。例えば、ａｃｔｉｖｅ状態の仲介装置３０の仲介装置制御部４３は、単にａｃｔｉｖｅ状態の仲介装置制御部４３と表す場合がある。
【００３０】
仲介装置制御部４３は、仲介装置管理表４４に対して現在の各仲介装置３０の状態を登録する。図５に仲介装置管理表４４の例を示す。図５の例では、図１の高信頼性サーバシステム１０の状態、すなわち、仲介装置３０ａはａｃｔｉｖｅ状態であり、仲介装置３０ｂはｂａｃｋｕｐ状態であることを示す。各仲介装置３０の仲介装置管理表４４は、他の仲介装置３０の仲介装置管理表４４と同じ情報を持つ。
【００３１】
仲介装置制御部４３は、自身がａｃｔｉｖｅ状態になっている場合、ｂａｃｋｕｐ状態となっている他の仲介装置３０の仲介装置制御部４３に対して、一定周期でサーバ管理表４２と仲介装置管理表４４の内容を送信する。一方、自身がｂａｃｋｕｐ状態であるときに、ａｃｔｉｖｅ状態の仲介装置３０の仲介装置制御部４３から前記内容を受け取った場合、その内容を自装置のサーバ管理表４２と仲介装置管理表４４へ反映する。例えば、図１の例では、仲介装置制御部４３ａは、仲介装置制御部４３ｂへ一定周期でサーバ管理表４２ａと仲介装置管理表４４ａの内容を送信する。該内容を受け取った仲介装置制御部４３ｂは、その内容をサーバ管理表４２ｂと仲介装置管理表４４ｂへ反映する。
【００３２】
仲介装置制御部４３は、自身がｂａｃｋｕｐ状態である場合、一定時間待ってもａｃｔｉｖｅ状態の仲介装置３０の仲介装置制御部４３からデータを受け取らなかった場合、当該ａｃｔｉｖｅ状態だった仲介装置３０に障害が生じたと判断し、仲介装置管理表４４の内容を修正するとともに、サーバ制御部４１を起動することにより自身の仲介装置３０をａｃｔｉｖｅ状態とする。図１に示す状態において、仲介装置３０ａに障害が発生し、仲介装置３０ｂがａｃｔｉｖｅ状態になったときの、仲介装置３０ｂの仲介装置管理表４４ｂを図６に示す。
【００３３】
仲介装置３０がａｃｔｉｖｅ状態になる際に、サーバ管理表４２に蓄積されているサーバの稼働状態情報と実際のサーバ２１，２２，２３の稼働状態情報が不一致となる場合がある。例えば、仲介装置３０が障害となるのと同時にサーバ２３が障害になる場合などである。この不一致を修正するために、仲介装置制御部４３は、サーバ制御部４１を起動する前に、サーバ２１，２２，２３の稼働状態をチェックし、不一致があった場合にはサーバ管理表４２を修正する。
【００３４】
次に、仮想サーバと仮想ルータについて説明する。本願発明の目的である、クライアントやサーバを無改造で利用しつつ、さらなる高い可用性を提供することを実現するためには、以下の２つの条件を満たす必要がある。
【００３５】
（１）もし、高信頼性サーバシステム１０の内部で障害が発生したとしても、クライアント７０にはその障害は隠蔽される。つまり、クライアント７０は、その障害によって動作や設定を変更する必要はなく、障害前と変わらずに高信頼性サーバ２０からサービスを受けることができる。
【００３６】
（２）もし、複数の仲介装置３０のうち何れかで障害が発生したとしても、各サーバ２１，２２，２３にはその障害は隠蔽される。つまり、各サーバ２１，２２，２３は、その障害によって動作や設定を変更する必要はなく、障害前と変わらずにクライアント７０と通信することができる。
【００３７】
本願発明では、上記条件（１）を実現するために「仮想サーバ」を定義し、上記条件（２）を実現するために「仮想ルータ」を定義する。
【００３８】
仮想サーバとは、高信頼性システムの内部構成を隠蔽し、クライアントから見て仮想的に一つのサーバに見えるサーバのことである。例えば、図１に例示した高信頼性サーバシステム１０の場合、図７に示すように、クライアント７０から見て仮想ＩＰアドレス１９２．１６８．３．１００を持った仮想サーバ１１のことである。
【００３９】
ここで、仮想ＩＰアドレスは、ａｃｔｉｖｅ状態の仲介装置３０の外部ネットワーク８２側のＮＩＣ３２にエイリアスすることで実現する。エイリアスとは、一つのＮＩＣに異なるＩＰアドレスを設定することである。例えば、図１の例の場合、ａｃｔｉｖｅ状態の仲介装置３０ａのＮＩＣ３２ａに、仮想ＩＰアドレス１９２．１６８．３．１００が割り当てられている。これにより、仲介装置３０ａは、１９２．１６８．３．１宛のパケット以外に、１９２．１６８．３．１００宛のパケットも受信できる。なお、このとき仮想ＩＰアドレス１９２．１６８．３．１００のＭＡＣアドレスは、仲介装置３０ａのＮＩＣ３２ａのＭＡＣアドレスとなるのでａａ：ａａ：ａａ：ａａ：ａａ：０１である。
【００４０】
このような構成により、一つ以上の仲介装置３０が正常であり且つ一つ以上のサーバ２１，２２，２３が正常であれば、仮想サーバ１１は正常に機能する。したがって、仮想サーバ１１の実現により、高信頼性サーバシステム１０の内部で障害があろうとなかろうと、クライアント７０はＩＰアドレス１９２．１６８．３．１００の仮想サーバ１１と通信することだけを行えばよい。つまり、上記条件（１）を満足することができる。
【００４１】
仮想ルータとは、仲介装置の冗長化構成を隠蔽し、サーバから見て仮想的な一つのルータに見えるルータのことである。例えば、図１に例示した高信頼性サーバシステム１０の場合、図８に示すように、サーバ２１，２２，２３から見て、内部ネットワーク８１側には仮想ＩＰアドレス１７２．１６．３．１００、外部ネットワーク８２側には仮想ＩＰアドレス１９２．１６８．３．１００を持っている仮想ルータ３７のことである。
【００４２】
ここで、仮想ＩＰアドレスは、ａｃｔｉｖｅ状態の仲介装置３０の内部ネットワーク８１側のＮＩＣ３１と外部ネットワーク８２側のＮＩＣ３２にそれぞれエイリアスすることで実現できる。図１の例の場合、ａｃｔｉｖｅ状態の仲介装置３０ａのＮＩＣ３２ａに仮想ＩＰアドレス１９２．１６８．３．１００が割り当てられ、同装置３０ａのＮＩＣ３１ａに仮想ＩＰアドレス１７２．１６．３．１００が割り当てられている。これにより、仲介装置３０ａは、外部ネットワーク８２から来るパケットを内部ネットワーク８１へ中継し、内部ネットワーク８１から来るパケットを外部ネットワーク８２へ中継できる。
【００４３】
このような構成により、一つ以上の仲介装置３０が正常であれば、仮想ルータ３７は正常に機能する。したがって、仮想ルータ３７の実現により、各仲介装置３０で障害があろうとなかろうと、サーバ２１，２２，２３はＩＰアドレス１７２．１６．３．１００の仮想ルータ３７と通信することだけを行えばよい。つまり、上記条件（２）を満足することができる。
【００４４】
ａｃｔｉｖｅ状態の仲介装置３０が障害などが原因でｄｏｗｎ状態になり、ｂａｃｋｕｐ状態の他の仲介装置３０がａｃｔｉｖｅ状態になる場合、仮想サーバや仮想ルータと同じネットワークセグメントに所属している通信機器は、自分が所有するＡＲＰテーブル内の仮想ＩＰアドレスに対応するＭＡＣアドレスの情報を、新たにａｃｔｉｖｅ状態になる仲介装置３０のＭＡＣアドレスに修正しなければならない。何故ならば、通信相手となる仲介装置３０が他の仲介装置３０に変わったからである。
【００４５】
例えば、図１の状態で、仲介装置３０ａがｄｏｗｎ状態になり、仲介装置３０ｂがａｃｔｉｖｅ状態になる場合を考える。この場合、コンピュータ２４，２５，２６が所持しているＡＲＰテーブルにおいて、１７２．１６．３．１００のエントリのＭＡＣアドレス情報を、ｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０１（ＮＩＣ３１ａのＭＡＣアドレス）からｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０２（ＮＩＣ３１ｂのＭＡＣアドレス）に変更しなければならない。また、クライアント７０が所持しているＡＲＰテーブルにおいて、１９２．１６８．３．１００のエントリのＭＡＣアドレス情報を、ａａ：ａａ：ａａ：ａａ：ａａ：０１（ＮＩＣ３２ａのＭＡＣアドレス）からａａ：ａａ：ａａ：ａａ：ａａ：０２（ＮＩＣ３２ｂのＭＡＣアドレス）に変更しなければならない。
【００４６】
そこで、仲介装置制御部４３は、仮想ＩＰアドレスに対する新しいＭＡＣアドレスの情報を入れたＧｒａｔｕｉｔｏｕｓＡＲＰ（ＲＦＣ２００２参照）をブロードキャストすることで、各通信機器のＡＲＰエントリを修正する。つまり、前述の例では、仲介装置制御部４３ｂが、「１７２．１６．３．１００に対するＭＡＣアドレスをｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０２に変更するパケット」を内部ネットワーク８１へブロードキャストすることで、コンピュータ２４，２５，２６はＡＲＰテーブルを更新する。また、仲介装置制御部４３ｂが、「１９２．１６８．３．１００に対するＭＡＣアドレスをａａ：ａａ：ａａ：ａａ：ａａ：０２に変更するパケット」を外部ネットワーク８２へブロードキャストすることで、クライアント７０はＡＲＰテーブルを更新する。
【００４７】
次に、内部ネットワーク側でのパケット送受信処理について説明する。内部ネットワークで行われる通信は、サーバ２１，２２，２３と仮想ルータ３７（ａｃｔｉｖｅ状態の仲介装置３０）との間の通信である。なお、図１の例では、コンピュータ２４，２５，２６はデフォルトゲートウェイを仮想ルータに設定しているものとする。
【００４８】
まず、ａｃｔｉｖｅ状態の仲介装置３０の内部ネットワーク側パケット受信部３３について説明する。図９に、内部ネットワーク８１を経由して仮想ルータ３７（ａｃｔｉｖｅ状態の仲介装置３０）へやってくるパケットのフォーマットを例示する。図９の例では、サーバ２１からａｃｔｉｖｅ状態の仲介装置３０ａへ送信されたパケットのフォーマットである。
【００４９】
図９に示すように、該パケットの宛先ＩＰアドレスは仲介装置３０ａではなくクライアント７０である。これは、サーバ２１にとって仲介装置３０ａは単なるルータに見えるためである。したがって、該パケットは、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用し通常のｓｏｃｋｅｔを使って受信することができない。そこで、データリンク層から直接アプリケーションへパケットを読み込むパケット取り込みライブラリｌｉｂｐｃａｐ（ｆｔｐ：／／ｆｔｐ．ｅｅ．ｌｂｌ．ｇｏｖ／ｌｉｂｐｃａｐ．ｔａｒ．Ｚ）を使う。このようにして、内部ネットワーク側パケット受信部３３ａは、取り込んだパケットをサーバ制御部４１ａへ渡す。
【００５０】
内部ネットワーク８１を経由したパケットはｂａｃｋｕｐ状態の仲介装置３０ｂへは来ないため、ｂａｃｋｕｐ状態の仲介装置３０ｂの内部ネットワーク側パケット受信部３３ｂはアイドリングしている。
【００５１】
次に、ａｃｔｉｖｅ状態の仲介装置３０の内部ネットワーク側パケット送信部３４について説明する。図１０に、仮想ルータ３７（ａｃｔｉｖｅ状態の仲介装置３０）から内部ネットワーク８１を経由してサーバへ送信されるパケットのフォーマットを例示する。図１０の例では、ａｃｔｉｖｅ状態の仲介装置３０ａからサーバ２１へ送信されるパケットのフォーマットである。
【００５２】
図１０に示すように、該パケットは送信元ＩＰアドレスは仲介装置３０ａではなくクライアント７０である。これは、サーバ２１に対して仲介装置３０ａを単なるルータに見せるためである。したがって、該パケットは、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用し通常のｓｏｃｋｅｔを使って送信することができない。そこで、内部ネットワーク側パケット送信部３４ａがＵＤＰヘッダ、ＩＰヘッダを作成し、ｒａｗ　ｓｏｃｋｅｔ（ｓｏｃｋｅｔ（ＰＦ＿ＩＮＥＴ，ＳＯＣＫ＿ＲＡＷ，ＩＰＰＰＲＯＴＯ＿ＵＤＰ））を使ってサーバ２１へ送信する。
【００５３】
ｂａｃｋｕｐ状態の仲介装置３０ｂの内部ネットワーク側パケット送信部３４ｂは、送信するパケットがないためアイドリングしている。
【００５４】
次に、外部ネットワーク側でのパケット送受信処理について説明する。外部ネットワーク８２で行われる通信は、クライアント７０と仮想サーバ１１（ａｃｔｉｖｅ状態の仲介装置）間の通信と、各仲介装置３０間の通信である。
【００５５】
まず、ａｃｔｉｖｅ状態の仲介装置３０の外部ネットワーク側パケット受信部３５について説明する。図１１に、外部ネットワーク８２を経由して、クライアント７０から仮想サーバ１１（ａｃｔｉｖｅ状態の仲介装置３０）へやってくるパケットのフォーマットを例示する。図１１の例は、クライアント７０からａｃｔｉｖｅ状態の仲介装置３０ａへ送信されたパケットのフォーマットである。
【００５６】
図１１に示すように、該パケットの宛先ＩＰアドレスは仮想サーバ１１宛てとなっているが、このＩＰアドレスは前述したように、ＮＩＣ３２ａにエイリアスされているアドレスだから、外部ネットワーク側パケット受信部３５ａは、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで受信する。外部ネットワーク側パケット受信部３５ａは、上記パケットをサーバ制御部４１ａへ渡す。
【００５７】
ａｃｔｉｖｅ状態の仲介装置３０の外部ネットワーク側パケット受信部３５は、クライアント７０から仮想サーバ１１宛て以外のパケットも受信する。該パケットは、ｂａｃｋｕｐ状態の仲介装置３０の外部ネットワーク側パケット送信部３６からのパケットと、ｄｏｗｎ状態の仲介装置３０の外部ネットワーク側パケット送信部３６からのパケットである。
【００５８】
図１２に、外部ネットワーク側パケット受信部３５ａが、ｂａｃｋｕｐ状態の仲介装置３０ｂから受け取ったパケットの例を示す。図１２に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔを使って受信する。外部ネットワーク側パケット受信部３５ａは、該パケットを仲介装置制御部４３ａへ渡す。
【００５９】
図１３に、外部ネットワーク側パケット受信部３５ａが、ｄｏｗｎ状態の仲介装置３０ｂから受け取ったパケットの例を示す。図１３に示すように、該パケットの宛先ＩＰアドレスは仮想サーバ１１宛てとなっているが、このＩＰアドレスは前述したように、ＮＩＣ３２ａにエイリアスされているアドレスだから、外部ネットワーク側パケット受信部３５ａは、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで受信する。外部ネットワーク側パケット受信部３５ａは、上記パケットを仲介装置制御部４３ａへ渡す。
【００６０】
次に、ｂａｃｋｕｐ状態の仲介装置３０の外部ネットワーク側パケット受信部３５について説明する。図１４に、外部ネットワーク８２を経由して、ａｃｔｉｖｅ状態の仲介装置３０ａからｂａｃｋｕｐ状態の仲介装置３０ｂへやってくるパケットのフォーマットを例示する。なお、ｂａｃｋｕｐ状態の仲介装置３０の外部ネットワーク側パケット受信部３５には、クライアント７０からのパケットはこない。
【００６１】
図１４に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで受信する。外部ネットワーク側パケット受信部３５ｂは、ａｃｔｉｖｅ状態の仲介装置３０ａからのパケットを仲介装置制御部４３ｂへ渡す。
【００６２】
次に、ｄｏｗｎ状態の仲介装置３０の外部ネットワーク側パケット受信部３５について説明する。図１５に、外部ネットワーク８２を経由して、ａｃｔｉｖｅ状態の仲介装置３０ａからｄｏｗｎ状態の仲介装置３０ｂへやってくるパケットのフォーマットを例示する。なお、ｄｏｗｎ状態の仲介装置３０の外部ネットワーク側パケット受信部３５には、クライアント７０からのパケットはこない。
【００６３】
図１５に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで受信する。外部ネットワーク側パケット受信部３５ｂは、ａｃｔｉｖｅ状態の仲介装置３０ａからのパケットを仲介装置制御部４３ｂへ渡す。
【００６４】
次に、ａｃｔｉｖｅ状態の仲介装置３０の外部ネットワーク側パケット送信部３６について説明する。図１６に、外部ネットワーク８２を経由して、仮想サーバ１１（ａｃｔｉｖｅ状態の仲介装置３０）からクライアント７０へ送信するパケットのフォーマットを例示する。図１６の例は、ａｃｔｉｖｅ状態の仲介装置３０ａからクライアント７０へ送信されたパケットフォーマットの例である。
【００６５】
図１６に示すように、該パケットの送信元ＩＰアドレスは仮想サーバ１１となっているが、このＩＰアドレスは、前述したようにＮＩＣ３２ａにエイリアスされているアドレスなので、外部ネットワーク側パケット送信部３６ａは、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで送信する。外部ネットワーク側パケット送信部３６ａは、クライアント７０宛のパケットをサーバ制御部４１ａから受け取り、ＮＩＣ３２ａを介して外部ネットワーク８２へ送信する。
【００６６】
ａｃｔｉｖｅ状態の仲介装置３０の外部ネットワーク側パケット送信部３６は、クライアント７０宛て以外のパケットも送信する。該パケットとは、ｂａｃｋｕｐ状態の仲介装置３０へのパケットと、ｄｏｗｎ状態の仲介装置３０へのパケットである。例として、外部ネットワーク側パケット送信部３６ａが、ｂａｃｋｕｐ状態の仲介装置３０ｂへ送信したパケットについて説明する。
【００６７】
該パケットは、前述した図１４に示すパケットと同様のフォーマットとなる。すなわち、図１４に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで送信する。外部ネットワーク側パケット送信部３６ａは、該パケットを仲介装置制御部４３ａから受け取り、ＮＩＣ３２ａを介して外部ネットワーク８２へ送信する。
【００６８】
次に、外部ネットワーク側パケット送信部３６ａが、ｄｏｗｎ状態の仲介装置３０ｂへ送信したパケットについて説明する。該パケットは、前述した図１５のパケット同様のフォーマットとなる。図１５に示すように、該パケットの送信元ＩＰアドレスは仮想サーバ１１となっているが、このＩＰアドレスは、前述したように、ＮＩＣ３２ａにエイリアスされているアドレスだから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで送信する。外部ネットワーク側パケット送信部３６ａは、該パケットを仲介装置制御部４３ａから受け取り、ＮＩＣ３２ａを介して外部ネットワーク８２へ送信する。
【００６９】
次に、ｂａｃｋｕｐ状態の仲介装置３０の外部ネットワーク側パケット送信部３６について説明する。例として、外部ネットワーク８２を経由して、ｂａｃｋｕｐ状態の仲介装置３０ｂからａｃｔｉｖｅ状態の仲介装置３０ａへ送信されるパケットのフォーマットについて説明する。なお、ｂａｃｋｕｐ状態の仲介装置３０の外部ネットワーク側パケット送信部３６は、クライアント７０へはパケットを送信しない。
【００７０】
該パケットは、前述した図１２に示すパケットと同様のフォーマットとなる。すなわち、図１２に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで送信する。外部ネットワーク側パケット送信部３６ｂは、ａｃｔｉｖｅ状態の仲介装置３０ａへのパケットを仲介装置制御部４３ｂから受け取り、ＮＩＣ３２ｂを介して外部ネットワーク８２へ送信する。
【００７１】
次に、ｄｏｗｎ状態の仲介装置３０の外部ネットワーク側パケット送信部３６について説明する。例として、外部ネットワーク８２を経由して、ｄｏｗｎ状態の仲介装置３０ｂからａｃｔｉｖｅ状態の仲介装置３０ａへ送信されるパケットのフォーマットについて説明する。なお、ｄｏｗｎ状態の仲介装置３０の外部ネットワーク側パケット送信部３６は、クライアント７０へはパケットを送信しない。
【００７２】
該パケットは、前述した図１３に示すパケットと同様のフォーマットとなる。すなわち、図１３に示すように、該パケットは通常のパケットであるから、カーネルが提供している標準のＴＣＰ／ＩＰスタックを利用して通常のｓｏｃｋｅｔで送信する。外部ネットワーク側パケット送信部３６ｂは、ａｃｔｉｖｅ状態の仲介装置３０ａへのパケットを仲介装置制御部４３ｂから受け取り、ＮＩＣ３２ｂを介して外部ネットワーク８２へ送信する。
【００７３】
次に、ａｃｔｉｖｅ状態の仲介装置３０のサーバ制御部４１の動作について図面を参照して説明する。なお、例として取り上げる高信頼性サーバシステムの構成と各装置は図１に示したような状態であるとする。図１７は、ａｃｔｉｖｅ状態の仲介装置３０のサーバ制御部４１の動作を説明するフローチャートである。また、図１８及び１９は、高信頼性サーバシステム１０の動作を説明する図である。
【００７４】
サーバ制御部４１は、クライアント７０からの要求パケットを外部ネットワーク側パケット受信部３５が受信したかどうかをチェックし（ステップＳＡ１）、要求パケットがなかった場合、再び要求パケット受信をチェックする。要求パケットがあった場合、サーバ管理表４２で稼働状態が「正常」となっているサーバへ内部ネットワーク側パケット送信部３４を用いて該要求パケットを送信する（ステップＳＡ２）。以上の処理によりクライアントからの処理要求の流れを図１８の太線矢印で示す。
【００７５】
次に、タイマを設定して各サーバからの応答パケットをチェックする（ステップＳＡ３）。タイムアウトではない場合、サーバからの応答パケットを内部ネットワーク側パケット受信部３３が受信したかどうかをチェックする（ステップＳＡ４）。サーバからの応答パケットを受信しなかった場合、再びタイムアウトのチェックを行う（ステップＳＡ３）。サーバからの応答パケットを受信した場合、前記要求パケットの宛先サーバの全てから応答パケットを受信したかどうかをチェックする（ステップＳＡ５）。全ての応答パケットが揃ってない場合、再びタイムアウトのチェックを行う（ステップＳＡ３）。
【００７６】
全ての応答パケットが揃った場合、障害になったサーバがあるかどうかをチェックする（ステップＳＡ６）。障害になったサーバがあるかどうかを判断する方法としては、例えば、複数の応答で多数決を行う方法や、応答に含まれるデータの正当性をチェックする方法などが挙げられる。後者のデータ正当性のチェックと方法しては、例えば、（１）有り得ないコードが含まれている場合には障害と判断する、（２）あるはずのコードが含まれていない場合には障害と判断する、などが挙げられる。障害になったサーバがある場合、サーバ管理表４２に、該当するサーバの稼働状態を「障害」と登録する（ステップＳＡ７）。その後に、正常な応答パケットを外部ネットワーク側パケット送信部３６を用いてクライアント７０へ送信する（ステップＳＡ８）。
【００７７】
前記ステップＳＡ６において障害になったサーバがない場合、正常な応答パケットを外部ネットワーク側パケット送信部３６を用いてクライアント７０へ送信する（ステップＳＡ８）。
【００７８】
また、前記ステップＳＡ３においてタイムアウトになった場合、すなわち応答パケットを返さないサーバが存在する場合、当該サーバは障害であると判断し、サーバ管理表４２に、該当するサーバの稼働状態を「障害」と登録し（ステップＳＡ９）、外部ネットワーク側パケット送信部３６を使って正常な応答パケットをクライアント７０へ送信する（ステップＳＡ８）。
【００７９】
応答パケットをクライアント７０へ送信した（ステップＳＡ８）後は、再びクライアント７０からの要求をチェックする（ステップＳＡ１）。以上の処理によるサーバからクライアント７０への応答パケットの流れを図１９の太線矢印で示す。また、サーバ２３が障害となった場合のサーバ管理表４２は、前述したように図４に示すようなものとなる。
【００８０】
以上のような処理により、高信頼性サーバ２０を構成する各サーバ２１，２２，２３のうち「障害」となったサーバへは、クライアント７０からの要求パケットは転送されず、高信頼性サーバシステム１０から切り離されたことになる。
【００８１】
次に、仲介装置制御部４３の動作について説明する。まず、仲介装置３０がａｃｔｉｖｅ状態にある場合の仲介装置制御部４３について図２０を参照して説明する。例として取りあげる高信頼性サーバシステムの構成と装置の状態は図１に示すとおりである。図２０は、ａｃｔｉｖｅ状態の仲介装置制御部４３の動作を示すフローチャートである。
【００８２】
ａｃｔｉｖｅ状態である仲介装置制御部４３は、一定期間スリープした後（ステップＳＢ１）、外部ネットワーク側パケット受信部３５が他の仲介装置３０の仲介装置制御部４３からの組み込み要求（後述するステップＳＤ３参照）を受け取ったかどうかをチェックする（ステップＳＢ２）。
【００８３】
他の仲介装置制御部４３からの組み込み要求があった場合（ステップＳＢ２）、その仲介装置３０の情報（ＩＰアドレスなど）を仲介装置管理表４４へ記憶し（ステップＳＢ９）、外部ネットワーク側パケット送信部３６を使って、その仲介装置制御部４３に対して組み込みが完了した旨を示す応答を返す（ステップＳＢ１０）。
【００８４】
組み込み要求がない場合、ｂａｃｋｕｐ状態の仲介装置３０があるかどうかを仲介装置管理表４４を参照してチェックする（ステップＳＢ３）。ｂａｃｋｕｐ状態の仲介装置３０がある場合（ステップＳＢ４）（この例の場合、仲介装置３０ｂがｂａｃｋｕｐ状態である）、サーバ管理表４２と仲介装置管理表４４の内容を外部ネットワーク側パケット送信部３６を使ってｂａｃｋｕｐ状態の仲介装置制御部４３へ送信する（ステップＳＢ４）。その後、ｂａｃｋｕｐ状態の仲介装置制御部４３からの応答を確認するためにタイマを設定し（ステップＳＢ５）、タイムアウトをチェックする（ステップＳＢ６）。
【００８５】
タイムアウトせずにｂａｃｋｕｐ状態の仲介装置３０からの応答を外部ネットワーク側パケット受信部３５が受信していない場合（ステップＳＢ７）、再びタイムアウトのチェックを行う（ステップＳＢ６）。タイムアウトせずに、ｂａｃｋｕｐ状態の仲介装置３０からの応答（後述するステップＳＣ５参照）を外部ネットワーク側パケット受信部３５が受信した場合（ステップＳＢ７）、再びスリープする（ステップＳＢ１）。タイムアウトした場合、ｂａｃｋｕｐ状態の仲介装置３０に障害が生じたと判断し、該仲介装置３０について仲介装置管理表４４の情報をｂａｃｋｕｐからｄｏｗｎに変更し（ステップＳＢ８）、再びスリープする（ステップＳＢ１）。
【００８６】
上記ステップＳＢ３のいて、ｂａｃｋｕｐ状態の仲介装置３０がない場合（例えば全てｄｏｗｎしている場合など）には、再びスリープする（ステップＳＢ１）。
【００８７】
次に、仲介装置３０がｂａｃｋｕｐ状態である場合の仲介装置制御部４３の動作について図面を参照して説明する。例として取り上げる高信頼性サーバシステムの構成と各装置の状態は図１のとおりである。図２１はｂａｃｋｕｐ状態の仲介装置制御部４３の動作を示すフローチャートである。
【００８８】
ｂａｃｋｕｐ状態の仲介装置制御部４３は、前記ステップＳＢ４におけるａｃｔｉｖｅ状態の仲介装置制御部４３からのデータ受信を確認するためにタイマを設定し（ステップＳＣ１）、タイムアウトしたかどうかをチェックする（ステップＳＣ２）。タイムアウトせず、且つ、ａｃｔｉｖｅ状態の仲介装置３０からのパケットを外部ネットワーク側パケット受信部３５が受信していない場合（ステップＳＣ３）、再びタイムアウトのチェックを行う（ステップＳＣ２）。
【００８９】
前記ステップＳＣ２においてタイムアウトせず、且つ、ａｃｔｉｖｅ状態の仲介装置３０からのパケットを外部ネットワーク側パケット受信部３５が受信した場合（ステップＳＣ３）、サーバ管理表４２と仲介装置管理表４４へ該パケットの内容を記録し（ステップＳＣ４）、ａｃｔｉｖｅ状態の仲介装置３０に対して記録が完了したことを通知する応答を外部ネットワーク側パケット送信部３６を用いて返す（ステップＳＣ５）。その後、再びタイマを設定し（ステップＳＣ１）、タイムアウトのチェックを行う（ステップＳＣ２）。
【００９０】
前記ステップＳＣ２においてタイムアウトした場合、ａｃｔｉｖｅ状態であった仲介装置３０に障害が生じたと判断し、以後、自身の仲介装置３０がａｃｔｉｖｅ状態になるための処理を行う（ステップＳＣ６〜ＳＣ１０）。具体的には、仲介装置制御部４３は、全てのサーバ２１，２２，２３の稼働状態を調査し、サーバ管理表４２の内容を修正する（ステップＳＣ６）。次に、仲介装置管理表４４において、ａｃｔｉｖｅ状態だった仲介装置３０ａはｄｏｗｎ、ｂａｃｋｕｐ状態だった自身の仲介装置３０ｂはａｃｔｉｖｅと変更する（ステップＳＣ７）。次に、自身のサーバ制御部４１を起動し、サーバ制御部４１は図１７を参照して説明した動作を開始する（ステップＳＣ８）。次に、仲介装置制御部４３は、仮想ＩＰアドレス１９２．１６８．３．１００と１７２．１６．３．１００を、それぞれ自身のＮＩＣ３２，ＮＩＣ３１にエイリアスする（ステップＳＣ９）。次に、各通信機器のＡＲＰテーブル中の仮想ＩＰアドレスの情報を更新するために、内部ネットワーク８１には、「１７２．１６．３．１００に対するＭＡＣアドレスをｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０２に変更するＧｒａｔｕｉｔｏｕｓＡＲＰ」をブロードキャストし、外部ネットワーク８２には、「１９２．１６８．３．１００に対するＭＡＣアドレスをａａ：ａａ：ａａ：ａａ：ａａ：０２に変更するＧｒａｔｕｉｔｏｕｓＡＲＰ」をブロードキャストする（ステップＳＣ１０）。以後、図２０を参照して前述したａｃｔｉｖｅ状態の仲介装置制御部４３として機能する。
【００９１】
ａｃｔｉｖｅ状態であった仲介装置３０ａが障害となってダウンし、代わりにｂａｃｋｕｐ状態であった仲介装置３０ｂがａｃｔｉｖｅ状態になった様子を図２２に示す。また、そのときの仲介装置管理表４４は、前述したように図６に示すようなものとなる。
【００９２】
次に、ｄｏｗｎ状態の仲介装置３０を高信頼性サーバシステム１０へ組み込み、ｂａｃｋｕｐ状態にする場合の仲介装置制御部４３の動作について図面を参照して説明する。例として取り上げる高信頼性サーバシステムの構成と各装置の状態は図２２のとおりである。図２３は、組み込まれるｄｏｗｎ状態の仲介装置（この例の場合は仲介装置３０ａ）の仲介装置制御部４３の動作を説明するフローチャートである。
【００９３】
仲介装置３０の組み込み処理は、例えば、電源を入れた後にコマンドを投入することによって行われるほか、電源投入時に自動的に組み込み処理が実行されることにより処理される。例えば、／ｅｔｃ／ｉｎｉｔ．ｄの下にｓｈｅｌｌ　ｓｃｒｉｐｔを設定しておいて、電源が入ってＯＳが立ち上がった直後に自動で起動してもよい。
【００９４】
まず、仲介装置制御部４３は、組み込み要求に対する応答を確認するためにタイマを設定し（ステップＳＤ１）、タイムアウトかどうかをチェックする（ステップＳＤ２）。
【００９５】
タイムアウトでない場合、ａｃｔｉｖｅ状態の仲介装置３０へ外部ネットワーク側パケット送信部３６を使って組み込み要求を送信する（ステップＳＤ３）。
【００９６】
ａｃｔｉｖｅ状態の仲介装置３０からの応答を外部ネットワーク側パケット受信部３５が受信した場合（ステップＳＤ４）、仲介装置３０はｂａｃｋｕｐ状態となるため、以後、仲介装置制御部４３は図２１を参照して説明した動作（ｂａｃｋｕｐ状態時の仲介装置制御部４３の動作）を行う。ａｃｔｉｖｅ状態の仲介装置３０からの応答を外部ネットワーク側パケット受信部３５が受信していない場合（ステップＳＤ４）、再びタイムアウトのチェックを行う（ステップＳＤ２）。
【００９７】
前記ステップＳＤ２においてタイムアウトした場合、ａｃｔｉｖｅ状態の仲介装置３０は存在しないと判断し、以後、自身の仲介装置３０がａｃｔｉｖｅ状態となるための処理を行う（ステップＳＤ５〜ＳＤ９）。具体的には、全てのサーバ２１，２２，２３の稼働状態を調査し、サーバ管理表４２を作成する（ステップＳＤ５）。次に、仲介装置管理表４４を作成する（ステップＳＤ６）。ここでは自身の仲介装置３０しか存在しないため、自身の仲介装置３０の項目をａｃｔｉｖｅとする。次に、自身のサーバ制御部４１を起動する（ステップＳＤ７）。以後、サーバ制御部４１は図１７を参照して説明した処理を行う。
【００９８】
次に、仲介装置制御部４３は仮想ＩＰアドレス１９２．１６８．３．１００と１７２．１６．３．１００を、それぞれ自身のＮＩＣ３２，３１にエイリアスする（ステップＳＤ８）。次に、各通信機器のＡＲＰテーブル中の仮想ＩＰアドレスの情報を更新するために、内部ネットワーク８１には、「１７２．１６．３．１００に対するＭＡＣアドレスをｂｂ：ｂｂ：ｂｂ：ｂｂ：ｂｂ：０１に変更するＧｒａｔｕｉｔｏｕｓＡＲＰ」をブロードキャストし、外部ネットワーク８２には、「１９２．１６８．３．１００に対するＭＡＣアドレスをａａ：ａａ：ａａ：ａａ：ａａ：０１に変更するＧｒａｔｕｉｔｏｕｓＡＲＰ」をブロードキャストする（ステップＳＤ９）。以後、仲介装置制御部４３は、図２０のフローを行うａｃｔｉｖｅ状態の仲介装置制御部４３として動作する。
【００９９】
図２４にｄｏｗｎ状態であった仲介装置３０ａがｂａｃｋｕｐ状態になって組み込まれた高信頼性サーバシステム１０を示す。
【０１００】
（第２の実施の形態）
本発明の第２の実施の形態に係る高信頼性サーバシステムについて図面を参照して説明する。図２５は第２の実施の形態に係る高信頼性サーバシステムの全体構成を説明するブロック図である。
【０１０１】
本実施の形態が第１の実施の形態と異なる点は、３つの仲介装置３０を備えている点にある。これに伴い、仲介装置３０の動作が異なる。以下に相違点について説明する。
【０１０２】
図２５に示すように、この高信頼性サーバシステム１０は、３つの仲介装置３０を備えている。図２５の例では、仲介装置３０ａがａｃｔｉｖｅ状態であり、仲介装置３０ｂ，３０ｃがｂａｃｋｕｐ状態である。
【０１０３】
ｂａｃｋｕｐ状態の仲介装置３０は、ａｃｔｉｖｅ状態の仲介装置３０が障害になった場合に、ｂａｃｋｕｐからａｃｔｉｖｅになる装置に優先度が決められている。図２５の例では、仲介装置３０ｂが優先度１（最も優先度が高い）、仲介装置３０ｃが優先度２であり、それぞれｂａｃｋｕｐ（１）のように数字を付けることで優先度を識別する。したがって、図２５の例の場合には、各仲介装置３０の仲介装置管理表４４は図２６に示すようになる。
【０１０４】
図２７に、ａｃｔｉｖｅ状態における仲介装置制御部４３の処理フローを示す。図において図２０を参照して説明した第１の実施の形態と同じステップには同じ符号で示し、その説明は省略する。
【０１０５】
本実施の形態では、図２０におけるステップＳＢ４と対応するステップＳＢＢ４では、「全ての」ｂａｃｋｕｐ状態の仲介装置３０へサーバ管理表４２と仲介装置管理表４４の内容を送信する（ステップＳＢＢ４）。
【０１０６】
また、ステップＳＢＢ１１では、全てのｂａｃｋｕｐ状態の仲介装置３０から応答を受信したかどうかをチェックする。さらに、ステップＳＢＢ８では、応答が来なかったｂａｃｋｕｐ状態の仲介装置３０の全てをｄｏｗｎに変更する。その後、ステップＳＢＢ１２では、正常なｂａｃｋｕｐ状態の仲介装置３０の優先度を繰り上げるように変更する。例えば、仲介装置３０ｂがｄｏｗｎしたが仲介装置３０ｃは正常である場合、図２８に示すように仲介装置３０ｂの状態はｄｏｗｎに変更され、仲介装置３０ｃの状態はｂａｃｋｕｐ（１）（優先度１のｂａｃｋｕｐ状態）に変更される。
【０１０７】
図２９に、ｂａｃｋｕｐ状態の仲介装置制御部４３の処理フローを示す。図において、図２１を参照して説明した第１の実施の形態と同じステップには同じ符号で示し、その説明は省略する。
【０１０８】
本実施の形態では、ステップＳＣ２においてタイムアウトした場合、自身がｂａｃｋｕｐ（１）かどうかをチェックする（ステップＳＣＣ１１）。ｂａｃｋｕｐ（１）でない場合（ステップＳＣＣ１１）、仲介装置管理表４４のｂａｃｋｕｐ状態の優先度を一つずつ上げ、ｂａｃｋｕｐ（１）はａｃｔｉｖｅに変更する（ステップＳＣＣ１２）。自身がｂａｃｋｕｐ（１）の場合、全てのサーバの稼働状態を調査し、サーバ管理表４２を修正する（ステップＳＣ６）。次に、仲介装置管理表４４の内容を変更する、つまり、自分自身（ｂａｃｋｕｐ（１））をａｃｔｉｖｅにし、それ以外のｂａｃｋｕｐの優先度を一つずつ繰り上げる（ステップＳＣＣ７）。図３０に、図２５及び図２６の状態で仲介装置３０ａに障害が生じた場合の仲介装置管理表４４の例を示す。
【０１０９】
以上詳述したように、本発明に係る高信頼性サーバシステム１０によれば、高信頼性サーバ２０とクライアント７０との間で処理要求及び応答結果の転送を行う仲介装置３０を複数備えており、しかも転送処理を実施している仲介装置３０に障害が生じた場合でも他の仲介装置３０により転送処理が継続される。すなわち、可用性の高いシステムとなる。また、複数の仲介装置３０のうちａｃｔｉｖｅ状態になっている仲介装置３０には、サーバ側及びクライアント側の双方に仮想アドレスが付されているので、ａｃｔｉｖｅ状態の仲介装置３０が他の仲介装置３０になっても、クライアントやサーバでアドレスの変更に伴う改造や変更を行う必要がない。したがって、安価にシステム構築が可能となる。
【０１１０】
なお、上記実施の形態は例示的なものであり、本発明はこれに限定されるものではない。本発明の範囲は特許請求の範囲によって示されており、この特許請求の範囲の意味に入る全ての変形例は本発明に含まれるものである。
【０１１１】
例えば、各サーバは同じ応答を返すならば同じ実装である必要はない。すなわち、バージョン，仕様，プログラム言語，コンパイラの種類，コンパイラオプション，ハードウェアかソフトウェアか、などが異なっていてもよい。さらに、サーバは一つの部品で構成されていても複数の部品で構成されていてもよい。
【０１１２】
また、上記実施の形態では、サーバ制御部，サーバ管理表，仲介装置制御部を一つの仲介装置に実装し、サーバは別の装置で実装しているが、高信頼性サーバシステムの各構成要素の実装上の物理的位置関係は任意である。すなわち、例えば、各構成要素を一つのコンピュータ上に実装してもよいし、異なるコンピュータ上に実装してもよい。また、一部を同一のコンピュータに実装してもよい。
【０１１３】
さらに、上記実施の形態では３つのサーバ２１，２２，２３を備えたシステムについて説明したが、４つ以上のサーバを備えたシステムであってもよい。また、サーバ障害に対する信頼性の低下が許されるのであれば、サーバは２つ以下であってもよい。
【０１１４】
さらに、上記実施の形態では、クライアントが１つの場合について説明しているが、クライアントは複数であってもよい。
【０１１５】
さらに、上記実施の形態では仲介装置３０を２又は３備えたシステムについて説明したが、４つ以上の仲介装置３０備えていてもよい。
【０１１６】
さらに、上記実施の形態では、図１７のフローチャートが１つのプロセス、１つのスレッドによって実行されると複数のクライアントからの要求を並行に処理できないことになるが、複数のプロセスや複数のスレッドを適宜起動することにより、複数のクライアントからの要求を並行処理してもよい。
【０１１７】
さらに、上記実施の形態では、仲介装置制御部４３間のデータのやりとりは外部ネットワーク８２経由で行っているが、内部ネットワーク８１を経由してもよい。また、各仲介装置３０にＮＩＣを増設することで、外部ネットワーク８２、内部ネットワーク８１以外に、仲介装置制御部４３間のデータやりとり専用のネットワークを別途作ってもよい。
【０１１８】
さらに、上記実施の形態ではａｃｔｉｖｅ状態の仲介装置３０に仮想ＩＰアドレスを付すことにより、障害が生じてｂａｃｋｕｐ状態の仲介装置３０に転送処理が移行しても、クライアント７０からは同じアドレスでアクセスできるようにしている。また、転送処理の移行の際にはａｃｔｉｖｅ状態になった仲介装置３０からＧｒａｔｕｉｔｏｕｓ　ＡＲＰを発することにより、移行処理を迅速且つ円滑に行っていた。これらの処理はプロトコル体系としてＴＣＰ／ＩＰプロトコルスイートを用いたのものであるが、他のプロトコル体系であっても同等の機能を有していれば本発明を実施できる。
【０１１９】
【発明の効果】
以上詳述したように、本発明によれば、クライアント・サーバ間の処理要求及び応答結果を転送している一の仲介装置が障害となっても、他の正常な仲介装置によって前記転送を継続できるので、システム全体のダウンを防ぎ、より可用性の高いクライアントサーバ型システムを構築できる。また、ａｃｔｉｖｅ状態の仲介装置には常に所定の仮想アドレスが割り当てられ、クライアント及びサーバは常に該仮想アドレスを使って仲介装置に対してアクセスする。これにより、高信頼性サーバシステム内で障害があるなしにかかわらず、クライアントからは一の仮想アドレスが付された障害のない正常なサーバに見え、サーバからは他の仮想アドレスが付された障害のない正常なルータに見える。したがって、障害等により仲介装置の状態が変更されても、サーバやクライアントは仲介装置についてのアドレスを変更する必要がない。すなわち、既存のサーバやクライアントを無改造で利用できるので、可用性の高いクライアントサーバ型システムを低コストで構築することができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係る高信頼性サーバシステムの全体構成を説明するブロック図
【図２】仲介装置の構成を説明するブロック図
【図３】サーバ管理表の一例を説明する図
【図４】サーバ管理表の他の一例を説明する図
【図５】仲介装置管理表の一例を説明する図
【図６】
仲介装置管理表の他の一例を説明する図
【図７】仮想サーバの概念を説明する図
【図８】仮想ルータの概念を説明する図
【図９】パケットのフォーマットを説明する図
【図１０】パケットのフォーマットを説明する図
【図１１】パケットのフォーマットを説明する図
【図１２】パケットのフォーマットを説明する図
【図１３】パケットのフォーマットを説明する図
【図１４】パケットのフォーマットを説明する図
【図１５】パケットのフォーマットを説明する図
【図１６】パケットのフォーマットを説明する図
【図１７】ａｃｔｉｖｅ状態における仲介装置の動作を説明するフローチャート
【図１８】クライアントからの処理要求の流れを説明する図
【図１９】サーバからの応答結果の流れを説明する図
【図２０】ａｃｔｉｖｅ状態における仲介装置の動作を説明するフローチャート
【図２１】ｂａｃｋｕｐ状態における仲介装置の動作を説明するフローチャート
【図２２】ａｃｔｉｖｅ状態の仲介装置に障害が生じた場合の高信頼性サーバシステムのブロック図
【図２３】仲介装置の組み込み処理を説明するフローチャート
【図２４】ｄｏｗｎ状態の仲介装置をシステムに組み込んだ場合の高信頼性サーバシステムのブロック図
【図２５】第２の実施の形態に係る高信頼性サーバシステムの全体構成を説明するブロック図
【図２６】仲介装置管理表の一例を説明する図
【図２７】ａｃｔｉｖｅ状態における仲介装置の動作を説明するフローチャート
【図２８】ｂａｃｋｕｐ状態の仲介装置に障害が生じた場合の仲介装置管理表の一例を説明する図
【図２９】ｂａｃｋｕｐ状態における仲介装置の動作を説明するフローチャート
【図３０】ａｃｔｉｖｅ状態の仲介装置に障害が生じた場合の仲介装置管理表の一例を説明する図
【図３１】従来の高信頼性サーバシステムの全体構成を説明するブロック図
【符号の説明】
１０…高信頼性サーバシステム、２０…高信頼性サーバ、２１，２２，２３…サーバ、２４，２５，２６…コンピュータ、３０…仲介装置、３１，３２…ＮＩＣ、３３…内部ネットワーク側パケット受信部、３４…内部ネットワーク側パケット送信部、２５…外部ネットワーク側パケット受信部、３６…外部ネットワーク側パケット送信部、４０…パケット制御部、４１…サーバ制御部、４２…サーバ管理表、４３…仲介装置制御部、４４…仲介装置管理表、７０…クライアント、８１…内部ネットワーク、８２…外部ネットワーク、８３，８４…ＨＵＢ
【図１】
2004038783.tif 000003
【図２】
2004038783.tif 000004
【図３】
2004038783.tif 000005
【図４】
2004038783.tif 000006
【図５】
2004038783.tif 000007
【図６】
2004038783.tif 000008
【図７】
2004038783.tif 000009
【図８】
2004038783.tif 000010
【図９】
2004038783.tif 000011
【図１０】
2004038783.tif 000012
【図１１】
2004038783.tif 000013
【図１２】
2004038783.tif 000014
【図１３】
2004038783.tif 000015
【図１４】
2004038783.tif 000016
【図１５】
2004038783.tif 000017
【図１６】
2004038783.tif 000018
【図１７】
2004038783.tif 000019
【図１８】
2004038783.tif 000020
【図１９】
2004038783.tif 000021
【図２０】
2004038783.tif 000022
【図２１】
2004038783.tif 000023
【図２２】
2004038783.tif 000024
【図２３】
2004038783.tif 000025
【図２４】
2004038783.tif 000026
【図２５】
2004038783.tif 000027
【図２６】
2004038783.tif 000028
【図２７】
2004038783.tif 000029
【図２８】
2004038783.tif 000030
【図２９】
2004038783.tif 000031
【図３０】
2004038783.tif 000032
【図３１】
2004038783.tif 000033