(57)【特許請求の範囲】
【請求項１】
前段のサーバのデータに同期したデータを後段のサーバにて記憶するようにカスケード接続した複数のアクティブサーバと、
前記複数のアクティブサーバのカスケード接続の最後の段のデータに同期したデータを記憶するスタンバイサーバと、を有し、
いずれかのアクティブサーバに障害が発生すると、障害の発生した前記アクティブサーバの後段から前記スタンバイサーバまでの各々のサーバが、それぞれの前段のサーバに同期したデータを用いて、それまで前記前段のサーバが行っていたサービスを引き継いで行う、ノードシステム。
【請求項２】
前記複数のアクティブサーバによるカスケード接続の系統が複数あり、前記複数の系統における最後の段のアクティブサーバのデータに同期したデータを同じスタンバイサーバに記録する、請求項１に記載のノードシステム。
【請求項３】
少なくとも１つのアクティブサーバがカスケード接続の複数の系統に属しており、前記アクティブサーバに障害が発生すると、前記アクティブサーバが属している前記複数の系統の中で、サービスを切り換えるサーバの段数がより少なくなる系統にて切り換えを実行する、請求項２に記載のノードシステム。
【請求項４】
同じ系統に属する複数のアクティブサーバは、隣接するアクティブサーバが双方向で互いにデータを同期させるようにして一列に接続され、前記系統の両端の２つのアクティブサーバのデータに同期したデータを前記スタンバイサーバにて記憶する、請求項２または３に記載のノードシステム。
【請求項５】
カスケード接続の複数の系統に属し、かつ前記複数の系統のいずれにおいても最後の段に位置するアクティブサーバがあり、前記複数の系統の最後の段に位置する前記アクティブサーバのデータに同期したデータを前記スタンバイサーバに記録する、請求項２から４のいずれか１項に記載のノードシステム。
【請求項６】
複数のアクティブサーバによるカスケード接続が２系統あり、前記アクティブサーバの各々がいずれか１つの系統に属しており、前記２系統の最後の段のアクティブサーバのデータに同期したデータを１つのスタンバイサーバに記録する、請求項２に記載のノードシステム。
【請求項７】
複数のアクティブサーバをカスケード接続するように、前段のアクティブサーバのデータに同期したデータを後段のアクティブサーバにて記憶するとともに、前記複数のアクティブサーバのカスケード接続の最後の段のデータに同期したデータをスタンバイサーバにて記憶し、
いずれかのアクティブサーバに障害が発生すると、障害の発生した前記アクティブサーバの後段から前記スタンバイサーバまでの各々のサーバが、それぞれの前段のサーバに同期したデータを用いて、それまで前記前段のサーバが行っていたサービスを引き継ぐ、サーバ切換え方法。
【請求項８】
前記複数のアクティブサーバによるカスケード接続の系統が複数あり、
前記複数の系統における最後の段のアクティブサーバのデータに同期したデータを同じスタンバイサーバに記録する、請求項７に記載のサーバ切換え方法。
【請求項９】
少なくとも１つのアクティブサーバがカスケード接続の複数の系統に属しており、
前記アクティブサーバに障害が発生すると、前記アクティブサーバが属している前記複数の系統の中で、サービスを切り換えるサーバの段数がより少なくなる系統にて切り換えを実行する、請求項８に記載のサーバ切換え方法。
【請求項１０】
同じ系統に属する複数のアクティブサーバは、隣接するアクティブサーバが双方向で互いにデータを同期させるようにして一列に接続されており、
前記系統の両端の２つのアクティブサーバのデータに同期したデータを前記スタンバイサーバにて記憶する、請求項８または９に記載のサーバ切換え方法。
【請求項１１】
カスケード接続の複数の系統に属し、かつ前記複数の系統のいずれにおいても最後の段に位置するアクティブサーバがあり、
前記複数の系統の最後の段に位置する前記アクティブサーバのデータに同期したデータを前記スタンバイサーバに記録する、請求項８から１０のいずれか１項に記載のサーバ切換え方法。
【請求項１２】
複数のアクティブサーバによるカスケード接続が２系統あり、前記アクティブサーバの各々がいずれか１つの系統に属しており、
前記２系統の最後の段のアクティブサーバのデータに同期したデータを１つのスタンバイサーバに記録する、請求項８に記載のサーバ切換え方法。
【請求項１３】
前段のアクティブサーバ装置のデータに同期したデータを後段のアクティブサーバ装置にて記憶するように複数のアクティブサーバ装置がカスケード接続され、最後の段のアクティブサーバ装置のデータに同期したデータがスタンバイサーバ装置に記憶されるノードシステムにおける前段のアクティブサーバ装置のデータに同期したデータを記憶する記憶手段と、
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせた後、前記記憶手段にて記憶されている、前記前段のアクティブサーバ装置のデータに同期したデータを用いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継いで行う処理手段と、を有するサーバ装置。
【請求項１４】
前記処理手段は、前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、
後段にサーバ装置がなければ、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせる処理を省いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぎ、
後段にサーバ装置があれば、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせた後、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ、請求項１３に記載のサーバ装置。
【請求項１５】
前記処理手段は、カスケード接続の複数の系統に属しているアクティブサーバ装置に障害が発生すると、前記アクティブサーバ装置が属している前記複数の系統の中で、サービスを切り換えるサーバの段数がより少なくなる系統にて切り換えを実行する、請求項１３に記載のサーバ装置。
【請求項１６】
前段のアクティブサーバ装置のデータに同期したデータを後段のアクティブサーバ装置にて記憶するように複数のアクティブサーバ装置がカスケード接続され、最後の段のアクティブサーバ装置のデータに同期したデータがスタンバイサーバ装置に記憶されるノードシステムにおける前段のアクティブサーバ装置のデータに同期したデータを記憶し、
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせ、
前記前段のアクティブサーバ装置のデータに同期したデータを用いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ、データ引き継ぎ方法。
【請求項１７】
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、
後段にサーバ装置がなければ、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせる処理を省いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぎ、
後段にサーバ装置があれば、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせた後、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ、請求項１６に記載のデータ引き継ぎ方法。
【請求項１８】
カスケード接続の複数の系統に属しているアクティブサーバ装置に障害が発生すると、前記アクティブサーバ装置が属している前記複数の系統の中で、サービスを切り換えるサーバの段数がより少なくなる系統にて切り換えを実行する、請求項１６に記載のデータ引き継ぎ方法。
【請求項１９】
前段のアクティブサーバ装置のデータに同期したデータを後段のアクティブサーバ装置にて記憶するように複数のアクティブサーバ装置がカスケード接続され、最後の段のアクティブサーバ装置のデータに同期したデータがスタンバイサーバ装置に記憶されるノードシステムにおける前段のアクティブサーバ装置のデータに同期したデータを記憶する手順と、
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせる手順と、
前記前段のアクティブサーバ装置のデータに同期したデータを用いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ手順と、をコンピュータに実行させるためのプログラム。
【請求項２０】
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、
後段にサーバ装置がなければ、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせる処理を省いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぎ、
後段にサーバ装置があれば、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせた後、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ、請求項１９に記載のプログラム。
【請求項２１】
カスケード接続の複数の系統に属しているアクティブサーバ装置に障害が発生すると、前記アクティブサーバ装置が属している前記複数の系統の中で、サービスを切り換えるサーバの段数がより少なくなる系統にて切り換えを実行する、請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数台のサーバで冗長を実現する技術に関する。
【背景技術】
【０００２】
信頼性向上のために複数台のサーバを組み合わせて冗長構成を実現したシステムあるいは装置がある（特許文献１参照）。例えば、通信システムのノードを複数台のサーバで構成したものがある。一般的な冗長構成として、例えば、２重化、Ｎ重化、Ｎ＋１冗長がある。さらに、常時、アクティブサーバとスタンバイサーバの間でデータを同期させておくことにより、アクティブサーバに障害が発生したときに、スタンバイサーバがサービスを引き継ぐことができるようにした方式（ホットスタンバイ）もある。
【０００３】
例えば、図６に示されたホットスタンバイの２重化構成では、アクティブサーバ９０１に対してスタンバイサーバ９０２が１対１で対応している。そして、アクティブサーバに障害が発生していない通常の運用時、アクティブサーバ９０１とスタンバイサーバ９０２はサービスの継続に必要なデータを同期させている。図中の矢印はデータの同期を示している。図６では、アクティブサーバ９０１のデータ９０３とスタンバイサーバ９０２のデータ９０４とが同期している。それにより、スタンバイサーバ９０２はアクティブサーバ９０１のサービスを継続できる状態に保たれている。したがって、アクティブサーバ９０１に障害が発生してもスタンバイサーバ９０２によってサービスを継続することができる。
【０００４】
また、図７に示されたホットスタンバイのＮ重化構成では全てのサーバがアクティブサーバである。通常運用時、各アクティブサーバのサービスの継続に必要なデータを他のアクティブサーバに分散して、複数のアクティブサーバ間で互いにデータを同期させている。それによって、いずれかのアクティブサーバに障害が発生したとき他のアクティブサーバによってサービスを継続することができる。
【０００５】
また、図８に示されたコールドスタンバイのＮ＋１冗長構成では、複数のアクティブサーバ９２１，９２２に対して１つのスタンバイサーバ９２３が割り当てられている。いずれかのアクティブサーバに障害が発生すると、スタンバイサーバ９２３がそのアクティブサーバに代わってサービスを開始する。
【０００６】
また、図９に示されたホットスタンバイのＮ＋１冗長構成では、複数のアクティブサーバ９３１〜９３３に対して１つのホットスタンバイサーバ９３４が割り当てられている。この点については図９の構成は図８の構成と同じである。しかし、図９の構成では、通常運用時、アクティブサーバとスタンバイサーバの間でデータが同期している。それによって、アクティブサーバ９３１〜９３３のいずれかに障害が発生したときスタンバイサーバ９３４によってサービスを継続することができる。
【特許文献１】特開２００１−４３１０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図６に示した２重化構成では、通常運用時に動作するアクティブサーバの２倍の台数のサーバが必要とされる。そのため、処理能力とコストの関係でみると高コストになる。また、サーバを増設することによりノードをスケールアウトしようとすると、サーバを２台ずつ追加しなければならない。これも高コストの要因となる。
【０００８】
また、図７に示したＮ重化構成を採用すれば、処理能力とコストの関係でみたとき、図６の構成に比べてコストが低減される。しかし、いずれかのアクティブサーバに障害が発生したとき、サービスを引き継ぐ複数のサーバに通信経路を分割する必要があり、そのための処理が複雑となる。
【０００９】
また、図８に示したコールドスタンバイのＮ＋１冗長構成では、図６の構成よりコストが削減され、かつ図７のような通信経路を分割する処理が不要である。また、図８の構成では、データを同期させる処理も不要である。しかし、アクティブサーバとスタンバイサーバの間でデータを同期させていないので、障害の発生したアクティブサーバに代わってスタンバイサーバが動作し始めたとき、それまでアクティブサーバが提供していたサービスが継続されない。
【００１０】
図８と同様の構成を採用し、障害の発生したアクティブサーバからスタンバイサーバへ同期データを転送してから、スタンバイサーバがサービスを開始するようにしたものもある。しかし、その場合、一度に大量の同期データを転送する必要があるため、サーバの切り換えを高速に行うためには、高速データ転送が可能な特殊なインターフェースを持った高価なサーバが必要となる。
【００１１】
図９に示したホットスタンバイのＮ＋１冗長構成では、スタンバイサーバが動作し始めたとき、アクティブサーバのサービスを継続することができる。しかし、Ｎ台のアクティブサーバ９３１〜９３３とのデータの同期を１台のスタンバイサーバ９３４でまかなうので、アクティブサーバの台数Ｎが増えると、スタンバイサーバ９３４に大きなリソースが必要となってしまう。アクティブサーバ９３１〜９３３とスタンバイサーバ９３４とに同一性能のサーバを用いるのが一般的であるが、そうするとアクティブサーバがオーバースペックとなってコストが増大する。
【００１２】
本発明の目的は、複数のサーバによる冗長構成において、低コストで、切り替え時に、通信経路を分割するような複雑な処理を要さず、サービスを継続することを可能にする技術を提供することである。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明のノードシステムは、
前段のサーバのデータに同期したデータを後段のサーバにて記憶するようにカスケード接続した複数のアクティブサーバと、
前記複数のアクティブサーバのカスケード接続の最後の段のデータに同期したデータを記憶するスタンバイサーバと、を有し、
いずれかのアクティブサーバに障害が発生すると、障害の発生した前記アクティブサーバの後段から前記スタンバイサーバまでの各々のサーバが、それぞれの前段のサーバに同期したデータを用いて、それまで前記前段のサーバが行っていたサービスを引き継いで行うものである。
【００１４】
本発明のサーバ切換え方法は、複数のアクティブサーバをカスケード接続するように、前段のアクティブサーバのデータに同期したデータを後段のアクティブサーバにて記憶するとともに、前記複数のアクティブサーバのカスケード接続の最後の段のデータに同期したデータをスタンバイサーバにて記憶し、
いずれかのアクティブサーバに障害が発生すると、障害の発生した前記アクティブサーバの後段から前記スタンバイサーバまでの各々のサーバが、それぞれの前段のサーバに同期したデータを用いて、それまで前記前段のサーバが行っていたサービスを引き継ぐものである。
【００１５】
本発明のサーバ装置は、前段のアクティブサーバ装置のデータに同期したデータを後段のアクティブサーバ装置にて記憶するように複数のアクティブサーバ装置がカスケード接続され、最後の段のアクティブサーバ装置のデータに同期したデータがスタンバイサーバ装置に記憶されるノードシステムにおける前段のアクティブサーバ装置のデータに同期したデータを記憶する記憶手段と、
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせた後、前記記憶手段にて記憶されている、前記前段のアクティブサーバ装置のデータに同期したデータを用いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継いで行う処理手段と、を有している。
【００１６】
本発明のプログラムは、前段のアクティブサーバ装置のデータに同期したデータを後段のアクティブサーバ装置にて記憶するように複数のアクティブサーバ装置がカスケード接続され、最後の段のアクティブサーバ装置のデータに同期したデータがスタンバイサーバ装置に記憶されるノードシステムにおける前段のアクティブサーバ装置のデータに同期したデータを記憶する手順と、
前記前段のアクティブサーバ装置に障害が発生したとき、または前記前段のアクティブサーバ装置から要求があったとき、自サーバ装置がそれまで行っていたサービスを後段のサーバ装置に引き継がせる手順と、
前記記憶手段にて記憶されている、前記前段のアクティブサーバ装置のデータに同期したデータを用いて、それまで前記前段のアクティブサーバ装置が行っていたサービスを引き継ぐ手順と、コンピュータに実行させるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、複数のアクティブサーバに対して１つのスタンバイサーバを備える冗長構成において、アクティブサーバとスタンバイサーバの両方をデータの同期に活用する。これにより、スタンバイサーバをアクティブサーバに１対１で対応させるより低コストで、スタンバイサーバに必要なリソースがアクティブサーバの台数に依存せず、通信経路を分割するような複雑な処理を要さずに、サーバを切り替えてサービスを継続させることができる。
【発明を実施するための最良の形態】
【００１８】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００１９】
（第１の実施形態）
図１は、第１の実施形態のノードの構成を示すブロック図である。本実施形態のノードはアクティブサーバ１１1，１１2とスタンバイサーバ１２とを有している。アクティブサーバ１１1，１１2とスタンバイサーバ１２は通信路１３に接続されている。
【００２０】
アクティブサーバ１１1，１１2は、通常運用時、自身のデータＤ１1，Ｄ１2を用いてサービスを提供するとともに、他のサーバに自身のデータを同期させる。これにより、アクティブサーバ１１1，１１2のサービスを他のサーバによって継続できる状態が維持される。他のサーバとは、他のアクティブサーバまたはスタンバイサーバのいずれかである。データの同期において、アクティブサーバ１１1，１１2の相互関係はカスケード接続となっている。カスケード接続における最後のアクティブサーバ１１2は自身のデータＤ１2を、更に次段にカスケード接続されたスタンバイサーバ１２にデータＤ１2′として同期させている。
【００２１】
いずれかのアクティブサーバに障害が発生すると、そのアクティブサーバの次段のサーバは、障害の発生したアクティブサーバと同期したデータを用いてサービスを継続させる。その際、前段のアクティブサーバと同期したデータを用いたサービスを行うアクティブサーバがそれまで行っていたサービスは、更に次段のサーバによって継続される。
【００２２】
スタンバイサーバ１２は、前段のアクティブサーバ１１2に障害が発生したとき、あるいはアクティブサーバ１１2が更に前段のアクティブサーバ１１1に代わってサービスを開始するとき、アクティブサーバ１１2と同期したデータＤ１2′を用いてサービスを継続させる。
【００２３】
図１の例では、アクティブサーバ１１1に障害が発生すると、アクティブサーバ１１2が、アクティブサーバ１１1と同期したデータＤ１1′を用いてサービスを継続させる。そして、アクティブサーバ１１2が行っていたサービスはスタンバイサーバ１２によって継続される。
【００２４】
本実施形態では、前段のアクティブサーバのデータを次段のアクティブサーバに同期させ、最後の段のアクティブサーバのデータをスタンバイサーバに同期させるように複数のアクティブサーバ１１1，１１2と１つのスタンバイサーバ１２をカスケード接続しておき、いずれかのアクティブサーバに障害が発生したとき、それ以降のサーバが、前段のサーバから同期したデータを用いて前段のサーバのサービスを継続する。
【００２５】
このように、複数のアクティブサーバに対して１つのスタンバイサーバを備える構成において、アクティブサーバとスタンバイサーバの両方をデータの同期に活用している。その結果、本実施形態によれば、スタンバイサーバをアクティブサーバに１対１で対応させるより低コストで、スタンバイサーバに必要なリソースがアクティブサーバの台数に依存せず、通信経路を分割するような複雑な処理を要さずに、サーバを切り替えてサービスを継続させることができる。
【００２６】
スタンバイサーバに必要なリソースがアクティブサーバの台数に依存しないことは、スタンバイサーバの低コストでの調達や、アクティブサーバとスタンバイサーバを共通にする場合におけるアクティブサーバの低コストでの調達に寄与すると考えられる。
【００２７】
再び図１を参照すると、アクティブサーバ１１は、プロセッサ１４、記憶装置１５、および通信インターフェース１６を有している。
【００２８】
プロセッサ１４は、ソフトウェアプログラムを実行することにより動作し、記憶装置１５に記憶されているデータを用いてサービスを提供する。
【００２９】
また、プロセッサ１４は、自身のデータを用いてサービスを提供しているとき、自身のデータを後段のサーバに同期させる。また、自サーバの前段にアクティブサーバ１１があれば、プロセッサ１４は、前段のアクティブサーバ１１に同期したデータを記憶装置１５に記憶させる。
【００３０】
また、プロセッサ１４は、前段のアクティブサーバ１１に障害が発生したとき、あるいは前段のアクティブサーバ１１が更に前段のアクティブサーバ１１に代わってサービスを開始するとき、前段のアクティブサーバ１１と同期したデータＤ１′を用いてサービスを継続させる。
【００３１】
記憶装置１５は自サーバのサービスに必要なデータを保持する。また、前段にアクティブサーバ１１があれば、記憶装置１５は、前段のサーバから同期したデータＤ１′をも保持する。
【００３２】
通信インターフェース１６は通信路１３に接続されており、サーバ間の通信を行う。サーバ間では、アクティブサーバ同士あるいはアクティブサーバとスタンバイサーバの間の同期データが転送される。
【００３３】
スタンバイサーバ１２は、プロセッサ１７、記憶装置１８、および通信インターフェース１９を有している。
【００３４】
プロセッサ１７は、ソフトウェアプログラムを実行することにより動作し、前段のアクティブサーバ１１2に障害が発生したとき、あるいはアクティブサーバ１１2が更に前段のアクティブサーバ１１1に代わってサービスを開始するとき、記憶装置１８に記憶されている、アクティブサーバ１１2と同期したデータＤ１2′を用いてサービスを継続させる。
【００３５】
記憶装置１８は、前段のアクティブサーバ１１2と同期したデータＤ１2′を保持する。
【００３６】
通信インターフェース１９は通信路１３に接続されており、前段のアクティブサーバ１１2との間の通信を行う。その通信ではアクティブサーバ１１2とスタンバイサーバ１２の間の同期データが転送される。
【００３７】
図２は、第１の実施形態のサーバにおいて、前段のアクティブサーバに障害が発生したサーバの動作を示すフローチャートである。ここでは一例としてアクティブサーバ１１とスタンバイサーバ１２の動作を共通化している。
【００３８】
図２を参照すると、サーバは前段のアクティブサーバ１１の障害を検出し、サーバ系切換えシーケンスを開始する（ステップ１０１）。サーバ系切換えシーケンスは、冗長を構成する複数のサーバ間においてサービスの切換えを行う一連の処理シーケンスである。サーバは、自身の後段にアクティブサーバ１１またはスタンバイサーバがあるか否か判定する（ステップ１０２）。これは自身がアクティブサーバ１１かスタンバイサーバ１２かを判定する処理である。アクティブサーバ１１とスタンバイサーバ１２の動作を共通化しない場合には、この処理は不要である。後段にサーバがあることは自身がアクティブサーバであることを意味し、後段にサーバが無いことは自信がスタンバイサーバであることを意味する。
【００３９】
後段にサーバがあれば、サーバは後段のサーバにサーバ系切換え要求を送信する（ステップ１０３）。サーバ系切換え要求は、サーバ系切換えシーケンスの開始を要求するためのメッセージである。その後、サーバは、後段のサーバからサーバ系切換え完了を受信すると（ステップ１０４）、自サーバの動作を停止する（ステップ１０５）。サーバ系切換え完了は、サーバ系切換えシーケンスが完了したことを通知するためのメッセージである。続いて、サーバは、前段のサーバと同期したデータを用いて、それまで前段のサーバが行っていたサービスを引き継ぐ（ステップ１０６）。
【００４０】
また、ステップ１０２の判定において後段にサーバが無ければ、サーバは、ステップ１０６の動作に移行し、それまで前段のサーバが行っていたサービスを引き継ぐ。
【００４１】
図３は、第１の実施形態のサーバにおいて、前段のアクティブサーバからサーバ系切換え要求を受信したサーバの動作を示すフローチャートである。ここでは一例としてアクティブサーバ１１とスタンバイサーバ１２の動作を共通化している。
【００４２】
図３を参照すると、サーバは、前段のサーバからサーバ系切換え要求を受信し、サーバ系切換えシーケンスを開始する（ステップ２０１）。ステップ２０２〜２０６に示したサーバ系切換えシーケンスは、図２に示したステップ１０２〜１０６と同じものである。ステップ２０２〜２０６の処理を終えると、サーバは、前段のサーバに対してサーバ系切換え完了を送信して処理を終了する。
【００４３】
次に、アクティブサーバ１１に障害が発生したときのノード全体の動作について説明する。ここでは、アクティブサーバ１１1とアクティブサーバ１１2とがサービスを提供する通常運用の状態から、アクティブサーバ１１1に障害が発生したときのノードの動作について説明する。アクティブサーバ１１1に障害が発生した場合には、アクティブサーバ１１2とスタンバイサーバ１２がサービスを提供するようにサーバの切り換えが起こってノードの動作が再開する。
【００４４】
アクティブサーバ１１1に障害が発生すると、アクティブサーバ１１2はその障害を検出し、サーバ系切換えシーケンスを開始する。アクティブサーバ１１2は自身がスタンバイサーバではないことを確認し、自身のサービスを継続する後段のサーバ（スタンバイサーバ１２）にサーバ系切換えを要求する。
【００４５】
スタンバイサーバ１２は、サーバ系切換え要求を受けると、前段のアクティブサーバ１１2と同期したデータＤ１2′を用いて、それまでアクティブサーバ１１2が行っていたサービスを開始する。そして、スタンバイサーバ１２は、前段のアクティブサーバ１１2へサーバ系切換え完了を通知する。
【００４６】
アクティブサーバ１１2は、スタンバイサーバ１２からサーバ系切換え完了を受けると、それまで自身で行っていたサービスを停止する。次に、アクティブサーバ１１2は、前段のアクティブサーバ１１1と同期したデータＤ１1′を用いて、それまでアクティブサーバ１１1が行っていたサービスを開始する。
【００４７】
なお、サーバ間で送受信されるサーバ系切換え要求およびサーバ系切換え完了のデータ量は、サービスに用いるデータを同期させるために転送される同期データのデータ量に比べて十分に小さい。そのためサーバ間の通信にかかる時間は短く、サーバ系切換えは即時に完了する。そのため、アクティブサーバ１１1に障害が発生したとき、ノード全体としてはサービスを継続させることができる。
【００４８】
また、本実施形態では、後段のサーバが前段のサーバの障害を検出することとしたが、本発明はこれに限定されるものではなく、障害監視はどのような構成あるいは方法で行われてもよい。
【００４９】
（第２の実施形態）
第１の実施形態では、カスケード接続された１系統のアクティブサーバに対して１つのスタンバイサーバが割り当てられていた。しかし、本発明はそれに限定されるものではない。第２の実施形態として、アクティブサーバがカスケード接続された２系統に対して１つのスタンバイサーバを割り当てる構成を例示する。
【００５０】
アクティブサーバは、他の１つのアクティブサーバのバックアップとしても機能するので、自身のデータを含めて２台のアクティブサーバの分のデータを記憶するだけの記憶容量を備えている。同じ性能のサーバをアクティブサーバとスタンバイサーバの両方に用いることにすると、スタンバイサーバにも２台のアクティブサーバの分のデータを記憶するだけの記憶容量が備わることになる。
【００５１】
そこで、本実施形態では、複数のアクティブサーバを２系統に分けて、系統毎にカスケード接続でデータを同期させ、その２系統の最後の段に１つのスタンバイサーバを共用することにする。これにより、いずれかのアクティブサーバに障害が発生したときにサーバ系切換えをそのアクティブサーバの属する系統だけに限定することができる。
【００５２】
また、その結果、サーバ系切換えに伴ってサーバ間で送受信されるメッセージ少なくすることができる。Ｎ台のアクティブサーバを全て１系統にカスケード接続した場合にはサーバ間の通信回数は最大でＮ回となるが、（Ｎ／２）台毎の２系統に分ければ通信回数は最大で（Ｎ／２）回で済む。その結果、ノード全体としてのサーバ系切換えにかかる時間の短縮にもなる。
【００５３】
図４は、第２の実施形態のノードの構成を示すブロック図である。本実施形態のノードはアクティブサーバ２１1〜２１4とスタンバイサーバ２２とを有している。アクティブサーバ２１1〜２１4とスタンバイサーバ２２は通信路２３に接続されている。
【００５４】
アクティブサーバ２１1〜２１4は、カスケード接続でデータを同期させる系統を、アクティブサーバ２１1，２１2の系統と、アクティブサーバ２１4，２１3の系統との２つに分けている。
【００５５】
アクティブサーバ２１1〜２１4は、通常運用時、自身のデータＤ２1〜Ｄ２4を用いてサービスを提供するとともに、カスケード接続の後段にあるサーバに自身のデータＤ２1〜Ｄ２4を同期させる。
【００５６】
いずれかのアクティブサーバに障害が発生すると、そのアクティブサーバの次段のサーバは、障害の発生したアクティブサーバと同期したデータを用いてサービスを継続させる。その際、前段のアクティブサーバと同期したデータを用いたサービスを行うアクティブサーバがそれまで行っていたサービスは、更に次段のサーバによって継続される。
【００５７】
スタンバイサーバ２２は、２系統のいずれかに属する前段のアクティブサーバ２１に障害が発生したとき、あるいは前段のアクティブサーバ２１が更にその前段のアクティブサーバ２１に代わってサービスを開始するとき、前段のアクティブサーバ２１と同期したデータＤ２′を用いてサービスを継続させる。
【００５８】
本実施形態では、アクティブサーバ２１に障害が発生したとき、サーバ系切換えは障害の発生したアクティブサーバ２１の属する系統に閉じられる。
【００５９】
図４の例では、アクティブサーバ２１1に障害が発生すると、アクティブサーバ２１2が、アクティブサーバ２１1と同期したデータＤ２1′を用いてサービスを継続させる。そして、アクティブサーバ２１2が行っていたサービスはスタンバイサーバ２２によって継続される。
【００６０】
また、アクティブサーバ２１4に障害が発生すると、アクティブサーバ２１3が、アクティブサーバ２１4と同期したデータＤ２4′を用いてサービスを継続させる。そして、アクティブサーバ２１3が行っていたサービスはスタンバイサーバ２２によって継続される。
【００６１】
再び図４を参照すると、アクティブサーバ２１は、プロセッサ２４、記憶装置２５、および通信インターフェース２６を有している。プロセッサ２４、記憶装置２５、および通信インターフェース２６の構成および動作は、図１に示した第１の実施形態によるアクティブサーバ１１のプロセッサ１４、記憶装置１５、および通信インターフェース１６と同様である。
【００６２】
スタンバイサーバ２２は、プロセッサ２７、記憶装置２８、および通信インターフェース２９を有している。スタンバイサーバ２２は、２系統のアクティブサーバに共用される点で、図１に示した第１の実施形態によるスタンバイサーバ１２と異なる。ただし、スタンバイサーバ２２は、各系統に対して、第１の実施形態のスタンバイサーバ１２と同様の動作をする。また、プロセッサ２７、記憶装置２８、および通信インターフェース２９の各系統に対する動作も第１の実施形態によるプロセッサ１７、記憶装置１８、および通信インターフェース１９と同様である。
【００６３】
次に、アクティブサーバ２１1に障害が発生したときのノード全体の動作について説明する。ここでは、アクティブサーバ２１1〜２１4がサービスを提供する通常運用の状態から、アクティブサーバ２１1に障害が発生したときのノードの動作について説明する。アクティブサーバ２１1に障害が発生した場合には、アクティブサーバ２１2とスタンバイサーバ２２がサービスを提供するようにサーバの切り換えが起こってノードの動作が再開する。
【００６４】
アクティブサーバ２１1に障害が発生すると、アクティブサーバ２１2がその障害を検出し、サーバ系切換えシーケンスを開始する。アクティブサーバ２１2は自身がスタンバイサーバではないことを確認し、自身のサービスを継続する後段のサーバ（スタンバイサーバ２２）へサーバ系切換えを要求する。
【００６５】
スタンバイサーバ２２は、サーバ系切換え要求を受けると、前段のアクティブサーバ２１2と同期したデータＤ２2′を用いて、それまでアクティブサーバ２１2が行っていたサービスを開始する。そして、スタンバイサーバ２２は、アクティブサーバ２１2へサーバ系切換え完了を通知する。
【００６６】
アクティブサーバ２１2は、スタンバイサーバ２２からサーバ系切換え完了を受けると、それまで自身で行っていたサービスを停止する。次に、アクティブサーバ２１2は、前段のアクティブサーバ２１1と同期したデータＤ２1′を用いて、それまでアクティブサーバ２１1が行っていたサービスを開始する。
【００６７】
なお、サーバ間で送受信されるサーバ系切換え要求およびサーバ系切換え完了のデータ量は、サービスに用いるデータを同期させるために転送される同期データのデータ量に比べて十分に小さい。そのためサーバ間の通信にかかる時間は短く、サーバ系切換えは即時に完了する。そのため、アクティブサーバ２１1に障害が発生したとき、ノード全体としてはサービスを継続させることができる。
【００６８】
また、ここではアクティブサーバの２つの系統に対して１つのスタンバイサーバを備える構成を例示したが、３つ以上の系統に対して１つのスタンバイサーバを備える構成も可能である。
【００６９】
（第３の実施形態）
第１および第２の実施形態では、各アクティブサーバはいずれか１つの系統に属しており、複数のアクティブサーバのデータの同期は１方向だけであった。しかし、本発明はこれに限定されるものでない。第３の実施形態では、複数のアクティブサーバのデータの同期が２方向にカスケード接続された構成を例示する。
【００７０】
この例では、１つの方向で最前の段となるアクティブサーバが、もう１つの方向では最後の段となる。複数のアクティブサーバは、隣接するアクティブサーバが双方向で互いにデータを同期させるようにして一列に接続され、さらに両端の２つのアクティブサーバは自身のデータをスタンバイサーバにも同期させる。
【００７１】
方向が異なるカスケード接続を別の系統と見れば、アクティブサーバがそれぞれ２系統に属することとなる。そのため、アクティブサーバに障害が発生したとき、２系統のうち適当な方を選択して切換えを実行することができる。
【００７２】
この構成によれば、いずれかのアクティブサーバに障害が発生したときにサーバ系切換えをいずれか１方向だけに限定することができる。また、いずれかのアクティブサーバに障害が発生したとき、障害の発生したアクティブサーバに応じて、サービスを切り換えるサーバの段数がより少ない系統を選択することが可能となる。その結果、サーバ系切換えに伴ってサーバ間で送受信されるメッセージをより少なくすることができる。Ｎ台のアクティブサーバを全て１系統にカスケード接続した場合にはサーバ間の通信回数は最大でＮ回となるが、（Ｎ／２）台毎の２つに分け、さらに双方にカスケード接続してトータルで４系統とすれば、通信回数は最大で（Ｎ／４）回で済む。その結果、ノード全体としてのサーバ系切換えにかかる時間の短縮にもなる。
【００７３】
図５は、第３の実施形態のノードの構成を示すブロック図である。本実施形態のノードはアクティブサーバ３１1〜３１6とスタンバイサーバ３２とを有している。アクティブサーバ３１1〜３１6とスタンバイサーバ３２は通信路３３に接続されている。
【００７４】
アクティブサーバ３１1〜３１6は、カスケード接続でデータを同期させるアクティブサーバを、アクティブサーバ３１1，３１2，３１3の組と、アクティブサーバ３１3，３１4，３１5，３１6の組との２つに分けている。
【００７５】
同じ組みに属する複数のアクティブサーバ３１は、隣接するアクセスサーバ３１が双方向で互いにデータを同期させるようにして一列に接続され、さらに両端の２台のアクティブサーバ３１は自身のデータをスタンバイサーバ３２にも同期させている。
【００７６】
例えば、アクティブサーバ３１1，３１2，３１3の組では、アクティブサーバ３１1とアクティブサーバ３１2とが双方向で互いにデータを同期させている。また、アクティブサーバ３１2とアクティブサーバ３１3とが双方向で互いにデータを同期させている。さらに、両端にあるアクティブサーバ３１1とアクティブサーバ３１3は、自身のデータをスタンバイサーバ３２にも同期させている。これにより、アクティブサーバ３１1，３１2，３１3の組によってカスケード接続の２つの系統ができている。
【００７７】
なお、ここでは、アクティブサーバ３１3が２つの組に属し、かつ各組のカスケード接続の系統において最後の段にあってスタンバイサーバ３２に接続する位置にある。この構成により、スタンバイサーバ３２に同期させる２系統のデータを１台のアクティブサーバ３１3のデータで兼用することができる。
【００７８】
再び図５を参照すると、アクティブサーバ３１は、プロセッサ３４、記憶装置３５、および通信インターフェース３６を有している。プロセッサ３４、記憶装置３５、および通信インターフェース３６の構成および動作は、図１に示した第１の実施形態によるアクティブサーバ１１のプロセッサ１４、記憶装置１５、および通信インターフェース１６と同様である。ただし、本実施形態では、１つのアクティブサーバ３１が複数の系統に属している。
【００７９】
したがって、いずれかのアクティブサーバ３１に障害が発生したとき、そのアクティブサーバ３１の属している系統のうち、どの系統にてサーバ系切換えを行うかの判断が行われる。プロセッサ３４は、図１に示した第１の実施形態によるアクティブサーバ１１のプロセッサ１４と同様の機能に加え、いずれかのアクティブサーバ３１に障害が発生したときにサーバ系切換えを行う系統を選択する機能を備えていてもよい。例えば、障害の発生したアクティブサーバ３１の位置に応じてサーバ系切換えを行う系統を選択することにしてもよい。より具体的には、障害の発生したアクティブサーバ３１と、その障害に対して最もサーバ系切換えの段数が少ない系統とを対応付けた情報を各サーバに予め設定しておくことにしてもよい。
【００８０】
スタンバイサーバ３２は、プロセッサ３７、記憶装置３８、および通信インターフェース３９を有している。スタンバイサーバ３２は、図４に示した第２の実施形態のスタンバイサーバ２２と同様、複数の系統に共用される。スタンバイサーバ３２は、各系統に対して第１の実施形態のスタンバイサーバ１２と同様の動作をする。また、プロセッサ３７、記憶装置３８、および通信インターフェース３９の各系統に対する動作も第１の実施形態によるプロセッサ１７、記憶装置１８、および通信インターフェース１９と同様である。
【００８１】
次に、アクティブサーバ３１4に障害が発生したときのノード全体の動作について説明する。ここでは、アクティブサーバ３１1〜３１6がサービスを提供する通常運用の状態から、アクティブサーバ３１4に障害が発生したときのノードの動作について説明する。
【００８２】
アクティブサーバ３１4に障害が発生すると、アクティブサーバ３１3とアクティブサーバ３１5がその障害を検出する。アクティブサーバ３１3を経由する系統では、スタンバイサーバ３２までに経由するサーバは１台（アクティブサーバ３１3のみ）である。一方、アクティブサーバ３１5を経由する系統では、スタンバイサーバ３２までに経由するサーバは２台（アクティブサーバ３１5，３１6）である。それ故、アクティブサーバ３１3を経由する系統でサーバ系切換えが行われることになる。
【００８３】
アクティブサーバ３１3はサーバ系切換えシーケンスを開始する。アクティブサーバ３１3は、自身がスタンバイサーバ３２ではないことを確認し、自身のサービスを継続する後段のサーバ（スタンバイサーバ３２）へサーバ系切換えを要求する。
【００８４】
スタンバイサーバ３２は、サーバ系切換え要求を受けると、前段のアクティブサーバ３１3と同期したデータＤ３3′′′を用いて、それまでアクティブサーバ３１3が行っていたサービスを開始する。また、スタンバイサーバ３２は、アクティブサーバ３１3へサーバ系切換え完了を通知する。
【００８５】
アクティブサーバ３１3は、スタンバイサーバ３２からサーバ系切換え完了を受けると、それまで自身で行っていたサービスを停止する。次に、アクティブサーバ３１3は、前段のアクティブ３１4と同期したデータＤ３4″を用いて、それまでアクティブサーバ３１4が行っていたサービスを開始する。
【００８６】
なお、サーバ間で送受信されるサーバ系切換え要求およびサーバ系切換え完了のデータ量は、サービスに用いるデータを同期させるために転送される同期データのデータ量に比べて十分に小さい。そのためサーバ間の通信にかかる時間は短く、サーバ系切換えは即時に完了する。そのため、アクティブサーバ３１4に障害が発生したとき、ノード全体としてはサービスを継続させることができる。
【図面の簡単な説明】
【００８７】
【図１】第１の実施形態のノードの構成を示すブロック図である。
【図２】第１の実施形態のサーバにおいて、前段のアクティブサーバに障害が発生したサーバの動作を示すフローチャートである。
【図３】第１の実施形態のサーバにおいて、前段のアクティブサーバからサーバ系切換え要求を受信したサーバの動作を示すフローチャートである。
【図４】第２の実施形態のノードの構成を示すブロック図である。
【図５】第３の実施形態のノードの構成を示すブロック図である。
【図６】ホットスタンバイの２重化構成について説明するための図である。
【図７】ホットスタンバイのＮ重化構成について説明するための図である。
【図８】コールドスタンバイのＮ＋１冗長構成について説明するための図である。
【図９】ホットスタンバイのＮ＋１冗長構成について説明するための図である。
【符号の説明】
【００８８】
１１，２１，３１    アクティブサーバ
１２，２２，３２    スタンバイサーバ
１３，２３，３３    通信路
１４，１７，２４，２７，３４，３７    プロセッサ
１５，１８，２５，２８，３５，３８    記憶装置
１６，１９，２６，２９，３６，３９    通信インターフェース
【図１】
0004479930.tif 000002
【図２】
0004479930.tif 000003
【図３】
0004479930.tif 000004
【図４】
0004479930.tif 000005
【図５】
0004479930.tif 000006
【図６】
0004479930.tif 000007
【図７】
0004479930.tif 000008
【図８】
0004479930.tif 000009
【図９】
0004479930.tif 000010