(57)【要約】【課題】従来手法で、キャッシュサーバの障害発生時にエンドユーザに対するＳＬＡを保証できる自動障害対応キャッシュシステムを提供しようとする場合、キャッシュシステム管理事業者にかかる設備コストや運用コストが大きくなる。【解決手段】キャッシュサーバとその予備キャッシュサーバの関係を動的に管理し、障害が発生したとき、この障害が発生した第１のキャッシュサーバにトラフィックを転送しているＰＢＲルータに距離的に近い第２のキャッシュサーバを予備キャッシュサーバとして使う。また、キャッシュエージェントとキャッシュマネージャの機能を持つ装置あるいはモジュールを用意し、キャッシュエージェントが第１のキャッシュサーバの障害を検出したことをトリガに障害が発生した第１のキャッシュサーバにトラフィックを転送しているＰＢＲルータのトラフィック転送先を、該ＰＢＲルータに距離的に近い第２のキャッシュサーバに自動変更する。【選択図】  図９
2014112768.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に、一つのキャッシュマネージャと、複数のキャッシュサーバと、前記キャッシュサーバの各々の上で動作するキャッシュエージェントと、データベースと、少なくとも１つのＰＢＲルータとを備えており、
前記データベースは、
前記各キャッシュエージェントの識別情報と通し番号を持つ第１のデータベースと、
前記各ＰＢＲルータの識別情報と該各ＰＢＲルータに距離的に近い前記キャッシュサーバの識別情報を持つ第２のデータベースを含んでおり、
前記キャッシュエージェントは、
第１のキャッシュサーバの障害を検出したことをトリガに、該第１のキャッシュサーバの障害を検出したこと及び該第１のキャッシュサーバの識別情報を記述した障害検出通知を、前記キャッシュマネージャに送る機能を備え、
前記キャッシュマネージャは、
前記データベースから、前記障害が検出された前記第１のキャッシュサーバの識別情報が前記距離的に近いキャッシュサーバとして登録されている、第１のＰＢＲルータの識別情報を取得する機能と、
前記データベースから、前記第１のＰＢＲルータに距離的に近いキャッシュサーバとして登録されている第２のキャッシュサーバの識別情報を取得する機能と、
前記第１のＰＢＲルータにアクセスし、該第１のＰＢＲルータのトラフィック転送先を前記第２のキャッシュサーバに変更する機能とを備えている
ことを特徴とする自動障害対応キャッシュシステム。
【請求項２】
請求項１において、
前記第２のデータベースは、前記各キャッシュサーバの負荷に関する情報を保有しており、
前記キャッシュマネージャは、
前記第２のデータベースの情報を基に、前記第１のキャッシュサーバにトラフィックを転送している前記第１のＰＢＲルータのトラフィック転送先である前記第２のキャッシュサーバとして、該第１のＰＢＲルータとの距離が所定値以下で、かつ、前記負荷が小さいキャッシュサーバを選択する機能を備えている
ことを特徴とする自動障害対応キャッシュシステム。
【請求項３】
請求項１において、
前記第２のデータベースは、前記各キャッシュサーバの負荷及び優先度に関する情報を保有しており、
前記キャッシュマネージャは、
前記第２のデータベースの情報を基に、前記第１のキャッシュサーバにトラフィックを転送している前記第１のＰＢＲルータのトラフィック転送先である前記第２のキャッシュサーバとして、該第１のＰＢＲルータとの距離が所定値以下で、かつ、前記負荷が小さく、かつ、前記優先度の高いキャッシュサーバを選択する機能を備えている
ことを特徴とする自動障害対応キャッシュシステム。
【請求項４】
請求項１において、
前記第２のデータベースの情報は、近傍キャッシュ表として保有されており、
該近傍キャッシュ表は、
前記ネットワーク上の前記各ＰＢＲルータを識別するＩＰアドレスと、
前記各キャッシュサーバのＩＰアドレスと、
前記各ＰＢＲルータから前記各キャッシュサーバそれぞれまでの距離と、
前記各キャッシュサーバが停止しているか否かを表す停止フラグと、
前記各キャッシュサーバが前記各ＰＢＲルータのトラフィック転送先として割り当てられているか否かを表す割当フラグ列と、
前記各キャッシュサーバのＣＰＵ使用率と、
前記各キャッシュサーバの優先度の情報とを保持しており、
前記キャッシュマネージャは、前記近傍キャッシュ表の情報に基づいて、前記第２のキャッシュサーバを選択する
ことを特徴とする自動障害対応キャッシュシステム。
【請求項５】
請求項１において、
前記キャッシュエージェントは、
前記ネットワークの構成の変化の有無を検出する手段として、
前記第１のデータベースからキャッシュサーバＩＰ列を取り出しキャッシュサーバ配列を作る機能と、
変数キャッシュサーバに前記キャッシュサーバ配列の先頭ＩＰアドレスを代入し、該変数キャッシュサーバに対して経路を取得する手段を実行し、その結果得た経路が経路リストに登録された経路と一致するか否かを判定する機能と、
前記判定の結果が一致しない場合は前記得た経路を前記経路リストに新しく登録する機能と、
前記キャッシュマネージャに対してネットワーク構成の変化検出通知を行う機能とを有する
ことを特徴とする自動障害対応キャッシュシステム。
【請求項６】
請求項１において、
前記キャッシュマネージャは、前記第１のデータベースと前記第２のデータベースを保持しており、
前記キャッシュサーバの上で動作する前記キャッシュエージェントが、各々、前記キャッシュサーバに関する障害対応処理を行う
ことを特徴とする自動障害対応キャッシュシステム。
【請求項７】
請求項４において、
前記キャッシュマネージャは、前記第１のデータベースを保持しており、
前記各キャッシュエージェントは、前記第２のデータベースを保持しており、
前記近傍キャッシュ表は、前記各キャッシュサーバ上で動作する前記各キャッシュエージェントが、代表キャッシュエージェントであるか否かを示す情報を保有しており、
前記代表キャッシュエージェントが、前記ネットワーク上における前記複数のキャッシュサーバに関する障害対応処理を行う障害対応処理を代表して行い、
前記代表キャッシュエージェントは前記障害対応処理の完了後に自身以外の全ての前記各キャッシュエージェントに前記近傍キャッシュ表を配布し、処理完了通知を前記キャッシュマネージャに対して行う
ことを特徴とする自動障害対応キャッシュシステム。
【請求項８】
請求項４において、
前記キャッシュエージェントが、前記キャッシュサーバの復旧対応処理、追加処理、削除処理、もしくはルール更新処理を行い、前記各処理の過程で、前記近傍キャッシュ表を自動的に更新する
ことを特徴とする自動障害対応キャッシュシステム。
【請求項９】
キャッシュシステムにおけるキャッシュサーバの障害対応処理方法であって、
前記キャッシュシステムは、ネットワーク上に、一つのキャッシュマネージャと、複数のキャッシュサーバと、前記キャッシュサーバの各々の上で動作するキャッシュエージェントと、データベースと、少なくとも１つのＰＢＲルータとを備えており、
前記データベースは、
前記各キャッシュエージェントの識別情報と通し番号を持つ第１のデータベースと、
前記各ＰＢＲルータの識別情報と該各ＰＢＲルータに距離的に近い前記キャッシュサーバの識別情報を持つ第２のデータベースを含んでおり、
１つの前記キャッシュエージェントが、第１のキャッシュサーバの障害を検出したことをトリガに、該第１のキャッシュサーバの障害を検出したことを伝える旨と該第１のキャッシュサーバの識別情報を記述した障害検出通知を、前記キャッシュマネージャに送る第１のステップと、
前記キャッシュマネージャが、
前記データベースから、前記障害が検出された前記第１のキャッシュサーバの識別情報が前記距離的に近いキャッシュサーバとして登録されている、第１のＰＢＲルータの識別情報を取得する第２のステップと、
前記データベースから、前記第１のＰＢＲルータに距離的に近いキャッシュサーバとして登録されている第２のキャッシュサーバの識別情報を取得する第３のステップと、
前記第１のＰＢＲルータにアクセスし、該第１のＰＢＲルータのトラフィック転送先を前記第２のキャッシュサーバに変更する第４のステップを含む
ことを特徴とするキャッシュシステムにおけるキャッシュサーバの障害対応処理方法。
【請求項１０】
請求項９において、
前記第２のデータベースの情報は、近傍キャッシュ表として保持されており、
該近傍キャッシュ表は、
前記ネットワーク上の前記各ＰＢＲルータを識別するＩＰアドレスと、
前記各キャッシュサーバのＩＰアドレスと、
前記各ＰＢＲルータから前記各キャッシュサーバそれぞれまでの距離と、
前記各キャッシュサーバが停止しているか否かを表す停止フラグと、
前記各キャッシュサーバが前記各ＰＢＲルータのトラフィック転送先として割り当てられているか否かを表す割当フラグ列と、
前記各キャッシュサーバの負荷に関する情報とを含んでおり、
前記キャッシュマネージャが、
前記第２のキャッシュサーバとして、前記第１のＰＢＲルータとの距離が所定値以下で、かつ、前記負荷が小さいキャッシュサーバを選択する
ことを特徴とするキャッシュシステムにおけるキャッシュサーバの障害対応処理方法。
【請求項１１】
請求項１０において、
前記近傍キャッシュ表が、前記各キャッシュサーバの優先度に関する情報を保持しており、
前記キャッシュマネージャが、
前記第２のキャッシュサーバとして、前記距離が所定値以下で、かつ、前記負荷が小さく、かつ、前記優先度の高いキャッシュサーバを選択する
ことを特徴とするキャッシュシステムにおけるキャッシュサーバの障害対応処理方法。
【請求項１２】
請求項９において、
前記キャッシュマネージャは、前記第１のデータベースと前記第２のデータベースを保持しており、
前記キャッシュサーバの上で動作する前記キャッシュエージェントが、各々、前記キャッシュサーバに関する障害対応処理を行う
ことを特徴とするキャッシュシステムにおけるキャッシュサーバの障害対応処理方法。
【請求項１３】
請求項９において、
前記キャッシュマネージャは、前記第１のデータベースを保持しており、
前記各キャッシュエージェントは、前記第２のデータベースを保持しており、
前記近傍キャッシュ表は、前記各キャッシュサーバ上で動作する前記各キャッシュエージェントが、代表キャッシュエージェントであるか否かを示す情報を保有しており、
前記代表キャッシュエージェントが、
前記ネットワーク上における前記複数のキャッシュサーバに関する障害対応処理を行う障害対応処理を代表して行い、
前記障害対応処理の完了後に自身以外の全ての前記各キャッシュエージェントに前記近傍キャッシュ表を配布し、処理完了通知を前記キャッシュマネージャに対して行う
ことを特徴とするキャッシュシステムにおけるキャッシュサーバの障害対応処理方法。
【請求項１４】
ネットワークに接続されるキャッシュマネージャであって、
前記ネットワークは、複数のキャッシュサーバと、前記キャッシュサーバの各々の上で動作するキャッシュエージェントと、データベースと、少なくとも１つのＰＢＲルータとを備えるものであって、
前記データベースは、
前記各キャッシュエージェントの識別情報と通し番号を持つ第１のデータベースと、
前記各ＰＢＲルータの識別情報と該各ＰＢＲルータに距離的に近い前記キャッシュサーバの識別情報を持つ第２のデータベースを含んでおり、
前記キャッシュマネージャは、
前記ネットワーク上の前記キャッシュエージェントから、第１のキャッシュサーバの障害を検出したこと及び該第１のキャッシュサーバの識別情報を記述した障害検出通知を受け取る機能と、
前記データベースから、前記障害が検出された前記第１のキャッシュサーバの識別情報が前記距離的に近いキャッシュサーバとして登録されている、第１のＰＢＲルータの識別情報を取得する機能と、
前記データベースから、前記第１のＰＢＲルータに距離的に近いキャッシュサーバとして登録されている第２のキャッシュサーバの識別情報を取得する機能と、
前記第１のＰＢＲルータにアクセスし、該第１のＰＢＲルータのトラフィック転送先を前記第２のキャッシュサーバに変更する機能とを備えている
ことを特徴とするキャッシュマネージャ。
【請求項１５】
請求項１４において、
前記第２のデータベースは、前記各キャッシュサーバの負荷及び優先度に関する情報を含んでおり、
前記キャッシュマネージャは、
前記第２のデータベースの情報を基に、前記第１のキャッシュサーバにトラフィックを転送している前記第１のＰＢＲルータのトラフィック転送先である前記第２のキャッシュサーバとして、該第１のＰＢＲルータとの距離が所定値以下で、かつ、前記負荷が小さく、かつ、前記優先度の高いキャッシュサーバを選択する機能を備えている
ことを特徴とするキャッシュマネージャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上のキャッシュサーバに関する技術であり、特に、エンドユーザが使用していたキャッシュサーバが停止した場合に、エンドユーザのトラフィックを別のキャッシュサーバに転送する自動障害対応キャッシュシステム及びキャッシュサーバの障害時の対応方法に関する技術である。
【背景技術】
【０００２】
ネットワーク内のトラフィック削減を目的として、エンドユーザ近傍にキャッシュサーバを置きそこからデータを返すキャッシュシステムが用いられる。キャッシュシステムでは、多数のキャッシュサーバをネットワークに分散させて設置するため、キャッシュサーバの運用管理や障害時の障害対応にかかるコストが大きい。特にキャッシュサーバの障害対応は、キャッシュサーバを経由する通信を遮断せずに対応する必要があることからルータの設定変更のような手間がかかりコストが大きい。そこで、キャッシュサーバ障害発生時の障害対応にかかるコスト削減を目的として、自動障害対応システムが用いられる。
【０００３】
例えば、現用系サーバに対して予備系サーバを用意し、現用系サーバの障害発生時に予備系サーバに切り替える自動障害対応システムが一般的に使われている。具体的には、特許文献１に従来技術として記載されている。すなわち、特許文献１には、フェイルオーバーシステム100が、活発なノード110および不活発なノード1202を含む演算処理装置を含み、通常は活発なノード110上でプロセスが実行されると共にそのプロセスを不活発なノード120がモニターしており、活発なノード110の障害を検知すれば活発なノード110のすべての動作がシャットダウンされ、不活発なノード120が新しい活発なノードとなり活動をすべて再開するフェイルオーバーメカニズムが開始する、ことが開示されている。
【０００４】
また、複数のサーバの障害監視を行うロードバランサ装置がサーバの障害を検出した場合に、障害が発生しているサーバにリクエストを割り振らず、正常サーバ（障害が発生していないサーバ）にのみ処理を割り振る自動障害対応システムが一般的に使われている。具体的には、特許文献２に次のようなシステムが記載されている。サーバは、高有用性を必要とし、複数のサーバがありその１つに障害が発生したとき、障害にも拘わらず処理を継続するためにフェイルオーバーに移行する。そのような状況では、複数のサーバの各々に作業を分配するために一般的にロードバランサ装置が使用される。ロードバランサ装置は、何れかのサーバがダウンした時、その障害を検知し、残りのサーバに全てのリクエストを分配することでその障害を補償しようとする。
【０００５】
さらに、特許文献３には、ネットワーク負荷・サーバ負荷・クライアントの位置を考慮した、クライアントにとって最適な代理サーバを自動的に選択する代理サーバ選択装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】ＵＳ ２００３／００９７６１０ Ａ１
【特許文献２】ＵＳ ２００６／０２９４２０７ Ａ１
【特許文献３】特開２００１−２７３２２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の従来システムをキャッシュシステムにおいて利用することを考えた場合、以下の問題と課題が発明者らによって見出された。
【０００８】
まず、特許文献１に記載の現用系サーバと予備系サーバを用いたシステムでは、現用キャッシュサーバ一台もしくは複数台に対して予備キャッシュサーバを少なくとも一台設置する必要がある。しかし、現用系サーバと予備系サーバとが予め登録された固定的な関係にあり、ネットワーク上に多数設置するキャッシュサーバ一台または複数台毎に予備キャッシュサーバを設置すると、設備コストと運用コストが増加するという第一の問題がある。
【０００９】
次に、特許文献２に記載の二つ目のードバランサ装置を用いたシステムでは、サーバとロードバランサとは、予め登録された固定的な関係にある。ロードバランサ装置を一台しか設置しない場合、ロードバランサ装置が単一障害点となる。そのため、ロードバランサ装置を冗長化するために、キャッシュサーバ一台または複数台に対してロードバランサ装置を複数台設置する必要がある。しかし、この場合設備コストと運用コストが高くなるという第二の問題がある。
【００１０】
また、ロードバランサ装置が管理できるキャッシュサーバ台数はロードバランサ装置のスループットに律束される。具体的には、ロードバランサ装置一台が備えるＮＩＣ（ネットワーク Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）の帯域幅は一般的に最大でも１０Ｇｂｐｓ程度である。また、キャッシュサーバ装置が備えるＮＩＣの帯域幅は一般的に１Ｇｂｐｓ程度である。すなわち、ロードバランサ装置一台あたりが管理できるキャッシュサーバは最大で十台程度である。この場合、キャッシュサーバ複数台あたりにロードバランサ装置を一台設置すると、設備コストが増加するという第三の問題がある。
【００１１】
さらに、特許文献３に記載された、クライアントにとって最適な代理サーバを自動的に選択する装置においては、代理サーバとして機能するキャッシュサーバ自体に障害が発生した時の障害対応策については、なんら配慮されていない。
【００１２】
したがって、以上の各問題を踏まえて、ネットワーク上にキャッシュサーバが多数ある場合でも、キャッシュサーバに障害が発生した時の対応策として、設備コストや運用コストが増加しない、自動障害対応キャッシュシステム及び対応方法を提供することが本発明の主な課題である。
【課題を解決するための手段】
【００１３】
本発明の代表的なものの一例を示すと、次のとおりである。自動障害対応キャッシュシステムは、ネットワーク上に、一つのキャッシュマネージャと、複数のキャッシュサーバと、前記キャッシュサーバの各々の上で動作するキャッシュエージェントと、データベースと、少なくとも１つのＰＢＲルータとを備えており、前記データベースは、前記各キャッシュエージェントの識別情報と通し番号を持つ第１のデータベースと、前記各ＰＢＲルータの識別情報と該各ＰＢＲルータに距離的に近い前記キャッシュサーバの識別情報を持つ第２のデータベースを含んでおり、１つの前記キャッシュエージェントは、第１のキャッシュサーバの障害を検出したことをトリガに、前記第１のキャッシュサーバの障害を検出したことを伝える旨と障害が発生した該第１のキャッシュサーバの識別情報を記述した障害検出通知を、前記キャッシュマネージャに送る機能を備え、前記キャッシュマネージャは、前記データベースから、前記障害が検出された前記第１のキャッシュサーバの識別情報が前記距離的に近いキャッシュサーバとして登録されている、第１のＰＢＲルータの識別情報を取得する機能と、前記データベースから、前記第１のＰＢＲルータに距離的に近いキャッシュサーバとして登録されている第２のキャッシュサーバの識別情報を取得する機能と、前記第１のＰＢＲルータにアクセスし、該第１のＰＢＲルータのトラフィック転送先を前記第２のキャッシュサーバに変更する機能とを備えていることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ネットワーク上にキャッシュサーバが多数ある場合でも、それらの予備キャッシュサーバを動的に最適なものに変更可能である。そのため、ネットワーク上のあるキャッシュサーバに障害が発生した時でもエンドユーザは他のキャッシュサーバを継続して利用でき、エンドユーザに対するＳＬＡを保証できると共に、キャッシュシステム管理事業者が負担する設備コストや運用コストの削減にも貢献できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係る、自動障害対応キャッシュシステムの全体構成を示す図である。
【図２Ａ】実施例１のキャッシュマネージャの構成を示す図である。
【図２Ｂ】実施例１のキャッシュサーバの構成を示す図である。
【図３Ａ】実施例１における近傍キャッシュ表の構成例を示す図である。
【図３Ｂ】実施例１におけるキャッシュサーバ一覧表の構成例を示す図である。
【図３Ｃ】実施例１におけるルール設定例を示す図である。
【図３Ｄ】実施例１におけるルール設定内容例を示す図である。
【図４】実施例１のキャッシュサーバ追加処理のシーケンスである。
【図５】実施例１のキャッシュマネージャの近傍キャッシュ表更新処理のフローチャートである。
【図６Ａ】実施例１のキャッシュマネージャのキャッシュサーバ一覧表更新処理のフローチャートである。
【図６Ｂ】実施例１のルール設定処理のフローチャートである。
【図７】実施例１のキャッシュサーバ追加処理のキャッシュマネージャのフローチャートである。
【図８】実施例１におけるキャッシュサーバ障害時の対応方法を示す図である。
【図９】実施例１のキャッシュサーバ障害検出時のシーケンスである。
【図１０】実施例１のキャッシュマネージャのキャッシュサーバ障害検出時のフローチャートである。
【図１１】実施例１のキャッシュエージェントのキャッシュサーバ障害検出時のフローチャートである。
【図１２】実施例１のキャッシュサーバ復旧時のシーケンスである。
【図１３】実施例１のキャッシュマネージャのキャッシュサーバ復旧時のフローチャートである。
【図１４Ａ】実施例１のキャッシュエージェントのキャッシュサーバ追加要求処理のフローチャートである。
【図１４Ｂ】実施例１の距離測定のフローチャートである。
【図１５】実施例１のｐｉｎｇ結果から距離を測る例の図である。
【図１６】実施例１のキャッシュサーバ削除処理のシーケンスである。
【図１７】実施例１のキャッシュサーバ削除処理のキャッシュマネージャのフローチャートである。
【図１８】実施例１のルール更新処理のシーケンスである。
【図１９】実施例１のルール更新処理のキャッシュマネージャのフローチャートである。
【図２０】実施例１の、ネットワーク構成変化検出処理のキャッシュエージェントのフローチャートである。
【図２１】実施例１の、キャッシュマネージャの全体フローチャートである。
【図２２】実施例１のキャッシュエージェントの全体フローチャートである。
【図２３Ａ】本発明の実施例２に係る、キャッシュマネージャの構成を示す図である。
【図２３Ｂ】実施例２に係るキャッシュサーバの構成を示す図である。
【図２４】実施例２のキャッシュサーバ一覧表の構成である。
【図２５】実施例２のキャッシュサーバ障害検出時のシーケンスである。
【図２６】実施例２のキャッシュマネージャの全体動作のフローチャートである。
【図２７】実施例２のキャッシュエージェントの全体動作のフローチャートである。
【発明を実施するための形態】
【００１６】
本発明では、上記従来技術の課題の解決手段として、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータのトラフィック転送先を、キャッシュサーバの障害発生時に自動的に変更する。具体的には、 キャッシュサーバの障害発生時にＰＢＲルータのトラフィック転送先を障害が発生したキャッシュサーバの代わりとなる別のキャッシュサーバ（以降、予備キャッシュサーバとする）に変更する。ここで、予備キャッシュサーバは、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータに近い（例えばＲＴＴが小さい）キャッシュサーバとする。そして本発明では、ＰＢＲルータのトラフィック転送先変更処理を、二種類の装置（あるいはモジュール）をネットワーク上に設置し、これらの連携によって処理する。本発明ではこれら二種類の装置（またはモジュール）をそれぞれキャッシュエージェント、キャッシュマネージャと呼ぶ。なお、各ＰＢＲルータの予備キャッシュサーバ、すなわち各ＰＢＲルータに距離的に近いキャッシュサーバの識別情報は、近傍キャッシュ表として予めキャッシュマネージャが持つデータベースに登録しておく。ＰＢＲルータのトラフィック転送先変更処理の概要は次の通りである。まずキャッシュエージェントは、自身が障害監視を行っているキャッシュサーバの障害を検出した時にキャッシュマネージャに障害を検出したことを通知し、その後キャッシュサーバを停止する。通知を受けたキャッシュマネージャは予備キャッシュサーバの識別情報が登録されたデータベース（近傍キャッシュ表）を参照し、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータの識別情報と、該ＰＢＲルータの予備キャッシュサーバの識別情報をデータベースから取得する。さらにキャッシュマネージャは、取得した識別情報を持つＰＢＲルータにアクセスし、トラフィックの転送先を予備キャッシュサーバに変更する。
【００１７】
以上のように本発明では、キャッシュサーバの予備キャッシュサーバをあらかじめ用意せず、データベースを用いてキャッシュサーバとその予備キャッシュサーバの関係を動的に管理し、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータに距離的に近いキャッシュサーバをデータベースから抽出し、予備キャッシュサーバとして使うことで、上記の課題を解決できる。
【００１８】
なお、以下の実施例では、キャッシュサーバの障害対応処理として説明するが、本発明による障害対応処理はキャッシュサーバの障害発生時のみに限らず、キャッシュサーバの定期メンテナンスに伴うキャッシュサーバの停止時やネットワーク構成変化の検出時にも同様に適用することができる。  
以下、本発明の実施例を、図面を用いて説明する。
【実施例１】
【００１９】
本発明の実施例1に係る、自動障害対応キャッシュシステムについて、説明する。  
ここでは、キャッシュサーバの障害発生時に、ＰＢＲルータのトラフィック転送先を予備キャッシュサーバに変更する処理を自動化する、自動障害対応キャッシュシステムについて説明する。本実施例は、キャッシュエージェントがキャッシュサーバ装置上で動作する場合の例である。
【００２０】
図１に、本実施例の自動障害対応キャッシュシステムが動作するネットワークの全体構成例を示す。  
ネットワーク（１０１１）は、ＩＳＰ（Ｉｎｔｅｒｎｅｔ Ｓｅｒｖｉｃｅ Ｐｒｏｖｉｄｅｒ）やキャリア網などのネットワークであり、コンテンツ等のサービスを提供するサーバ装置（ウェブサーバ，コンテンツサーバなど）（図示略）が接続されている。キャッシュマネージャ（１０２１）は、本実施例のキャッシュシステムのメインコンポーネント（若しくは装置）である。各キャッシュサーバ（１０３１、１０３３、１０３５）は、前記サーバ装置が保持し各ＰＣ等（１０６１〜１０６４）に提供するコンテンツの複製を保持し、コンテンツをエンドユーザである各クライアント端末（ＰＣ等）に返すコンポーネント（若しくは装置）である。各キャッシュサーバ（１０３１、１０３３、１０３５）上では、各キャッシュエージェント（１０３２、１０３４、１０３６）の機能を担うモジュールが動作する。各キャッシュエージェント（（Ｃａｃｈｅ Ａｇｅｎｔ：１０３２、１０３４、１０３６）は本実施例のキャッシュシステムを構成するコンポーネントであり、キャッシュマネージャ（１０２１）と連携して動作する。
【００２１】
本実施例において、ネットワークは、少なくとも１つのキャッシュマネージャ（１０２１）と、複数のルータ（１０４１〜１０４３）と複数のＰＢＲ（Ｐｏｌｉｃｙ Ｂａｓｅｄ Ｒｏｕｔｉｎｇ）ルータ（１０５１〜１０５３）によって構成される。
【００２２】
ここでＰＢＲルータとは、転送するトラフィックの条件とトラフィックの転送先を記述したルールを基にルーティングをおこなう機能を持つルータ装置のことである。また、ルータおよびＰＢＲルータに準ずる中継装置を用いるネットワークであれば本実施例と同様のキャッシュシステムを構成できる。
【００２３】
なお、本発明ではネットワーク上の距離を測る指針としてＲＴＴ（Ｒｏｕｎｄ Ｔｒｉｐ Ｔｉｍｅ、往復遅延時間）を用いる。インターネットプロトコルの下では、ＲＴＴはＩＣＭＰ（Ｉｎｔｅｒｎｅｔ Ｃｏｎｔｒｏｌ Ｍｅｓｓａｇｅ Ｐｒｏｔｏｃｏｌ）で計測できる。また、他のプロトコルであってもＲＴＴを計測する手段があれば本発明を適用可能である。なお、距離として物理的距離やホップ数、往復ではなく片道のＲＴＴ値など、ＲＴＴのほかにＰＢＲルータとキャッシュサーバ間の距離として使用できるものがあれば代用することができる。
【００２４】
なお、ネットワーク（１０１１）上に、キャッシュマネージャ（１０２１）の故障時に代替して動作する予備のマネージャとしてキャッシュマネージャ（１０２２）を設けても良い。
【００２５】
図２Ａ、図２Ｂに、図１のキャッシュマネージャ（１０２１）とキャッシュサーバ（１０３１、１０３３）の詳細構成を示す。
【００２６】
まず、図２Ａに示すように、キャッシュマネージャ（１０２１）は、ＣＰＵ（２０１１）、主記憶（２０１２）、二次記憶（２０１３）を含む。主記憶（２０１２）にはキャッシュマネージャモジュール（２０２１）と近傍キャッシュ表（２０２２）とキャッシュサーバ一覧表（２０２３）がある。キャッシュマネージャモジュール（２０２１）はキャッシュマネージャ（１０２１）をコントロールするプログラムの実行時イメージである。キャッシュマネージャモジュール（２０２１）の動作の詳細は後述する。近傍キャッシュ表（２０２２）はネットワーク上の各ＰＢＲルータに距離的に近いキャッシュサーバ、すなわち予備キャッシュサーバの識別情報を複数保持する表である。ここでは、各ＰＢＲルータに距離的に近いキャッシュサーバを順番に、第１近傍キャッシュサーバ、第２近傍キャッシュサーバ、第３近傍キャッシュサーバとして登録する。
【００２７】
二次記憶（２０１３）には、キャッシュマネージャモジュールプログラム（２０３１）が含まれる。キャッシュマネージャ（１０２１）動作時にはキャッシュマネージャモジュールプログラム（２０３１）を主記憶（２０１２）上に展開し、キャッシュマネージャモジュール（２０２１）として実行する。
【００２８】
次に、図２Ｂに示すように、キャッシュサーバ（１０３１、１０３３）は、ＣＰＵ（２０４１）、主記憶（２０４２）、二次記憶（２０４３）を含む。主記憶（２０４２）にはキャッシュエージェントモジュール（２０５１）とキャッシュ管理モジュール（２０５２）がある。キャッシュエージェントモジュール（２０５１）はキャッシュエージェント（１０３２、１０３４）をコントロールするプログラムの実行時イメージである。キャッシュエージェントモジュール（２０５１）の動作の詳細は後述する。キャッシュ管理モジュール（２０５２）はコンテンツのキャッシュや配信をおこなうプログラムの実行時イメージである。二次記憶（２０４３）にはキャッシュエージェントモジュールプログラム（２０６１）とキャッシュ管理モジュールプログラム（２０６２）とキャッシュ管理領域（２０６３）が含まれる。キャッシュエージェント（１０３２、１０３４）動作時にはキャッシュエージェントモジュールプログラム（２０６１）を主記憶（２０４２）上に展開し、キャッシュエージェントモジュール（２０５１）として実行する。キャッシュサーバ（１０３１、１０３３）の動作時には、キャッシュ管理モジュールプログラム（２０６２）を主記憶（２０４２）上に展開し、キャッシュ管理モジュール（２０５２）として実行する。本実施例では、キャッシュ管理モジュールプログラム（２０６２）は汎用のものを利用する。キャッシュ管理領域（２０６３）はキャッシュ管理モジュール（２０５２）が管理する領域であり、コンテンツをキャッシュする領域である。
【００２９】
図３Ａに、近傍キャッシュ表（２０２２）の詳細を示す。近傍キャッシュ表（２０２２）には、ネットワーク上のＰＢＲルータを識別するＰＢＲルータＩＰアドレス列（３０１１）と、第1近傍キャッシュサーバのＩＰアドレスを保持する第１近傍キャッシュサーバＩＰ列（３０１２）と、第２近傍キャッシュサーバのＩＰアドレスを保持する第２近傍キャッシュサーバＩＰ列（３０１６）と、第３近傍キャッシュサーバのＩＰアドレスを保持する第３近傍キャッシュサーバＩＰ列（３０２０）と、ＰＢＲルータから第１近傍キャッシュサーバ、第２近傍キャッシュサーバ、第３近傍キャッシュサーバそれぞれまでの距離を表す距離１列（３０１３）、距離２列（３０１７）、距離３列（３０２１）がある。また各キャッシュサーバが停止しているか否かを表す停止フラグ列（３０１４、３０１８、３０２２）と、各キャッシュサーバがＰＢＲルータのトラフィック転送先として割り当てられているか否かを表す割当フラグ列（３０１５、３０１９、３０２３）がある。ここでは、キャッシュサーバが停止している場合は停止フラグをオンとして１を設定し、停止していない場合は停止フラグをオフとして０を設定する。同様にＰＢＲルータのトラフィック転送先として割り当てられている場合は割当フラグをオンとして１を設定し、割り当てられていない場合は割当フラグをオフとして０を設定する。なお、ここでは登録するキャッシュサーバ数を３つとしたが、１つ以上であればいくつ登録してもよい。ここでＰＢＲルータを識別するためのＩＰアドレスは、ＰＢＲルータ装置固有のものである。
【００３０】
なお、近傍キャッシュ表（２０２２）の主キーはＰＢＲルータＩＰアドレス列（３０１１）であり、ＰＢＲルータＩＰアドレス列を用いて特定の１行を限定する事ができる。
【００３１】
近傍キャッシュ表には、ＰＢＲルータ毎に、各ＰＢＲルータから距離的に近い順に第1〜第３近傍キャッシュサーバが設定されるが、これらの距離関係は、キャッシュサーバの故障の有無、キャッシュサーバの追加・削除、あるいは通信環境によって、常に変化する。すなわち、キャッシュマネージャ（１０２１）は、以下に述べるキャッシュサーバの障害対応処理、キャッシュサーバ復旧対応処理、キャッシュサーバ追加処理、キャッシュサーバ削除処理、及び、ルール更新処理を行い、その過程で、近傍キャッシュ表（２０２２）やキャッシュサーバ一覧表（２０２３）を自動的に更新する。従って、近傍キャッシュ表の各ＰＢＲルータに対する第1〜第３近傍キャッシュサーバの構成は動的に変化する。
【００３２】
例えば、近傍キャッシュ表のリストの１行目のＰＢＲルータＩＰアドレス列（３０１１）のｇ１．ｇ２．ｇ３.ｇ４が図１のＰＢＲルータ（１０５１）を指し、このＰＢＲルータ（１０５１）に対して距離的に近い順に、第1近傍キャッシュサーバ（１０３１）、第２近傍キャッシュサーバ（１０３３）、第３近傍キャッシュサー（１０３５）が登録されているものとする。もし、第1近傍キャッシュサーバ（１０３１）に障害が発生したときは、このキャッシュサーバ（１０３１）の停止フラグ１をオン（１）としこのキャッシュサーバ以外でＰＢＲルータ（１０５１）からの距離が最も小さくかつ停止フラグがオフ（０）の予備キャッシュサーバ、ここでは第２近傍キャッシュサーバ（１０３３）を新たな第１近傍キャッシュサーバとし、その割当てフラグ２をオン（１）としＰＢＲルータ（１０５１）のトラフィック転送先に変更する。
【００３３】
また、近傍キャッシュ表の各行のＰＢＲルータに関して、キャッシュサーバＩＰ列（３０１２、３０１６、３０２０）毎に、各キャッシュサーバのＣＰＵ使用率、負荷、優先度等を登録するための列を追加しても良い。この点に関しては、後で詳細に説明する。
【００３４】
またキャッシュサーバ一覧表（２０２３）はネットワーク上に存在するキャッシュサーバの一覧である。  
図３Ｂに、キャッシュサーバ一覧表（２０２３）を示す。キャッシュサーバ一覧表（２０２３）には、通し番号であるＩＤ列（３０２４）とキャッシュサーバを識別するキャッシュサーバＩＰアドレス列（３０２５）と各キャッシュサーバが停止中であるか否かを表す停止フラグ列（３０２６）がある。ここで、キャッシュサーバを識別するためのＩＰアドレスはキャッシュサーバ装置固有のものである。停止フラグについては近傍キャッシュ表（２０２２）の停止フラグ（３０１４、３０１８、３０２２）と同じである。また、キャッシュサーバ一覧表（２０２３）の主キーはＩＤ列（３０２４）であり、ＩＤ列を用いて特定の１行を限定する事ができる。また、キャッシュサーバＩＰアドレス列（３０２５）もユニーク列であり、キャッシュサーバＩＰアドレス列を用いて特定の１行を限定する事ができる。
【００３５】
ここでＰＢＲルータのトラフィック転送先と転送トラフィック条件を合わせて「ルール」と呼び、図３Ｃに示すように、ＰＢＲルータの転送トラフィック条件5000、ポート番号5001、 トラフィック転送先5002、 キャッシュサーバ5003の指定欄がある。図３Ｄの設定例では、jyouken destination port 80によって、転送するトラフィックの条件5004を宛先ポート８０番に指定している。また、tensou c11.c12.c13.c14によって、転送するトラフィックの条件に合致したトラフィックの転送先5005に、c11.c12.c13.c14を指定している。なお、ルールの設定に使用するコマンドは使用するＰＢＲルータで定められた適切なコマンドを使用する。
【００３６】
図４に、本システムに新たなキャッシュサーバを追加するキャッシュサーバ追加処理のシーケンスを示す。例えば、図１の例において、キャッシュサーバ（１０３１、１０３３）が存在する既存のシステムに新たにキャッシュサーバ（１０３５）を追加することを想定する。なお、自動障害対応キャッシュシステムを新規に自動作成したり、既存のシステムのデータを初期化して再設定する場合にも、同様な処理を行う。
【００３７】
本処理はキャッシュマネージャ（１０２１）と新たに追加されるキャッシュサーバ（１０３５）のキャッシュエージェント（１０３６）の間で執り行われる。まず新しく追加するキャッシュサーバ（１０３５）上で動作するキャッシュエージェント（１０３６）がキャッシュマネージャ（１０２１）に対しキャッシュサーバ追加要求（１０００１）を出す。続いてキャッシュマネージャ（１０２１）は新しく追加するキャッシュサーバ（１０３５）に関するレコードをキャッシュサーバ一覧表（２０２３）に追加しキャッシュサーバ一覧表を更新する（１０００２）。
【００３８】
続いてキャッシュマネージャ（１０２１）は近傍キャッシュ表（２０２２）のＰＢＲルータＩＰ列（２０４１）から全てのＰＢＲルータＩＰを取り出してリストにし、リストの１行目のＰＢＲルータをＰＢＲルータＡとして（１０００３）、キャッシュエージェント（１００２１）にＰＢＲルータＡとの距離測定指示（１０００４）を出す。キャッシュエージェント（１００２１）は距離測定結果をキャッシュマネージャ（１０２１）に通知する（１０００５）。（なお、距離測定の処理に関しては、図１４Ｂ、図１５参照）。
【００３９】
続いて、キャッシュマネージャ（１０２１）は、キャッシュエージェント（１００２１）から返された距離測定結果を集計し、距離が小さいキャッシュサーバを近傍キャッシュ表（２０２２）に追加し更新（１０００６）する。その後、キャッシュマネージャ（１０２１）はＰＢＲルータ（１０５１）にアクセスし、コマンドライン経由でルール（転送するトラフィックの条件とトラフィックの転送先）を設定（１０００７）する。ＰＢＲルータＡのルール設定が完了後、キャッシュマネージャ（１０２１）はリストの２行目のＰＢＲルータを取りだしＰＢＲルータＡとし（１０００８）、キャッシュエージェント（１００２１）にＰＢＲルータＡとの距離測定指示（１０００９）を出す。以後、リストの残りについても上記処理を続ける。
【００４０】
上記のように、本システムはキャッシュエージェント（１０３２、１０３４）の起動をトリガに、各ＰＢＲルータに対して転送するトラフィックの条件とトラフィックの転送先の設定を自動処理する。なお、キャッシュエージェント（１０３２、１０３４）が起動後にキャッシュマネージャ（１０２１）に追加要求をおこなうには、キャッシュマネージャ（１０２１）のＩＰアドレスなどの識別情報をキャッシュエージェント（１０３２、１０３４）が保持している必要がある。ここでは、キャッシュエージェント（１０３２、１０３４）は起動した時点でキャッシュマネージャ（１０２１）のＩＰアドレスなどの識別情報を保持しているとし、キャッシュエージェント（１０３２、１０３４）の起動をトリガとした。
【００４１】
図５に、図４のキャッシュサーバＣを追加する処理のうち、近傍キャッシュ表（２０２２）の更新処理（１０００６）のフローチャートを示す。キャッシュマネージャ（１０２１）は追加されるキャッシュサーバＣについての近傍キャッシュ表更新処理開始後（１１００１）、キャッシュサーバ一覧表からキャッシュサーバＣの停止フラグがオフであるか否かを判断する（１１００２）。続いてキャッシュマネージャ（１０２１）はキャッシュサーバＣ上で動作するキャッシュエージェント（１０３２、１０３４）にＰＢＲルータＡとの距離測定を指示する（１１００３）。その後変数ｎを１に設定する（１１００４）。続いてキャッシュマネージャ（１０２１）はキャッシュエージェント（１０３２、１０３４）から距離測定結果を受け取り、その結果が近傍キャッシュ表（２０２２）のＰＢＲルータＡレコードの距離ｎに登録されている値よりも小さいか否かを判断する（１１００６）。大きかった場合は、変数ｎの値が最大登録キャッシュサーバ数と一致するか否かを判断（１１００７）し、一致しない場合は変数ｎの値に１を加えて（１１００５）処理１１００６に戻り、大きかった場合は処理を終了する。小さかった場合は第ｎキャッシュサーバＩＰを第ｎ＋１キャッシュサーバＩＰに登録し、距離ｎを距離ｎ＋１に登録する（１１００８）。続いてキャッシュサーバＣのＩＰアドレスを近傍キャッシュ表（２０２２）のＰＢＲルータＡレコードの第ｎキャッシュサーバＩＰに登録し、距離ｎには受け取った距離測定結果を登録する（１１００９）。その後処理を終了する。
【００４２】
図６Ａ、図６Ｂに、図４のキャッシュサーバ追加処理のうち、キャッシュサーバ一覧表更新処理（１０００２）とルール設定処理（１０００７）のフローチャートを示す。
【００４３】
図６Ａは、キャッシュサーバ一覧表（２０２３）の更新処理のフローチャートである。キャッシュマネージャ（１０２１）はキャッシュサーバＣのキャッシュサーバ一覧表更新処理開始（１２００１）後、キャッシュエージェント（１０３２、１０３４）から送られてきた追加要求メッセージに含まれるキャッシュサーバＣのＩＰアドレスをキャッシュサーバ一覧表（２０２３）に追加（１２００２）し、処理を終了（１２００３）する。なお、キャッシュエージェント（１０３２、１０３４）から削除要求メッセージが送られてきた場合には、キャッシュサーバＣのＩＰアドレスをキャッシュサーバ一覧表（２０２３）から削除（１２００２）し、処理を終了（１２００３）する。
【００４４】
図６Ｂは、ルール設定処理のフローチャートである。キャッシュマネージャ（１０２１）はＰＢＲルータＡのルール設定処理開始後（１２００４）、ｓｓｈコマンドなどによってＰＢＲルータＡにアクセス（１２００５）する。なお、ここではＰＢＲルータにアクセスするためにｓｓｈコマンドを用いたが、同様の機能を持ったコマンドまたは手段があれば代用できる。その後、近傍キャッシュ表（２０２２）からＰＢＲルータＡレコードに登録されている第１近傍キャッシュサーバのＩＰアドレスを取り出す（１２００６）。続いて取り出したＩＰアドレスを転送先にコマンドラインから設定し、同様に転送条件を設定（１２００７）する。その後処理を終了（１２００８）する。
【００４５】
図７に、図４のキャッシュサーバ追加処理のうち、キャッシュマネージャ（１０２１）の処理部分のフローチャートを示す。キャッシュマネージャ（１０２１）はキャッシュサーバＣの追加処理開始（１３００１）後、図６ＡのキャッシュサーバＣのキャッシュサーバ一覧表更新処理（１３００２）を実行する。続いて近傍キャッシュ表（２０２２）から全レコードのＰＢＲルータＩＰアドレス列（２０４１）を取りだしＰＢＲルータ配列を作る（１３００３）。続いて変数ＰＢＲルータＡにＰＢＲルータ配列の先頭をコピー（１３００４）し、ＰＢＲルータ配列の先頭を削除（１３００５）する。その後図５のキャッシュサーバＣについての近傍キャッシュ表更新処理をおこなう（１３００６）。続いて図６ＢのＰＢＲルータＡのルール設定処理（１３００７）をおこない、ＰＢＲルータ配列に続きがあるか否かを判断（１３００８）する。続きがある場合、手順１３００４に戻り、続きがなければそのまま処理を終了（１３００９）する。
【００４６】
続いて、本実施例の自動障害対応キャッシュシステムの全体的な動作を説明する。ここでは、本システムにおいてキャッシュエージェントがキャッシュサーバの障害を検出した場合の処理と、キャッシュエージェントが障害から復旧したキャッシュサーバを検出した場合の処理について記す。
【００４７】
すなわち、以下では、図８に示したように、キャッシュエージェント（１０３２）が第１のキャッシュサーバ（１０３１）の障害を検出した場合、及び、その後復旧した場合を想定して説明する。障害の発生したキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）は、キャッシュマネージャ（１０２１）に「障害検出」の通知を行う。これを受けて、キャッシュマネージャ（１０２１）は、障害が発生した第１のキャッシュサーバ（１０３１）を停止させ、近傍キャッシュ表２０２２を参照し、この近傍キャッシュ表のリストの１行目のＰＢＲルータ（１０５１）に関して、障害が発生した第１のキャッシュサーバ（１０３１）以外で距離が最も小さくかつ停止フラグがオフの第２のキャッシュサーバを予備キャッシュサーバとしそのＩＰアドレスを取得する。そして、ＰＢＲルータ（１０５１）のトラフィック転送先を指定された第２のキャッシュサーバ（１０３３）に変更する。キャッシュマネージャは、リストの１行目のＰＢＲルータの転送先変更の完了後、近傍キャッシュ表のリストの２行目のＰＢＲルータ（１０５２）に関して、トラフィック転送先の変更の処理を行い、転送先を指定された予備キャッシュサーバに変更する。同様に、近傍キャッシュ表の各行のＰＢＲルータの転送先の変更処理を行う。以下、詳細に説明する。
【００４８】
図９に、本システムにおいて、キャッシュエージェント（１０３２）が第１のキャッシュサーバ（１０３１）の障害を検出した場合のキャッシュサーバ障害対応処理シーケンスを示す。本処理は、障害が発生したキャッシュサーバ上で動作するキャッシュエージェント（１０３２）とキャッシュマネージャ（１０２１）の間で執り行われる。まず、障害が発生した第１のキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）がキャッシュマネージャ（１０２１）に対して障害検出通知を出し（４００１）、第１のキャッシュサーバ（１０３１）を停止する（４００２）。続いて、キャッシュマネージャ（１０２１）は、キャッシュサーバ一覧表（２０２３）に登録されている障害が発生した第１のキャッシュサーバ（１０３１）のレコードの停止フラグ（３０２６）をオンに設定（４００３）する。
【００４９】
続いて、キャッシュマネージャ（１０２１）は、近傍キャッシュ表（２０２２）のＰＢＲルータＩＰ列（３０１１）のうち、障害が発生した第１のキャッシュサーバ（１０３１）が関連する複数のＰＢＲルータＩＰを取り出してリストにし、このリストの１行目のＰＢＲルータ（１０５１）をＰＢＲルータＡとする（４００４）。次にキャッシュマネージャ（１０２１）はＰＢＲルータＡレコードの障害が発生した第１のキャッシュサーバ（１０３１）の停止フラグ（３０１４）をオンに設定し、割当フラグ（３０１５）をオフに設定する（４００５）。さらにキャッシュマネージャ（１０２１）はＰＢＲルータＡレコードのうち、障害が発生した第１のキャッシュサーバ（１０３１）以外で距離が最も小さくかつ停止フラグがオフである第２のキャッシュサーバＩＰを近傍キャッシュ表（２０２２）から取り出し、予備キャッシュサーバＢとする（４００６）。最後に、キャッシュマネージャ（１０２１）はＰＢＲルータＡ（１０５１）にアクセスし、コマンドライン経由でトラフィック転送先を予備キャッシュサーバＢ（第２のキャッシュサーバ１０３３）に変更する（４００７）。なお、ここではトラフィックの転送先のみを変更したが、ＰＢＲルータにはトラフィックの転送先だけでなく、転送するトラフィックの条件があらかじめ設定されているとする（図３Ｃ、図３Ｄ参照）。
【００５０】
ＰＢＲルータＡ（１０５１）の転送先変更が完了後、キャッシュマネージャ（１０２１）はＰＢＲルータＩＰ列（３０１１）のリストの２行目のＰＢＲルータ（１０５２）を取りだしＰＢＲルータＡとし（４００８）、キャッシュマネージャ（１０２１）はＰＢＲルータＡレコードの障害が発生した第１のキャッシュサーバ（１０３１）の停止フラグをオンに設定し、割当フラグをオフに設定する（４００９）。さらにキャッシュマネージャ（１０２１）は２行目のＰＢＲルータＡレコードのうち、障害が発生した第１のキャッシュサーバ（１０３１）以外で距離的に近くかつ停止フラグがオフであるキャッシュサーバＩＰを近傍キャッシュ表（２０２２）から取り出し、予備キャッシュサーバＢとする。ＰＢＲルータＩＰ列（３０１１）のリストの３行目のＰＢＲルータ（１０５３）についても、同様に取りだしてＰＢＲルータＡとし、以後、上記処理を続ける。
【００５１】
上記のように、本システムはキャッシュエージェント（１０３２、１０３４、−）が、自身が動作するキャッシュサーバ（１０３１、１０３３、−）の障害検出をトリガに各ＰＢＲルータのトラフィック転送先を障害が発生したキャッシュサーバに距離的に近い別のキャッシュサーバ、すなわち予備キャッシュサーバに自動変更する。なお、ここでは障害が発生したキャッシュサーバにトラフィックを転送していたＰＢＲルータ装置に距離的に近いキャッシュサーバを予備キャッシュサーバとして使用したが、キャッシュマネージャが保持する近傍キャッシュ表に各キャッシュサーバのＣＰＵ使用率やキャッシュシステム管理事業者が設定する各キャッシュサーバの優先度フラグを登録し、各ＰＢＲルータとキャッシュサーバ間の距離に加えて該情報を用いて予備キャッシュサーバを選択することも可能である。例えばＰＢＲルータからの距離が２０ｍｓ以下のキャッシュサーバのうちＣＰＵ使用率が一番低いキャッシュサーバを予備キャッシュサーバとして使う場合が考えられる。この場合、予備キャッシュサーバが過負荷になることを回避し予備キャッシュサーバの障害発生率を抑えることが期待できる。
【００５２】
また、キャッシュサーバ装置を設置するキャッシュシステム管理事業者が各キャッシュサーバの性能を考慮して優先度フラグを設定し、ＰＢＲルータ装置との距離と各キャッシュサーバのＣＰＵ使用率に加えて優先度フラグに基づいて予備キャッシュサーバを選択することも考えられる。優先度フラグについては、キャッシュサーバのＣＰＵ性能が高い、ＨＤＤやＳＤＤ容量が大きいキャッシュサーバを高性能なキャッシュサーバとして他のキャッシュサーバよりも優先して予備キャッシュサーバとして使うことを目的として登録することが考えられる。例えば、高性能なキャッシュサーバの優先度フラグをオンに設定し、優先度フラグがオンとなっているキャッシュサーバのうち、ＰＢＲルータとの距離が一番小さいかつＣＰＵ使用率が一番小さいキャッシュサーバを予備キャッシュサーバとして選択することが考えられる。なお、優先度フラグは、キャッシュサーバ追加時にキャッシュエージェントがキャッシュマネージャに対して通知する追加要求メッセージの中に優先度フラグを含めるとする。上記のように優先度フラグを選択基準の一つとして使う場合、高性能なキャッシュサーバを優先的に予備キャッシュサーバとして使うことができる。ここで高性能なキャッシュサーバ、すなわちＣＰＵ性能が高い場合はエンドユーザに対するレスポンス速度が高速であることが期待でき、ＨＤＤやＳＤＤ容量が大きい場合は多くのコンテンツを保持することができるためエンドユーザが要求してきたコンテンツに対するヒット率が高いことが期待できる。
【００５３】
あるいはまた、キャッシュマネージャが、ネットワーク上での各ＰＣからのサーバ装置へのアクセスランキング、換言するとコンテンツ等のサービスの人気ランキングに基づいて、各サーバ装置のキャッシュ状況を事前に把握し、そのようなサーバ装置に関係するキャッシュサーバの優先度を高く設定しておくことも考えられる。これにより、エンドユーザのキャッシュヒットヒット率を高めることかできる。
【００５４】
なお、キャッシュエージェント（１０３２、１０３４）がキャッシュサーバの障害検出後にキャッシュマネージャ（１０２１）に障害検出通知をおこなうには、キャッシュマネージャ（１０２１）のＩＰアドレスなどの識別情報をキャッシュエージェント（１０３２、１０３４、−）が保持している必要がある。ここでは、キャッシュエージェント（１０３２、１０３４）は起動した時点でキャッシュマネージャ（１０２１）のＩＰアドレスなどの識別情報を保持しているとした。
【００５５】
図１０に、キャッシュサーバ障害対応処理のうちキャッシュマネージャ（１０２１）のフローチャートを示す。キャッシュマネージャ（１０２１）は障害が発生したキャッシュサーバＣ（例えばキャッシュサーバ１０３１）についての障害対応処理開始（６００１）後、キャッシュサーバ一覧表に登録されている障害が発生したキャッシュサーバの停止フラグをオンに設定する（６００２）。その後近傍キャッシュ表のうち、障害が発生したキャッシュサーバＣが関連する複数のＰＢＲルータのＩＰアドレスを取り出し、ＰＢＲルータ配列を作成する（６００３）。続いて変数ＰＢＲルータＡにＰＢＲルータ配列の先頭をコピー（６００４）し、ＰＢＲルータ配列の先頭を削除（６００５）する。その後近傍キャッシュ表（２０２２）に登録されているＰＢＲルータＡレコードの障害が発生したキャッシュサーバＣの割当フラグがオンであるか否かを判断する（６００６）。割当フラグがオンでない場合は処理６０１７に移動する。割当フラグがオンである場合、変数ｎを１に設定（６００７）し、障害が発生したキャッシュサーバＣが第ｎキャッシュサーバとして登録されているか否かを判断する（６００８）。登録されていない場合は、変数ｎに１を加えて（６００９）手順６００８に戻る。登録されている場合は、第ｎ＋１キャッシュサーバの停止フラグがオンであるか否かを判断する（６０１１）。そして該停止フラグがオンである場合にはｎ＋１が近傍キャッシュ表（２０２２）のうち、各ＰＢＲルータに対して登録されているキャッシュサーバ数と同じであるかを判断（６０１２）する。
【００５６】
なお、図３Ａの近傍キャッシュ表（２０２２）の場合、各ＰＢＲルータに対して登録されているキャッシュサーバ数は３である。同じである場合はＰＢＲルータＡにｓｓｈ（Ｓｅｃｕｒｅ  Ｓｈｅｌｌ）コマンドなどによってアクセスしてＰＢＲ機能を無効化（６０１５）し、手順６０１７に移動する。なお、ここではＰＢＲルータにアクセスするためにｓｓｈコマンドを用いたが、同様の機能を持ったコマンドまたは手段があれば代用できる。同じでない場合は変数ｎに１を加えて（６０１０）手順６０１１に戻る。また、第ｎ＋１キャッシュサーバの停止フラグがオンでない場合は、変数予備キャッシュサーバＢにＰＢＲルータＡレコードの第ｎ＋１キャッシュサーバのＩＰアドレスを代入する（６０１３）。続いてＰＢＲルータＡにｓｓｈでアクセスし、ＰＢＲルータＡのトラフィック転送先を予備キャッシュサーバＢに変更する（６０１４）。続いて第ｎ＋１キャッシュサーバの割当フラグをオンに設定（６０１６）し、障害が発生したキャッシュサーバＣの停止フラグをオンに設定する（６０１７）。その後、ＰＢＲルータ配列に続きがあるか否かを判断（６０１８）し、続きがある場合には手順６００４に戻り、無い場合には処理を終了する（６０１９）。
【００５７】
図１１に、キャッシュサーバ障害対応処理のうち、キャッシュエージェント（１０３２、１０３４）の障害検出通知処理のフローチャートを示す。キャッシュエージェント（１０３２、１０３４）は障害検出通知処理を開始（７００１）後、キャッシュマネージャ（１０２１）に対して障害検出メッセージを送信（７００２）し処理を終了（７００３）する。ここで障害検出メッセージは本システムのキャッシュエージェント（１０３２、１０３４）による障害検出メッセージであることをキャッシュマネージャ（１０２１）が確認できる形式とし、メッセージ内に障害が発生したキャッシュサーバのＩＰアドレスを含むとする。なお、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータの転送先を変更することがキャッシュマネージャ（１０２１）に伝わるメッセージであれば、障害検出メッセージの形式は任意とする。
【００５８】
また、キャッシュエージェント（１０３２、１０３４）がキャッシュサーバの復旧を検出した場合には、キャッシュエージェント（１０３２、１０３４）がキャッシュマネージャ（１０２１）に対してキャッシュサーバ復旧検出通知をおこなう。復旧検出メッセージの形式は任意であるが、本システムのキャッシュエージェント（１０３２、１０３４）による復旧検出メッセージであることをキャッシュマネージャ（１０２１）が確認できる形式とし、メッセージ内に復旧したキャッシュサーバのＩＰアドレスを含むとする。
【００５９】
ここまでの処理で本システムにおいて障害が発生したキャッシュサーバの障害対応処理をおこなうことができる。なお、障害が発生したキャッシュサーバに距離的に近いキャッシュサーバを予備キャッシュサーバとして使うことで、エンドユーザからのリクエストに対するレスポンス速度を劣化させないという利点がある。
【００６０】
続いて障害が発生して停止していたキャッシュサーバが本システムに復旧した場合の処理について記す。
【００６１】
図１２に、本システムに障害が発生して停止していたキャッシュサーバが復旧した場合の処理のシーケンスを示す。本処理は、キャッシュマネージャ（１０２１）と復旧したキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）の間で執り行われる。まず復旧したキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）がキャッシュマネージャ（１０２１）に対しキャッシュサーバ復旧通知（８００１）を出す。続いてキャッシュマネージャ（１０２１）はキャッシュサーバ一覧表のうち、復旧したキャッシュサーバ（１０３１）の停止フラグをオフに設定する（８００２）。
続いてキャッシュマネージャ（１０２１）は近傍キャッシュ表（２０２２）のＰＢＲルータＩＰ列（３０１１）のうち、復旧したキャッシュサーバ（１０３１）が関連する複数のＰＢＲルータＩＰを取り出してリストにし、リストの１行目のＰＢＲルータをＰＢＲルータＡとする（８００３）。次にキャッシュマネージャ（１０２１）はＰＢＲルータＡレコードの復旧したキャッシュサーバ（１０３１）の停止フラグ（３０１４、３０１８、３０２２）をオフに設定し、割当フラグ（３０１５、３０１９、３０２３）をオンに設定する（８００４）。さらにキャッシュマネージャ（１０２１）はＰＢＲルータＡにアクセスし、コマンドライン経由で転送するトラフィック転送先を復旧したキャッシュサーバに設定する（８００５）。
ＰＢＲルータＡの転送先変更が完了後、キャッシュマネージャ（１０２１）はリストの２行目のＰＢＲルータを取りだしＰＢＲルータＡとし（８００６）、キャッシュマネージャ（１０２１）はＰＢＲルータＡレコードの復旧したキャッシュサーバ（１０３１）の停止フラグ（３０１４、３０１８、３０２２）をオンに設定し、割当フラグ（３０１５、３０１９、３０２３）をオフに設定する（８００７）。さらにキャッシュマネージャ（１０２１）はＰＢＲルータＡにアクセスし、コマンドライン経由で転送するトラフィック転送先を復旧したキャッシュサーバに設定する（８００８）。以後、リストの残りについても上記処理を続ける。
【００６２】
図１３に、キャッシュサーバ復旧対応処理のうちキャッシュマネージャ（１０２１）による処理のフローチャートを示す。キャッシュマネージャ（１０２１）は復旧したキャッシュサーバＣ（１０３１）についての復旧対応処理開始（９００１）後、キャッシュサーバ一覧表に登録されている復旧したキャッシュサーバの停止フラグをオフに設定する（９００２）。その後近傍キャッシュ表のうち、復旧したキャッシュサーバＣが関連する複数のＰＢＲルータのＩＰアドレスを取り出し、ＰＢＲルータ配列を作成する（９００３）。続いて変数ＰＢＲルータＡにＰＢＲルータ配列の先頭をコピー（９００４）し、ＰＢＲルータ配列の先頭を削除（９００５）する。その後、変数ｎを１に設定する（９００６）。続いて近傍キャッシュ表（２０２２）に登録されているＰＢＲルータＡレコードのうち、復旧したキャッシュサーバＣが第ｎキャッシュサーバとして登録されているか否かを判断する（９００７）。登録されていない場合、変数ｎに１を加えて（９００８）手順９００７に戻る。登録されている場合は、第ｎ＋１キャッシュサーバの割当フラグがオンであるか否かを判断する（９００９）。割当フラグがオンでない場合は手順９０１２に進む。割当フラグがオンである場合はＰＢＲルータＡにｓｓｈでアクセスし、ＰＢＲルータＡのトラフィック転送先を復旧したキャッシュサーバＣに変更する（９０１０）。続いて第ｎ＋１キャッシュサーバの割当フラグをオフに設定し、第ｎキャッシュサーバの割当フラグをオンに設定する（９０１１）。続いて復旧キャッシュサーバＣの停止フラグをオフに設定する（９０１２）。最後にＰＢＲルータ配列に続きがあるか否かを判断（９０１３）し、続きがある場合は処理９００４に戻り、続きが無い場合は処理を終了（９０１４）する。
【００６３】
ここまでの処理で本システムに復旧したキャッシュサーバの復旧対応処理をおこなうことができる。
【００６４】
続いて本システムに新たなキャッシュサーバを追加する場合の処理について記す。  
図１４Ａは、キャッシュサーバ追加要求処理のフローチャートである。キャッシュエージェント（１０３２、１０３４、−）はキャッシュサーバ追加要求処理開始（１４００１）後、キャッシュマネージャ（１０２１）に追加要求メッセージを送信（１４００２）し、処理を終了（１４００３）する。ここで追加要求メッセージは本システムのキャッシュマネージャ（１０２１）がキャッシュエージェント（１０３２、１０３４）による追加要求メッセージであることを確認できる形式とし、メッセージ内に追加するキャッシュサーバのＩＰアドレスを含むとする。なお、新しく追加するキャッシュサーバをキャッシュサーバ一覧表（２０２３）に登録することを要求する旨がキャッシュマネージャ（１０２１）に伝わるメッセージであれば、追加要求メッセージの形式は任意とする。
【００６５】
図１４Ｂは、距離測定処理のフローチャートである。キャッシュエージェント（１０３２、１０３４）はＰＢＲルータＸとの距離測定処理開始（１４００４）後、ＰＢＲルータＸにｐｉｎｇを発行（１４００５）して距離を測定する。すなわち、Pingにより、リプライが返ってくるまでの時間から対象ノード間のラウンドトリップタイムを求める。その後測定結果をキャッシュマネージャ（１０２１）に返し（１４００６）、処理を終了（１４００７）する。
【００６６】
ここで、図１４Ｂの手順１４００５の具体例を、図１５に示す。図１５では、ａａａ.ｅｘａｍｐｌｅ.ｃｏｍ ［ａ１.ａ２.ａ３.ａ４］からｚｚｚ.ｅｘａｍｐｌｅ.ｃｏｍ ［ｚ１.ｚ２.ｚ３.ｚ４］にｐｉｎｇを発行した例である。ｐｉｎｇの結果、距離の４回平均が１１ｍｓであることが判る。この結果から、距離として１１ｍｓが得られる。なお、ここでは距離を測定する手段として広く用いられているｐｉｎｇプログラムを用いたが、同様の機能を持った別のプログラムを用いてもいい。
【００６７】
以上によって、本システムに新たにキャッシュサーバを追加することができる。続いて、本システムからキャッシュサーバを削除する場合の例について説明する。
【００６８】
図１６に、本システムにキャッシュサーバを削除するキャッシュサーバ削除処理のシーケンスを示す。例えば、図１の例において、キャッシュサーバ（１０３１、１０３３、１０３７）が存在する既存のシステムから第４のキャッシュサーバ（１０３７）を削除することを想定する。
【００６９】
本処理は、キャッシュマネージャ（１０２１）と全てのキャッシュエージェント（１０３２、１０３４、１０３８）の間で執り行われる。まずこれから削除する第４のキャッシュサーバ（１０３７）上で動作するキャッシュエージェント（１０３８）が、キャッシュマネージャ（１０２１）に対しキャッシュサーバ削除要求（１６００１）を出す。続いてキャッシュマネージャ（１０２１）は削除するキャッシュサーバ（１０３７）に関するレコードをキャッシュサーバ一覧表（２０２３）から削除しキャッシュサーバ一覧表を更新（１６００２）する。次にキャッシュマネージャ（１０２１）は近傍キャッシュ表（２０２２）内のこれから削除するキャッシュサーバ（１０３７）に関する複数の行を取り出してリストを作成し、リストの１行目のＰＢＲルータを取りだしＰＢＲルータＡとする（１６００３）。続いてキャッシュマネージャ（１０２１）はこれから削除する第４のキャッシュサーバ（１０３７）以外のキャッシュサーバ（１０３１、１０３３）のキャッシュエージェント（１０３２、１０３４）にＰＢＲルータＡとの距離測定指示（１６００４）を出す。その後キャッシュマネージャ（１０２１）はキャッシュエージェント（１０３２、１０３４）から距離測定結果を受け取り（１６００５）、距離測定結果を用いて近傍キャッシュ表を更新する（１６００６）。続いてキャッシュマネージャ（１０２１）はＰＢＲルータＡにルールを設定する（１６００７）。以後、リストの残りに対しても手順１６００４から手順１６００７を繰り返しおこなう。
【００７０】
図１７に、図１６のキャッシュサーバ削除処理のうち、キャッシュマネージャ（１０２１）の処理部分のフローチャートを示す。キャッシュマネージャ（１０２１）はキャッシュサーバＣ（１０３７）の削除処理開始（１７００１）後、キャッシュサーバＣのＩＰアドレスをキャッシュサーバ一覧表（２０２３）から削除しキャッシュサーバ一覧表を更新する（１７００２）。続いてキャッシュマネージャ（１０２１）は近傍キャッシュ表（２０２２）からキャッシュサーバＣ（１０３７）を含む全レコードのＰＢＲルータＩＰアドレス列（２０４１）を取りだしＰＢＲルータ配列を作る（１７００３）。続いてキャッシュマネージャ（１０２１）は変数ＰＢＲルータＡにＰＢＲルータ配列の先頭をコピー（１７００４）し、ＰＢＲルータ配列の先頭を削除（１７００５）する。その後キャッシュマネージャ（１０２１）はＰＢＲルータＡとキャッシュサーバＣ以外の全キャッシュエージェント（１０３２、１０３４）について近傍キャッシュ表更新処理（１７００６）をおこない、ＰＢＲルータＡのルール設定処理（１７００７）をおこなう。続いてキャッシュマネージャ（１０２１）はＰＢＲルータ配列に続きがあるか判断（１７００８）し、あれば手順１７００４に戻り、なければ処理を終了（１７００９）する。
【００７１】
ここまでの処理で本システムからキャッシュサーバを削除することができる。続いて本システムのＰＢＲルータに設定されたルールを更新する場合の処理について記す。
【００７２】
図１８に、全ＰＢＲルータのルールを更新するためのルール更新処理のシーケンスを示す。ルール更新処理は、図７のキャッシュサーバ追加処理のうちのキャッシュサーバ一覧表更新処理以降の処理（１３００３〜１３００９）を実行することで実現できる。まずキャッシュマネージャ（１０２１）は近傍キャッシュ表（２０２２）のＰＢＲルータＩＰ列（２０４１）から全てのＰＢＲルータＩＰを取り出してリストにし、リストの１行目のＰＢＲルータをＰＢＲルータＡとし（１８００１）、全キャッシュエージェント（１０３２、１０３４、−）にＰＢＲルータＡとの距離測定指示（１８００２）を出す。その後、キャッシュマネージャ（１０２１）はキャッシュエージェント（１０３２、１０３４、−）から距離測定結果を受け取り（１８００３）、その結果を基に近傍キャッシュ表を更新する（１８００４）。その後、キャッシュマネージャ（１０２１）はＰＢＲルータＡにルールを設定（１８００５）する。以後、リストの残りについても上記処理を続ける。
【００７３】
図１９に、図１８のルール更新処理のうちキャッシュマネージャ（１０２１）の処理部分のフローチャートを示す。キャッシュマネージャ（１０２１）はルール更新処理開始（１９００１）後、近傍キャッシュ表（２０２２）から全レコードのＰＢＲルータＩＰアドレス列（２０４１）を取りだしＰＢＲルータ配列を作る（１９００２）。続いて変数ＰＢＲルータＡにＰＢＲルータ配列の先頭をコピー（１９００３）し、ＰＢＲルータ配列の先頭を削除（１９００４）する。その後キャッシュマネージャ（１０２１）はＰＢＲルータＡと全キャッシュサーバ（１０３１、１０３３、−）上で動作するキャッシュエージェント（１０３２、１０３４、−）について近傍キャッシュ表更新処理（１９００５）をおこない、次にＰＢＲルータＡのルール設定処理（１９００６）をおこなう。続いてキャッシュマネージャ（１０２１）はＰＢＲルータ配列に続きがあるか判断（１９００７）し、あれば手順１９００３に戻り、なければ処理を終了（１９００８）する。なお、ルール更新処理を実行するトリガとしてはいくつかのバリエーションが考えられる。例えば、各キャッシュエージェント（１０３２、１０３４、−）がネットワーク構成の監視を行い、ネットワーク構成が変化したことを検出した場合にキャッシュエージェント（１０３２、１０３４）がキャッシュマネージャ（１０２１）に対してネットワーク構成変化検出通知を行う。この通知をトリガにキャッシュマネージャ（１０２１）がルール更新を行うことが考えられる。
【００７４】
キャッシュエージェント（１０３２、１０３４、−）のネットワーク構成変化検出処理のフローチャートは、図２０のようになる。
【００７５】
図２０は、キャッシュエージェント（１０３２、１０３４、−）のネットワーク構成変化検出処理のフローチャートである。まずキャッシュエージェント（１０３２、１０３４、−）はネットワーク構成変化検出処理開始（２０００１）後、キャッシュサーバ一覧表（２０２３）からキャッシュサーバＩＰ列を取り出しキャッシュサーバ配列を作る（２０００２）。続いて変更キャッシュサーバＣ（例えばキャッシュサーバ１０３７）にキャッシュサーバ配列の先頭ＩＰアドレスを代入する（２０００３）。続いてキャッシュサーバ配列の先頭を削除する（２０００４）。その後キャッシュサーバＣに対してｔｒａｃｅｒｏｕｔｅを実行する（２０００５）。この”traceroute”コマンドにより、ネットワーク経路をリスト表示させる。続いてｔｒａｃｅｒｏｕｔｅの結果得た経路が、経路リストに登録された経路と一致するか否かを判定する（２０００６）。一致しない場合は、得た経路を経路リストに新しく登録（２０００７）し、キャッシュマネージャ（１０２１）に対してネットワーク構成変化検出通知（２０００８）を行う。一致する場合はキャッシュサーバ配列に続きがあるか否かを判定（２０００９）し、続きがある場合は手順２０００３に戻り、ない場合は処理を終了（２００１０）する。なお、ここでは経路を取得する手段として広く用いられているtracerouteプログラムを用いたが、同様の機能を持った別のプログラムを用いてもいい。
【００７６】
他にネットワーク構成の変化検出方法として既存の障害検出システム（例えばhttp://h50146.www5.hp.com/products/software/oe/hpux/component/ha/serviceguard_A_11_20.htmlに記載の障害検出システム）を利用し、該システムのアラートによって検出する方法がある。なお、他の既存の障害検出装置や障害検出方法など、障害やネットワーク構成の変化を検出するものであれば代用できる。
【００７７】
最後に、これまでに説明した個々の処理手順を統合して、キャッシュマネージャ（１０２１）の動作を図２１に、キャッシュエージェント（１０３２、１０３４、−）の動作を図２２に示す。
【００７８】
図２１は、キャッシュマネージャの動作フローチャートである。キャッシュマネージャ（１０２１）は起動（２１００１）後、近傍キャッシュ表（２０２２）にＰＢＲルータのＩＰアドレスを登録（２１００２）する。これは初期値として与えるＰＢＲルータＩＰアドレスの一覧であり、ここでは人手で入力する。他にも設定ファイルに書くといった方法が考えられる。続いてキャッシュマネージャモジュール（２０２１）を起動（２１００３）し、これ以降は処理依頼を待ちうける。キャッシュサーバ追加要求があった場合（２１００４）は、図７のキャッシュサーバ追加処理を実行（２１００５）する。また、キャッシュサーバ削除要求があった場合（２１００６）は、図１７のキャッシュサーバ削除処理を実行（２１００７）する。また、キャッシュエージェント（１０３２、１０３４、−）から障害検出通知があった場合（２１００８）は、図１０のキャッシュサーバ障害対応処理を実行（２１００９）する。ここで障害とは装置の故障などのほかに、ネットワーク構成の変化なども含むものとし、これらを検出することを障害の検出とする。
【００７９】
本実施例では、キャッシュエージェント（１０３２、１０３４、−）がキャッシュサーバの障害を検出するとしたが、キャッシュマネージャ（１０２１）からキャッシュサーバ（１０３２、１０３４、−）に対してｐｉｎｇコマンドを定期的に実行し、ｐｉｎｇコマンドに対するキャッシュサーバ（１０３２、１０３４、−）からの応答が無い場合を障害として検出することも可能である。なお、ここではキャッシュマネージャ（１０２１）がキャッシュサーバ（１０３２、１０３４、−）の生存確認をおこなうためにｐｉｎｇコマンドを用いたが、キャッシュマネージャ（１０２１）がキャッシュサーバ（１０３２、１０３４、−）の生存確認をおこなえる手段であれば代用できる。キャッシュエージェント（１０３２、１０３４、−）からキャッシュサーバの復旧通知があった場合（２１０１０）は、図１３のキャッシュサーバ復旧対応処理を実行（２１０１１）する。また、ルール更新トリガイベントが発生した場合（２１０１２）は図１９のルール更新処理を実行（２１０１３）する。
【００８０】
図２２は、キャッシュエージェント（１０３２、１０３４、−）の動作フローチャートである。キャッシュエージェントは起動（２２００１）後、キャッシュエージェントモジュールを起動（２２００２）し、キャッシュマネージャ（１０２１）にキャッシュサーバ追加要求（２２００３）をおこなう。これ以降は処理の依頼を待ちうける。距離測定依頼があった場合（２２００４）は、図１４ＢのＰＢＲルータＸとの距離測定処理を実行（２２００５）する。また、自身が動作するキャッシュサーバの障害を検出した場合（２２００６）は、図１１の障害検出通知処理を実行（２２００７）する。この待ち受け中に管理者から明示的に終了指示があった場合（２２００６）はキャッシュマネージャ（１０２１）にキャッシュサーバ削除要求を出し（２２００７）、キャッシュエージェント（１０３２、１０３４）を停止（２２００８）する。
【００８１】
以上によって、キャッシュサーバ障害対応処理、キャッシュサーバ復旧対応処理、キャッシュサーバ追加処理、キャッシュサーバ削除処理、ルール更新処理をおこなうことができる。
【００８２】
以上の処理手順を実装したキャッシュマネージャ（１０２１）とキャッシュエージェント（１０３２、１０３４、−）を用いて図１の構成を取ることで、キャッシュサーバの障害発生時に障害が発生したキャッシュサーバに距離的に近い別のキャッシュサーバにエンドユーザのトラフィックを転送することができ、エンドユーザは継続してキャッシュサーバを利用することができる。さらにキャッシュエージェント（１０３２、１０３４、−）がキャッシュサーバの障害検出通知をトリガにＰＢＲルータのトラフィック転送先の変更処理を自動処理することができる。
【００８３】
本実施例の適用例として、自動障害対応キャッシュシステムは、１台のキャッシュマネージャと、数千台のＰＢＲルータと、１００台乃至１０００台程度のキャッシュサーバとで構成される。すなわち、本実施例を例えば特許文献１に記載の従来方式と比較すると、本実施例では１台のキャッシュマネージャをシステム上に新たに設ける必要がある。しかし、従来は現用キャッシュサーバと固定的な関係にある予備キャッシュサーバの台数の関係が、１対１もしくは１対複数（１桁）と多く設ける必要があるのに対し、本実施例では予備キャッシュサーバを動的に管理するので、このような制約が無くなり、ネットワーク上にキャッシュサーバが多数ある場合でも、１台のキャッシュマネージャで全てのキャッシュサーバを有効に利用できる。すなわち、本実施例によれば、キャッシュサーバの予備キャッシュサーバやロードバランサをあらかじめ用意せず、データベースを用いてキャッシュサーバとその予備キャッシュサーバの関係を動的に管理し、障害が発生したキャッシュサーバにトラフィックを転送しているＰＢＲルータに距離的に近いキャッシュサーバをデータベースから抽出し、予備キャッシュサーバとして使うことができる。
【００８４】
ネットワーク上に例えば１０００台のキャッシュサーバがあれば、それらの各々を他のキャッシュサーバの予備キャッシュサーバとして機能させることができる。  
これにより、あるキャッシュサーバに障害が発生した時でも、エンドユーザは他のキャッシュサーバを継続して利用でき、エンドユーザに対するＳＬＡを保証できる。しかも、キャッシュサーバに対して固定的な関係にある予備キャッシュサーバやロードバランサが不要になるので、キャッシュシステム管理事業者が負担する設備コストの削減や、メンテナンスに伴う運用コストの削減に貢献できる。
【実施例２】
【００８５】
本実施例は実施例１のバリエーションであり、実施例１においてキャッシュマネージャ装置が行っていたキャッシュサーバの障害対応処理、キャッシュサーバ復旧対応処理、キャッシュサーバ追加処理、キャッシュサーバ削除処理、ルール更新処理を複数あるキャッシュエージェントのうちのひとつのキャッシュエージェントが代表して行う場合の例を説明する。なお、キャッシュエージェントはキャッシュサーバ上で動作するとする。この場合、キャッシュマネージャ装置は上記処理を行う代表キャッシュエージェントを選択する装置として動作するという特徴がある。そこで本実施例では上記の特徴に合わせてキャッシュマネージャ、キャッシュエージェントそれぞれの構成とキャッシュマネージャとキャッシュエージェントの動作に変更を加えている。なお、本実施例のその他の構成は実施例１の図１と同じである。
【００８６】
図２３Ａ、図２３Ｂに、本実施例のキャッシュマネージャ（１０２１）とキャッシュサーバの詳細構成を示す。図２３Ａにおいて、キャッシュマネージャ（１０２１）はＣＰＵ（２３０１１）、主記憶（２３０１２）、二次記憶（２３０１３）を含む。主記憶（２３０１２）にはキャッシュマネージャモジュール（２３０２１）とキャッシュサーバ一覧表（２３０２２）がある。キャッシュマネージャモジュール（２３０２１）はキャッシュマネージャ（１０２１）をコントロールするプログラムの実行時イメージである。キャッシュマネージャモジュール（２３０２１）の動作の詳細は後述する。またキャッシュサーバ一覧表（２３０２２）はネットワーク上に存在するキャッシュサーバの一覧である。
【００８７】
図２３Ｂにおいて、キャッシュサーバ（１０３１、１０３３、−）はＣＰＵ（２３０４１）、主記憶（２３０４２）、二次記憶（２３０４３）を含む。主記憶（２３０４２）にはキャッシュエージェントモジュール（２３０５１）とキャッシュ管理モジュール（２３０５２）と近傍キャッシュ表（２３０５３）がある。キャッシュエージェントモジュール（２３０５１）はキャッシュエージェント（１０３２、１０３４、−）をコントロールするプログラムの実行時イメージである。キャッシュエージェントモジュール（２３０５１）の動作の詳細は後述する。キャッシュ管理モジュール（２３０５２）はコンテンツのキャッシュや配信をおこなうプログラムの実行時イメージである。二次記憶（２３０４３）にはキャッシュエージェントモジュールプログラム（２３０６１）とキャッシュ管理モジュールプログラム（２３０６２）とキャッシュ管理領域（２３０６３）が含まれる。キャッシュエージェント（１０３２、１０３４）動作時にはキャッシュエージェントモジュールプログラム（２３０６１）を主記憶（２３０４２）上に展開し、キャッシュエージェントモジュール（２３０５１）として実行する。キャッシュサーバ（１０３１、１０３３、−）の動作時にはキャッシュ管理モジュールプログラム（２３０６２）を主記憶（２３０４２）上に展開し、キャッシュ管理モジュール（２３０５２）として実行する。本実施例では、キャッシュ管理モジュールプログラム（２３０６２）は汎用のものを利用する。キャッシュ管理領域（２３０６３）はキャッシュ管理モジュール（２３０５２）が管理する領域であり、コンテンツをキャッシュする領域である。近傍キャッシュ表（２３０５３）は実施例１の図３と同じものを用いる。
【００８８】
図２４に、キャッシュサーバ一覧表の詳細を示す。キャッシュサーバ一覧表（２３０２２）には通し番号であるＩＤ列（２４０１１）とキャッシュサーバの識別情報であるキャッシュサーバＩＰアドレス列（２４０１２）と各キャッシュサーバが停止中であるか否かを表す停止フラグ列（２４０１３）と代表キャッシュエージェントであるか否かを表す代表キャッシュエージェントフラグ列（２４０１４）がある。ここで、キャッシュサーバの識別情報であるＩＰアドレスはキャッシュサーバ装置固有のものである。停止フラグについては実施例１のキャッシュサーバ一覧表（２０２３）と同じである。また、キャッシュサーバ上で動作するキャッシュエージェント（１０３２、１０３４、−）のいずれかが代表キャッシュエージェントである場合には代表キャッシュエージェントフラグをオンとして１を設定し、代表キャッシュエージェントでない場合は代表キャッシュエージェントフラグをオフとして０を設定する。また、キャッシュサーバ一覧表（２３０２２）の主キーはＩＤ列（２４０１１）であり、ＩＤ列を用いて特定の１行を限定する事ができる。また、キャッシュサーバＩＰアドレス列（２４０１２）もユニーク列であり、キャッシュサーバＩＰアドレス列を用いて特定の１行を限定する事ができる。二次記憶（２３０１３）にはキャッシュマネージャモジュールプログラム（２３０３１）が含まれる。キャッシュマネージャ（１０２１）動作時にはキャッシュマネージャモジュールプログラム（２３０３１）を主記憶（２３０１２）上に展開し、キャッシュマネージャモジュール（２３０２１）として実行する。
【００８９】
次に、本実施例の動作について、説明する。  
図２５は、本システムにおいてＣａｃｈｅ  Ａｇｎｅｔ（１０３２、１０３４、−）がキャッシュサーバの障害を検出した場合のキャッシュサーバ障害対応処理シーケンスを示す。ここでは、図１のシステム構成において、キャッシュサーバ（１０３１）に障害が発生し、キャッシュエージェント（１０３４）が代表キャッシュエージェントとして機能する場合の例を説明する。本処理は障害が発生したキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）とキャッシュマネージャ（１０２１）とこのキャッシュマネージャが選択した代表キャッシュエージェント（１０３４）の間で執り行われる。まず障害が発生したキャッシュサーバ（１０３１）上で動作するキャッシュエージェント（１０３２）がキャッシュマネージャ（１０２１）に対して障害検出通知（２５１０１）を出す。続いてキャッシュマネージャ（１０２１）は、キャッシュサーバ一覧表（２３０２２）に登録されている障害が発生したキャッシュサーバ（１０３１）レコードの停止フラグをオンに設定する（２５１０２）。続いてキャッシュマネージャ（１０２１）はキャッシュサーバ一覧表（２３０２２）の代表キャッシュエージェントフラグがオンであるキャッシュサーバのＩＰアドレスを取得し、代表キャッシュエージェント（１０３４）にキャッシュサーバ一覧表を送付（２５１０３）する。続いてキャッシュマネージャ（１０２１）は代表キャッシュエージェント（１０３４）のＩＰアドレスを障害検出通知を行ってきたキャッシュエージェント（１０３２）に通知する（２５１０４）。続いてキャッシュエージェント（１０３２）は、キャッシュマネージャ（１０２１）から通知された代表キャッシュエージェント（１０３４）に対して障害検出通知を行う（２５１０５）。続いて代表キャッシュエージェント（１０３４）は、近傍キャッシュ表（２０２２）のＰＢＲルータＩＰ列（３０１１）のうち、障害が発生したキャッシュサーバ（１０３１）が関連する複数のＰＢＲルータＩＰを取り出してリストにし、リストの１行目のＰＢＲルータをＰＢＲルータＡとする（２５１０６）。次に代表キャッシュエージェント（１０３４）はＰＢＲルータＡレコードの障害が発生したキャッシュサーバ（１０３１）の停止フラグをオンに設定し、割当フラグをオフに設定する（２５１０７）。さらに代表キャッシュエージェント（１０３４）はＰＢＲルータＡレコードのうち、障害が発生したキャッシュサーバ以外で距離が最も小さくかつ停止フラグがオフであるキャッシュサーバＩＰを近傍キャッシュ表（２０２２）から取り出し、予備キャッシュサーバＢとする（２５１０８）。最後に、代表キャッシュエージェント（１０３４）はＰＢＲルータＡにアクセスし、コマンドライン経由で転送するトラフィック転送先を予備キャッシュサーバＢに変更する（２５１０９）。以後、リストの残りについても上記処理を続ける。最後に代表キャッシュエージェント（１０３４）は自身が持つ近傍キャッシュ表を全てのキャッシュエージェント（１０３６、１０３２）に配布（２５１１０）し、処理完了通知をキャッシュマネージャ（１０２１）に送る（２５１１１）。
【００９０】
上記のように、本システムは、キャッシュマネージャ（１０２１）が、複数あるキャッシュエージェント（１０３２、１０３４、−）の中から代表キャッシュエージェントを一つ選択し、代表キャッシュエージェントがキャッシュサーバの障害対応処理を行う。なお、代表キャッシュエージェントが行うキャッシュサーバ障害対応処理、キャッシュサーバ復旧対応処理、キャッシュサーバ追加処理、キャッシュサーバ削除処理、ルール更新処理は実施例１のキャッシュマネージャ（１０２１）と同じであり、フローチャートも同じである。ただし、代表キャッシュエージェントは処理完了後に自身以外の全てのキャッシュエージェントに近傍キャッシュ表を配布し、処理完了通知をキャッシュマネージャに対して行う必要がある点のみ実施例１と異なる。なお、本実施例ではキャッシュマネージャ装置を設置したが、キャッシュマネージャを一つの装置として設置せず、例えばＤＮＳサーバに代表キャッシュエージェントを選択させることでも実施できる。
【００９１】
図２６は、キャッシュマネージャの全体動作のフローチャートである。キャッシュマネージャ（１０２１）は起動（２６００１）後、キャッシュマネージャモジュール（２３０２１）を起動（２６００２）し、これ以降は処理依頼を待ちうける。キャッシュサーバ追加要求があった場合（２６００３）、実施例１の図６Ａのキャッシュサーバ一覧表更新処理を実行（２６００４）する。その後キャッシュマネージャ（１０２１）はキャッシュサーバ一覧表から代表キャッシュエージェントフラグがオンであるキャッシュエージェントのＩＰアドレスを取得（２６００５）し、代表キャッシュエージェント（１０３４）に対してキャッシュサーバ一覧表を送付する（２６００６）。続いてキャッシュサーバ追加要求または削除要求してきたキャッシュエージェントに対して代表キャッシュエージェントのＩＰアドレスを通知（２６００７）する。キャッシュサーバ追加要求または削除要求以外の処理要求があった場合（２６００９）は、代表キャッシュエージェントからの処理完了通知があるか否かを判定する（２６０１０）。処理完了通知であった場合は、キャッシュマネージャ（１０２１）はキャッシュサーバ一覧表の代表キャッシュエージェントフラグをオフに設定する（２６０１１）。その後、代表キャッシュエージェントのＩＤを変数ｎに代入（２６０１２）し、ＩＤがｎ＋１であるキャッシュエージェントの停止フラグがオフであるか否かを判定する（２６０１３）。オフである場合にはＩＤがｎ＋１であるキャッシュエージェントの代表キャッシュエージェントフラグをオンに設定する（２６０１４）。オフでない場合はｎに１を加えて（２６０１５）手順２６０１３に戻る。
【００９２】
図２７は、キャッシュエージェントの全体動作のフローチャートである。キャッシュエージェント（１０３２、１０３４、−）は起動（２７００１）後、近傍キャッシュ表（２０２２）にＰＢＲルータのＩＰアドレスを登録（２７００２）する。これは初期値として与えるＰＢＲルータＩＰアドレスの一覧であり、ここでは人手で入力する。他にも設定ファイルに書くといった方法が考えられる。続いてキャッシュエージェントモジュール（２３０２１）を起動（２７００３）し、キャッシュマネージャ（１０２１）に対してキャッシュサーバ追加要求をおこなう（２７００４）。これ以降は処理依頼を待ちうける。距離測定依頼があった場合（２７００５）は実施例１の図１４（Ｂ）の距離測定処理を行う（２７００６）。キャッシュサーバの障害を検出通知した場合（２７００７）は、実施例１の図１１の障害検出通知処理を行い（２７００８）、キャッシュサーバを停止（２７０１１）する。管理者から明示的に終了指示があった場合（２７００９）はキャッシュマネージャ（１０２１）にキャッシュサーバ削除要求を出し（２７０１０）、キャッシュサーバを停止（２７０１１）する。自身以外のキャッシュエージェントからキャッシュサーバ追加要求があった場合（２７０１２）は、実施例１の図７のキャッシュサーバ追加処理を行う（２７０１３）。処理が完了後、自身以外の全てキャッシュエージェントに対して近傍キャッシュ表を配布し（２７０１８）、キャッシュマネージャ（１０２１）に処理完了通知を行う（２７０１９）。その後手順２７００５に戻る。また、自身以外のキャッシュエージェントからキャッシュサーバ削除要求があった場合（２７０１４）は、実施例１の図１７のキャッシュサーバ削除処理を行う（２７０１５）。処理が完了後、自身以外の全てキャッシュエージェントに対して近傍キャッシュ表を配布し（２７０１８）、キャッシュマネージャ（１０２１）に処理完了通知を行う（２７０１９）。その後手順２７００５に戻る。さらに自身以外のキャッシュエージェントからキャッシュサーバ障害検出通知があった場合（２７０１６）は、実施例１の図１０のキャッシュサーバ障害対応処理を行う（２７０１７）。処理が完了後、自身以外の全てキャッシュエージェントに対して近傍キャッシュ表を配布し（２７０１８）、キャッシュマネージャ（１０２１）に処理完了通知を行う（２７０１９）。その後手順２７００５に戻る。
【００９３】
上記のように、本実施例ではキャッシュマネージャ（１０２１）が、複数あるキャッシュエージェント（１０３２、１０３４、−）の中から代表キャッシュエージェントを一つ選択し、代表キャッシュエージェントがキャッシュサーバの障害対応処理を行う。なお、代表キャッシュエージェントは実施例１のキャッシュマネージャ（１０２１）と同じ動作をするため、キャッシュサーバ障害対応処理、復旧対応処理、追加処理、削除処理、ルール更新処理のフローチャートは実施例１と同じである。ただし、代表キャッシュエージェントは処理完了後に自身以外の全てのキャッシュエージェントに近傍キャッシュ表を配布し、処理完了通知をキャッシュマネージャに対して行う必要がある点が実施例１と異なる。
【００９４】
本実施例においても、あるキャッシュサーバに障害が発生した時でも、エンドユーザは他のキャッシュサーバを継続して利用でき、エンドユーザに対するＳＬＡを保証できると共に、キャッシュシステム管理事業者が負担する設備コストや運用コストの削減にも貢献できる。
【符号の説明】
【００９５】
１０１１…ネットワーク、１０２１…キャッシュマネージャ、１０３１、１０３３、１０３５…キャッシュサーバ、１０３２、１０３４、１０３６…キャッシュエージェント、１０４１〜１０４３…ルータ、１０５１〜１０５３…ＰＢＲ（Ｐｏｌｉｃｙ Ｂａｓｅｄ Ｒｏｕｔｉｎｇ）ルータ、１０６１〜１０６４…ＰＣ、２０１１…ＣＰＵ、２０１２…主記憶、２０１３…二次記憶、２０２１…キャッシュマネージャモジュール、２０２２…近傍キャッシュ表、２０２３…キャッシュサーバ一覧表、２０４１…ＣＰＵ、２０４２…主記憶、２０４３…二次記憶、２０５１…キャッシュエージェントモジュール、２０５２…キャッシュ管理モジュール、２０６１…キャッシュエージェントモジュールプログラム、２０６２…キャッシュ管理モジュールプログラム、２０６３…キャッシュ管理領域。
【図１】
2014112768.tif 000003
【図２Ａ】
2014112768.tif 000004
【図２Ｂ】
2014112768.tif 000005
【図３Ａ】
2014112768.tif 000006
【図３Ｂ】
2014112768.tif 000007
【図３Ｃ】
2014112768.tif 000008
【図３Ｄ】
2014112768.tif 000009
【図４】
2014112768.tif 000010
【図５】
2014112768.tif 000011
【図６Ａ】
2014112768.tif 000012
【図６Ｂ】
2014112768.tif 000013
【図７】
2014112768.tif 000014
【図８】
2014112768.tif 000015
【図９】
2014112768.tif 000016
【図１０】
2014112768.tif 000017
【図１１】
2014112768.tif 000018
【図１２】
2014112768.tif 000019
【図１３】
2014112768.tif 000020
【図１４Ａ】
2014112768.tif 000021
【図１４Ｂ】
2014112768.tif 000022
【図１５】
2014112768.tif 000023
【図１６】
2014112768.tif 000024
【図１７】
2014112768.tif 000025
【図１８】
2014112768.tif 000026
【図１９】
2014112768.tif 000027
【図２０】
2014112768.tif 000028
【図２１】
2014112768.tif 000029
【図２２】
2014112768.tif 000030
【図２３Ａ】
2014112768.tif 000031
【図２３Ｂ】
2014112768.tif 000032
【図２４】
2014112768.tif 000033
【図２５】
2014112768.tif 000034
【図２６】
2014112768.tif 000035
【図２７】
2014112768.tif 000036