(57)【要約】【課題】サーバが各クライアントを識別するために独自に発行したセッションＩＤを含めて状態を振替先のサーバに再現可能なサーバシステムを提供する。【解決手段】負荷分散装置によって振り分けられたクライアントにセッションＩＤを付与するセッション管理手段をそれぞれ備えたフロントエンドサーバと、セッションＩＤに従って、前記各クライアントからの要求メッセージを前記複数のフロントエンドサーバに振り分ける振分手段と、フロントエンドサーバの障害を検出する障害検出手段と、障害が検出されたフロントエンドサーバに割り当てられていたセッションを別のフロントエンドサーバに割り当てる割当変更手段とを備えた負荷分散装置と、各フロントエンドサーバから受け取った要求メッセージを前記セッションＩＤごとに蓄積する履歴蓄積手段と、割り当てが変更されたセッションに対応して蓄積された履歴情報に基づいて、新たな割当先のフロントエンドサーバに該当するセッションの処理状態を再現する状態再現手段とを備える。【選択図】      図１
2007316837.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのクライアントからの要求メッセージを、それぞれ同等なサービスを提供可能な複数のフロントエンドサーバに振り分けて負荷を分散させる負荷分散装置を備えたサーバシステムにおいて、
前記複数のフロントエンドサーバそれぞれは、前記負荷分散装置によって処理が振り分けられたクライアントから要求対象のサービスに対応して送出される少なくとも一つの要求メッセージからなるセッションに一意のセッションＩＤを付与して管理するセッション管理手段を備え、
前記負荷分散装置は、
前記セッションＩＤで示される割り当てに従って、前記各クライアントからの要求メッセージを前記複数のフロントエンドサーバに振り分ける振分手段と、
前記複数のフロントエンドサーバそれぞれの動作を監視し、これらのフロントエンドサーバの障害を検出する障害検出手段と、
前記障害検出手段によって障害が検出されたフロントエンドサーバに割り当てられていたセッションを別のフロントエンドサーバに割り当てる割当変更手段とを備え、
前記各フロントエンドサーバを介して当該フロントエンドサーバに振り分けられた要求メッセージおよびこの要求メッセージを含むセッションに付与されたセッションＩＤを受け取り、前記セッションＩＤごとに前記各クライアントからの要求メッセージに関する履歴情報を蓄積する履歴蓄積手段と、
前記割当変更手段による割り当てが変更されたセッションを示すセッションＩＤに対応して蓄積された履歴情報に基づいて、新たな割当先のフロントエンドサーバに前記変更元のフロントエンドサーバにおける該当するセッションの処理状態を再現する状態再現手段と
を備えたことを特徴とするサーバシステム。
【請求項２】
請求項１に記載のサーバシステムにおいて、
前記状態再現手段は、
前記複数のフロントエンドサーバそれぞれに備えられ、前記負荷分散装置の前記振分手段を介して受け取った要求メッセージから、他のフロントエンドサーバによって付与されたセッションＩＤで示されるセッションに属する要求メッセージを抽出する抽出手段と、
前記抽出手段によって抽出された要求メッセージが属するセッションを示すセッションＩＤに対応して前記履歴蓄積手段に蓄積された履歴情報を前記振り分け先のフロントエンドサーバに転送する履歴転送手段と、
前記複数のフロントエンドサーバそれぞれに備えられ、前記履歴転送手段を介して受け取った履歴情報に対応するセッションＩＤを引き継ぎ、前記履歴情報に含まれる要求メッセージに応じた処理を実行する処理引継ぎ手段とを備えた
ことを特徴とするサーバシステム。
【請求項３】
請求項１に記載のサーバシステムにおいて、
前記各フロントエンドサーバによって提供されるサービスそれぞれにかかわるセッションの終了を検出する終了検出手段と、
前記終了検出手段によって終了が検出されたセッションを示すセッションＩＤに対応して前記履歴蓄積手段に蓄積された履歴情報を消去する履歴消去手段と
を備えたことを特徴とするサーバシステム。
【請求項４】
請求項２に記載のサーバシステムにおいて、
前記各フロントエンドサーバに備えられた前記セッション管理手段は、個々のセッションに一意のサーバ内ＩＤと自サーバを示すサーバＩＤとからなるセッションＩＤを生成するＩＤ生成手段を備え、
履歴蓄積手段は、予め割り当てられたフロントエンドサーバを示すサーバＩＤを含むセッションＩＤに対応する履歴情報をそれぞれ蓄積する複数の履歴管理サーバを備え、
前記状態再現手段の履歴転送手段は、転送対象の履歴情報を示すセッションＩＤに含まれるサーバＩＤに基づいて、前記履歴情報の読出元の履歴管理サーバを選択し、履歴情報の転送処理に供するサーバ選択手段を備えた
ことを特徴とするサーバシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバでクライアントからの要求に応じた負荷を分散するクライアント・サーバ型ネットワークシステムにおいて、サーバの障害が発生した際に振替先のサーバに処理を引き継ぎ可能なサーバシステムに関する。
【背景技術】
【０００２】
ブロードバンド環境の普及に伴って、ＷＥＢ閲覧サービスとともに映像および音声を含む情報配信サービスなど多様なネットワークサービスが提供されるようになっており、このようなネットワークサービスへの需要の拡大に伴って、これらのネットワークサービスの規模も年々拡大している。
このように大規模化したネットワークサービスを提供するためのサーバシステムでは、可用性の維持およびスケーラビリティの向上とともに、システムの運用コストを抑えることも重要視されている。
【０００３】
スケーラビリティの向上を図るためのサーバシステムとして、クライアントからの要求を付加分散装置によって、同等のサービスを提供する複数のサーバに均等に配分する構成が提案されている。そして、このような負荷分散型のシステムにおいて可用性を維持するための仕組みとして、代理応答装置が各サーバに関する要求メッセージおよび応答メッセージを記録するとともに、各サーバの障害監視および障害発生時の引継ぎ処理を行うシステムが提案されている(特許文献１参照)。
【０００４】
特許文献１の技法では、代理応答装置により、各サーバがクライアントから受け取った要求メッセージおよびクライアントへ送出した応答メッセージがサーバごとに記録されており、障害が発生したときに、障害が発生したサーバに対応して記録された要求メッセージを振替先のサーバに順次に送信し、この振替先のサーバに障害が発生したサーバと同等の内部状態を再現する。このようにして、障害が発生したサーバの処理を振替先のサーバに引継ぐことにより、可用性の維持が実現されている。
【特許文献１】特開２００４−２８０７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、映像情報や音声情報を配信するサービスなどでは、配信先のクライアントを区別するために、サービスを提供するサーバが独自のセッションＩＤを付与し、それぞれのクライアントに関する処理の進捗を管理する場合がある。
このようなセッションＩＤに着目した管理が必要なサービスを提供するサーバシステムでは、上述したようにして、単純にクライアントからの要求メッセージの蓄積を振替先のサーバに渡したのでは、振替先のサーバにおいてこれらの要求メッセージの処理を行う際に、新たに別のセッションＩＤが付与されてしまうため、障害の発生したサーバにおいて提供されていたサービスに関する処理状況を完全に再現することはできなかった。
【０００６】
本発明は、システム内のサーバに障害が発生したときに、そのサーバが各クライアントを識別するために独自に発行したセッションＩＤを含めて状態を振替先のサーバに再現可能なサーバシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明にかかわる第１のサーバシステムは、それぞれセッション管理手段を備えた複数のフロントエンドサーバと、振分手段と障害検出手段と割当変更手段とを備えた負荷分散装置と、履歴蓄積手段と、状態再現手段とから構成される。
本発明にかかわる第１のサーバシステムの原理は、以下の通りである。
少なくとも一つのクライアントからの要求メッセージを、それぞれ同等なサービスを提供可能な複数のフロントエンドサーバに振り分けて負荷を分散させる負荷分散装置を備えたサーバシステムにおいて、複数のフロントエンドサーバそれぞれは、前記負荷分散装置によって処理が振り分けられたクライアントから要求対象のサービスに対応して送出される少なくとも一つの要求メッセージからなるセッションに一意のセッションＩＤを付与して管理するセッション管理手段を備える。また、負荷分散装置において、振分手段は、セッションＩＤで示される割り当てに従って、前記各クライアントからの要求メッセージを前記複数のフロントエンドサーバに振り分ける。障害検出手段は、複数のフロントエンドサーバそれぞれの動作を監視し、これらのフロントエンドサーバの障害を検出する。割当変更手段は、障害検出手段によって障害が検出されたフロントエンドサーバに割り当てられていたセッションを別のフロントエンドサーバに割り当てる。また、履歴蓄積手段は、各フロントエンドサーバを介して当該フロントエンドサーバに振り分けられた要求メッセージおよびこの要求メッセージを含むセッションに付与されたセッションＩＤを受け取り、前記セッションＩＤごとに前記各クライアントからの要求メッセージに関する履歴情報を蓄積する。状態再現手段は、割当変更手段による割り当てが変更されたセッションを示すセッションＩＤに対応して蓄積された履歴情報に基づいて、新たな割当先のフロントエンドサーバに前記変更元のフロントエンドサーバにおける該当するセッションの処理状態を再現する。
【０００８】
このように構成された第１のサーバシステムの動作は、下記の通りである。
クライアントからの要求メッセージが負荷分散装置の振分手段を介して複数のフロントエンドサーバのいずれかに振り分けられると、このフロントエンドサーバに備えられたセッション管理手段により、この要求メッセージを含む一連の要求メッセージからなるセッションについて一意のセッションＩＤが付与される。そして、以降は、このセッションに属する各要求メッセージは、このセッションにかかわるサービスに関する履歴情報として、上述したセッションＩＤに対応して履歴蓄積手段に蓄積される。
【０００９】
その後、これらのフロントエンドサーバのいずれかに障害が発生したことが障害検出手段によって検出されると、割当変更手段により、障害が検出されたフロントエンドサーバに割り当てられていたセッションが別のフロントエンドサーバに割り当てられ、その後に到達するこのセッションに属する要求メッセージは、振分手段により、新たな割当先のフロントエンドサーバに振り分けられる。
【００１０】
また、このとき、状態再現手段により、上述したようにして割り当てが変更されたセッションに対応して履歴蓄積手段に蓄積された履歴情報に基づいて、このセッションに関する処理がセッションＩＤも含めて割当先のフロントエンドサーバにおいて再現される。
本発明にかかわる第２のサーバシステムは、上述した第１のサーバシステムにおいて、状態再現手段に抽出手段と履歴転送手段と処理引継ぎ手段とを備えて構成される。
【００１１】
本発明にかかわる第２のサーバシステムの原理は、以下の通りである。
上述した第１のサーバシステムに備えられる状態再現手段において、抽出手段は、複数のフロントエンドサーバそれぞれに備えられ、前記負荷分散装置の前記振分手段を介して受け取った要求メッセージから、他のフロントエンドサーバによって付与されたセッションＩＤで示されるセッションに属する要求メッセージを抽出する。履歴転送手段は、抽出手段によって抽出された要求メッセージが属するセッションを示すセッションＩＤに対応して前記履歴蓄積手段に蓄積された履歴情報を前記振り分け先のフロントエンドサーバに転送する。処理引継ぎ手段は、複数のフロントエンドサーバそれぞれに備えられ、前記履歴転送手段を介して受け取った履歴情報に対応するセッションＩＤを引き継ぎ、前記履歴情報に含まれる要求メッセージに応じた処理を実行する。
【００１２】
このように構成された第２のサーバシステムの動作は、下記の通りである。
障害が発生したフロントエンドサーバに割り当てられていたセッションが他のフロントエンドサーバに割り当てられた後に、このセッションに属する新たな要求メッセージの到達に応じて、この要求メッセージが抽出手段によって抽出され、これに応じて、履歴転送手段により、このセッションを示すセッションＩＤに対応して履歴蓄積手段に蓄積された履歴情報が、このセッションの割当先のフロントエンドサーバに転送される。このようにして割当先のフロントエンドサーバに転送された履歴情報に基づいて、この割当先のフロントエンドサーバに備えられた処理引継ぎ手段により、対応するセッションＩＤが引継がれ、また、履歴情報に含まれる個々の要求メッセージに対応する処理を実行することにより、障害が発生したフロントエンドサーバにおけるこのセッションに関する処理状態が完全に再現される。
【００１３】
本発明にかかわる第３のサーバシステムは、上述した第１のサーバシステムにおいて、終了検出手段と、履歴消去手段とを備えて構成される。
本発明にかかわる第３のサーバシステムの原理は、以下の通りである。
上述した第１のサーバシステムにおいて、終了検出手段は、各フロントエンドサーバによって提供されるサービスそれぞれにかかわるセッションの終了を検出する。履歴消去手段は、終了検出手段によって終了が検出されたセッションを示すセッションＩＤに対応して前記履歴蓄積手段に蓄積された履歴情報を消去する。
【００１４】
このように構成された第３のサーバシステムの動作は、下記の通りである。
終了検出手段による検出結果に応じて、履歴消去手段により、終了したセッションにかかわる履歴情報を消去することにより、履歴蓄積手段に備えられた記憶容量を有効に利用することができる。
本発明にかかわる第４のサーバシステムは、上述した第２のサーバシステムに備えられるセッション管理手段にＩＤ生成手段を備え、履歴蓄積手段に複数の履歴管理サーバとサーバ選択手段とを備えて構成される。
【００１５】
本発明にかかわる第４のサーバシステムの原理は、以下の通りである。
上述した第２のサーバシステムの各フロントエンドサーバに備えられた前記セッション管理手段において、ＩＤ生成手段は、個々のセッションに一意のサーバ内ＩＤと自サーバを示すサーバＩＤとからなるセッションＩＤを生成する。履歴蓄積手段において、複数の履歴管理サーバは、予め割り当てられたフロントエンドサーバを示すサーバＩＤを含むセッションＩＤに対応する履歴情報をそれぞれ蓄積する。状態再現手段の履歴転送手段において、サーバ選択手段は、転送対象の履歴情報を示すセッションＩＤに含まれるサーバＩＤに基づいて、前記履歴情報の読出元の履歴管理サーバを選択し、履歴情報の転送処理に供する。
【００１６】
このように構成された第４のサーバシステムの動作は、下記の通りである。
各フロントエンドサーバに備えられたセッション管理手段のＩＤ生成手段によって生成されたセッションＩＤに含まれるサーバＩＤに応じて、履歴蓄積手段を構成する複数の履歴管理サーバによって履歴情報の蓄積が分担され、また、履歴情報を転送する際には、サーバ選択手段により、転送対象の履歴情報に対応するセッションＩＤに含まれるサーバＩＤに対応する履歴管理サーバから選択的に履歴情報が読み出され、フロントエンドサーバへの転送処理に供される。
【００１７】
このように、サーバシステムを構成するフロントエンドサーバにかかわる履歴情報を複数の履歴管理サーバに分散して蓄積することにより、フロントエンドサーバの増設などにも柔軟に対応することが可能となる。
【発明の効果】
【００１８】
上述したように、本発明にかかわるサーバシステムでは、セッションごとに履歴情報を管理することにより、フロントエンドサーバの障害に応じて、他のフロントエンドサーバにセッション単位での状態を確実に復元し、セッションとしての連続性が必須なサービスを継続してクライアントに提供することができる。
特に、本発明にかかわる第２のサーバシステムでは、障害が発生したフロントエンドサーバに代わってサービスを提供する振替先のフロントエンドサーバにおいて処理状況を再現する処理を、クライアントからの新たな要求メッセージの入力に応じて実行することにより、負荷分散サーバを障害の発生に応じたフロントエンドサーバの振替処理を含む要求メッセージの振り分け処理に専念させることができる。
【００１９】
また、本発明にかかわる第３のサーバシステムでは、システム内のリソースを有効に利用することができるので、コストを抑えたシステムを提供することが可能である。
また一方、本発明にかかわる第４のサーバシステムでは、フロントエンドサーバの増設などにも柔軟に対応することが可能であるので、可用性の確保とともにスケーラビリティの向上を図ることができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面に基づいて、本発明の実施形態について詳細に説明する。
（第１の実施形態）
図１に、本発明にかかわるサーバシステムの第１の実施形態を示す。
図１に示したクライアント(Ｃ１)２０１１〜(Ｃｎ)２０１ｎは、インターネットなどのネットワークを介して負荷分散装置２１０を備えたサーバシステムに接続し、この負荷分散装置２１０を介してフロントエンドサーバ２２０１〜２２０ｍのいずれかに接続して、接続したフロントエンドサーバ２２０によるサービスの提供を受ける。以下、クライアント２０１１〜２０１ｎおよびフロントエンドサーバ２２０１〜２２０ｍを総称する際は、単に、クライアント２０１およびフロントエンドサーバ２２０と称する。
【００２１】
図１において、本発明にかかわるサーバシステムは、負荷分散装置２１０とフロントエンドサーバ２２０１〜２２０ｍおよび履歴管理サーバ２３０はシステム内ネットワークを介して互いに接続して構成されている。また、図１に示した履歴管理サーバ２３０は、フロントエンドサーバ２２０１〜２２０ｍから受け取った履歴情報を後述するようにして蓄積し、これらのフロントエンドサーバ２２０１〜２２０ｍからの要求に応じて、蓄積した履歴情報を要求元のフロントエンドサーバ２２０に渡す。
【００２２】
上述した各クライアント２０１１〜２０１ｎから送出されたサービスに関する要求メッセージは、図１に示した負荷分散装置２１０のネットワーク通信処理部２１１を介して、振分処理部２１２に渡される。この振分処理部２１２により、上述した要求メッセージは、振分管理テーブル２１３に保持された情報に基づいて、適切なフロントエンドサーバ２２０に振り分けられ、システム内通信処理部２１５およびシステム内ネットワークを介して割当先のフロントエンドサーバ２２０に渡される。
【００２３】
図１に示した振分管理テーブル２１３には、図２(ａ)に示すように、サービスの要求元のクライアントに関する情報(クライアントアドレスおよびクライアントポート)と割当先のサーバに関する情報(サーバアドレスおよびサーバポート)とが格納されており、また、サーバリスト２１４には、サーバシステムに備えられた各フロントエンドサーバ２２０に関する情報(サーバアドレス、サーバポート、動作状況および負荷状況)が格納されている。
【００２４】
上述した各フロントエンドサーバ２２０に関する情報は、図１に示した状態情報収集部２１６により、システム内通信処理部２１５を介して収集され、サーバリスト２１４に反映される。また、この状態情報収集部２１６は、フロントエンドサーバ２２０のいずれかにおける障害の検出に応じて、図１に示したサーバ割当処理部２１７に障害を検出した旨を通知し、このサーバ割当処理部２１７による振分管理テーブル２１３の更新処理(後述する)を起動する。
【００２５】
次に、上述した負荷分散装置２１０による要求メッセージの処理にかかわる動作について説明する。
図３に、負荷分散装置の動作を表す流れ図を示す。また、図４に、クライアントとサーバシステムとの間の要求／応答メッセージの授受に関するシーケンス図を示す。
要求メッセージの受信に応じて（図３のステップ３０１）、図１に示した振分処理部２１２は、まず、振分管理テーブル２１３を参照し、受信した要求メッセージの発信元のクライアント２０１について、既に振分管理テーブル２１３に割当先のフロントエンドサーバ２２０が登録されているか否かを判定する(ステップ３０２)。
【００２６】
例えば、図４に符号Ｃ２で示したクライアント２０１から初めてサーバシステムへの要求メッセージ(図４において、符号Ｒｅｑ(Ｃ２)１を付して示す)が到達した場合に、このクライアント２０１に対応するフロントエンドサーバ２２０は上述した振分管理テーブル２１３に未登録であると判定される(ステップ３０２の否定判定)。このとき、振分処理部２１２からの依頼に応じて、サーバ割当処理部２１７により、要求メッセージの発信元のクライアントに適切なフロントエンドサーバを割り当てる処理が行われる(ステップ３０３)。
【００２７】
このとき、サーバ割当処理部２１７は、例えば、サーバリスト２１４を参照し、動作中であって最も処理負荷が小さいフロントエンドサーバ２２０(例えば、図２(ｂ)に示したフロントエンドサーバ(Ｓ１))を選択して新たな要求メッセージの発信元のクライアント２０１(Ｃ２)に割り当てることができる。
この割当結果は、振分管理テーブル２１３に追加され(図３のステップ３０４および図３(ａ)参照)、このようにして新たに登録された情報に基づいて、上述した要求メッセージは、振分処理部２１２により、システム内通信処理部２１５を介して割当先のフロントエンドサーバ２２０に送信され(図３のステップ３０５および図４参照)、そのフロントエンドサーバ２２０の処理に供される。
【００２８】
図５に、本発明にかかわるフロントエンドサーバの詳細構成を示す。
図５に示したフロントエンドサーバ２２０１，２２０２〜２２０ｍは、いずれも同等の構成を備えており、図５においては、フロントエンドサーバ２２０１の詳細構成のみを代表して示した。
図５に示したフロントエンドサーバ２２０において、受付処理部２２２は、通信処理部２２１を介して受け取った要求メッセージに、必要に応じて、後述するセッションＩＤを付与してセッション管理テーブル２２３への登録あるいは状況復元部２２６による内部状態の復元処理(後述する)を指示した上で、サービス処理部２２４の処理に供する。また、図５に示した履歴更新部２２５は、受付処理部２２２によって受け付けられた要求メッセージに関する履歴情報を後述するようにしてセッションごとに生成し、通信処理部２２１を介して履歴管理サーバ２３０に送出する。
【００２９】
図６に、フロントエンドサーバの動作を表す流れ図を示す。また、図７に、履歴管理処理を説明する図を示す。
図５に示した負荷分散装置２１０を介してフロントエンドサーバ２２０１に渡された要求メッセージの受信に応じて(図６のステップ３１１)、受付処理部２２２は、まず、この要求メッセージにセッションＩＤが含まれているか否かを判定する(図６のステップ３１２)。
【００３０】
例えば、図４に示したようにして、負荷分散装置２１０を介してフロントエンドサーバ２２０１に渡された最初の要求メッセージ(図４において符号Ｒｅｑ(Ｃ２)１を付して示した)には、まだ、フロントエンドサーバ２２０側でセッションＩＤが付与されていないので、ステップ３１２の否定判定となり、受付処理部２２２により、新規のセッションＩＤの割り当てが行われる(ステップ３１３)。このとき、受付処理部２２２は、フロントエンドサーバ２２０内で一意のサーバ内ＩＤ(Ｓｅ１)と個々のフロントエンドサーバ２２０にあらかじめ設定されたサーバＩＤ(Ｓ１)とからなるセッションＩＤを上述した要求メッセージの発信元のクライアント２０１に割り当て、このセッションＩＤをセッション管理テーブル２２３に登録するとともに(ステップ３１４)、上述したセッションＩＤを付加した要求メッセージをサービス処理部２２４の処理に供する。
【００３１】
これに応じて、図５に示したサービス処理部２１４により、要求メッセージに応じた処理が実行され(ステップ３１５)、この処理に応じた内部状態の変化が、セッション管理テーブル２２３のセッションＩＤに対応する内部状態に関する登録内容に反映される（図７（ａ）参照）。
ステップ３１５において処理された要求メッセージがセッションの終了を要求する要求メッセージでなかった場合に(ステップ３１６の否定判定)、履歴更新部２２５は、受付処理部２２２からサービス処理部２２４に渡されたセッションＩＤを含む要求メッセージを履歴情報として通信処理部２２１を介して履歴管理サーバ２３０に送出する(ステップ３１７)。このようにして履歴管理サーバ２３０に渡された履歴情報は、図７(ｂ)に示すように、サーバＩＤとサーバ内ＩＤとからなるセッションＩＤごとに順次に蓄積される。
【００３２】
その後、図５に示したサービス処理部２２４により、上述したセッションＩＤを含んだ応答メッセージが送出され（図６のステップ３１８）、フロントエンドサーバ２２０における要求メッセージに対応する処理は終了する。
一方、上述したようにしてフロントエンドサーバ２２０から返された応答メッセージは、図４において符号Ｒｅｓ(Ｃ２)１を付して示すように、負荷分散装置２１０に渡され、これに応じて、負荷分散装置２１０における処理が再開される。
【００３３】
このようにして、要求元のクライアント２０１によって要求メッセージが送出されてから所定の時間内に割当先のフロントエンドサーバ２２０から応答メッセージが返されると、図１に示した負荷分散装置２１０において、振分処理部２１２は、図３に示したステップ３０６の肯定判定として、ステップ３０７に進む。このとき、振分処理部２１２は、システム内通信処理部２１５を介して受け取ったセッションＩＤを含む応答メッセージを、ネットワーク通信処理部２１１を介して要求元のクライアント２０１に送出して(ステップ３０７および図４参照)、図３に示したステップ３０１で受け取った要求メッセージに対応する処理を終了する。
【００３４】
このようにしてクライアント２０１に応答メッセージとともにセッションＩＤが通知され、以降は、クライアント２０１により、継続するサービスに関する要求メッセージにこのセッションＩＤが付加される。
例えば、上述したようにしてサーバＩＤ(Ｓ１)とサーバ内ＩＤ(Ｓｅ１)とからなるセッションＩＤが要求元のクライアント(Ｃ２)２０１に通知された後、このクライアント２０１から同一のサービスに関連して送出される要求メッセージには、上述したセッションＩＤ(Ｓ１：Ｓｅ１)が、例えば、ヘッダに続くメッセージの先頭に付加された上で送出される(図４において、符号Ｒｅｑ(Ｃ２)２(Ｓ１；Ｓｅ１)を付して示した)。
【００３５】
このように、既に割当先が登録されたクライアント２０１を発信元とする要求メッセージの受信に応じて(図３のステップ３０２の肯定判定)、図１に示した負荷分散装置２１０の振分処理部２１２により、上述したステップ３０３，３０４がスキップされ、振分管理テーブル２１３に登録された情報に従って、セッションＩＤを含む要求メッセージがシステム内通信処理部２１５を介して振分先のフロントエンドサーバ２２０に送信される(ステップ３０５および図４参照)。
【００３６】
セッションＩＤを含む要求メッセージがフロントエンドサーバ２２０の通信処理部２２１に到達すると、受付処理部２２２は、図６に示したステップ３１２の肯定判定としてステップ３１９に進み、セッション管理テーブル２２３から要求メッセージに含まれたセッションＩＤを検索する。
上述したステップ３１３においてセッションＩＤを割り当てたクライアント２０１から継続しているサービスに関する新たな要求メッセージを受信した場合には、この要求メッセージに含まれているセッションＩＤは、セッション管理テーブル２２３に既に登録されている(ステップ３２０の肯定判定)。この場合に、この要求メッセージは、そのままサービス処理部２２４の処理に供され(ステップ３１５)、また、この要求メッセージに応じてセッションが終了されない限り、履歴更新部２２５により、履歴管理サーバ２３０に送出され(ステップ３１７)、このセッションＩＤに対応する履歴情報が追加される。
【００３７】
このようにして、各フロントエンドサーバ２２０が正常に動作を続けていく限りは、各クライアント２０１に個々のフロントエンドサーバ２２０が割り当てたセッションＩＤに対応して、各クライアント２０１から送出された要求メッセージがそれぞれのセッションに対応する処理に関する履歴情報として蓄積されていく(図７(ｂ)参照)。また、これらの各フロントエンドサーバ２２０のサービス処理部２２４における処理の進行に伴う内部状態の変化は、随時に、各フロントエンドサーバ２２０に備えられたセッション管理テーブル２２３のセッションＩＤに対応する内部状態に関する記録内容に反映される(図７(ａ)参照)。
【００３８】
ところで、上述したようにしてフロントエンドサーバ２２０に到達した要求メッセージの処理中にフロントエンドサーバ２２０に障害が発生すると、要求メッセージの到達から所定に時間内に応答メッセージが負荷分散装置２１０に返されないために、図３に示したステップ３０６の否定判定となる。
このとき、状態情報収集部２１６は、振分先のフロントエンドサーバ２２０に障害が発生したと判断し、まず、サーバリスト２１４の該当するフロントエンドサーバ２２０に対応する動作状況に判断結果を反映する(ステップ３０８)。
【００３９】
例えば、クライアント識別Ｃ２で示されるクライアント２０１２からのｋ番目の要求メッセージ(図４において、符号Ｒｅｑ(Ｃ２)ｋ(Ｓ１；Ｓｅ１)を付して示す)に対応するフロントエンドサーバ２２０１からの応答メッセージが所定時間内に到達しなかった場合に、状態情報収集部２１６は、このフロントエンドサーバ２２０１が障害発生のため停止中であると判断し、図２(ｂ)に示すように、フロントエンドサーバ(Ｓ１)２２０１に対応する動作状況を動作中から停止中に更新する。
【００４０】
また、この状態情報収集部２１６からの通知に応じて、割当処理部２１７により、再び、割当先のフロントエンドサーバ２２０が決定される(ステップ３０３)。このとき、割当処理部２１７は、例えば、サーバリスト２１４を参照し、動作中であることが示されているフロントエンドサーバ２２０の中から最も負荷状況が軽いフロントエンドサーバ２２０(例えば、サーバアドレスＳＡ２で示されるフロントエンドサーバ２２０２)を新たな割当先として決定することができる。このような割り当ての変更に伴って、図２(ａ)に示すように、クライアントアドレスＣＡ２で示されるクライアント２０１２に対応するサーバアドレスおよびサーバポートは、それぞれ括弧を付して示すように、サーバアドレスＳＡ２およびサーバポートＰ(ｓ２)に更新される(図３のステップ３０４)。
【００４１】
このようにして更新された振分管理テーブル２１３に基づいて、振分処理部２１２により、新たに決定された振分先のフロントエンドサーバ（Ｓ２）２２０２に、図４に示すように、フロントエンドサーバ２２０１を示すサーバＩＤ(Ｓ１)とサーバ内ＩＤ(Ｓｅ１)とからなるセッションＩＤを含む要求メッセージ(Ｒｅｑ(Ｃ２)ｋ(Ｓ１；Ｓｅ１))が送信される(ステップ３０５)。
【００４２】
このようにして、障害が発生したフロントエンドサーバ２２０１を振分先とする要求メッセージの受信に応じて、新たな振分先(例えば、フロントエンドサーバ２２０２)を決定し、この新たな振分先のフロントエンドサーバ２２０に、クライアント２０１から受信した要求メッセージを渡すことができる。
このようにして新たな振分先となったフロントエンドサーバ(Ｓ２)２２０２に渡された要求メッセージに含まれているセッションＩＤは、このフロントエンドサーバ(Ｓ２)２２０２に備えられたセッション管理テーブル２２３には登録されていない(図６に示したステップ３２０の否定判定)。この場合に、図５に示した受付処理部２２２により、状況復元部２２６に対して、セッション管理テーブル２２３に未登録とされたセッションＩＤに関する内部状態の復元処理が指示し、これに応じて、状況復元部２２６により、通信処理部２２１を介して履歴管理サーバ２３０からこのセッションＩＤに対応して蓄積された履歴情報を取得する処理が行われる(図６のステップ３２１)。
【００４３】
このとき、状況復元部２２６により、通信処理部２２１を介して履歴管理サーバ２３０にセッションＩＤ(例えば、セッションＩＤ(Ｓ１；Ｓｅ１))を指定して対応する履歴情報の転送が依頼され、これに応じて、履歴管理サーバ２３０により、上述したセッションＩＤに対応して蓄積された最初の要求メッセージから既に処理が完了している最後の要求メッセージ(例えば、ｋ−１番目の要求メッセージ)までからなる履歴情報がシステム内ネットワークを介して依頼元のフロントエンドサーバ(Ｓ２)２２０２に転送される(図４および図７(ｂ)参照)。
【００４４】
このようにして取得された履歴情報は、状況復元部２２６により、順次にサービス処理部２２４に渡され、これに応じて、サービス処理部２２４が要求メッセージに応じた処理を順次に実行することにより、障害が発生したフロントエンドサーバ２２０(例えば、サーバ識別Ｓ１で示されるフロントエンドサーバ２２０１)におけるクライアント２０１１に関する処理についての内部状態が、このクライアント２０１１に割り当てられたセッションＩＤも含めて完全に復元される(図６のステップ３２２)。
【００４５】
また、この内部状態の復元処理と並行して、このフロントエンドサーバ２２０２のセッション管理テーブル２２３にセッションＩＤ(Ｓ１；Ｓｅ１))に対応する管理情報が追加され、この管理情報に含まれる内部状態も随時に更新される(ステップ３２３)。
このようにして、セッション管理テーブル２２３の内容を含めて内部状態を完全に復元した後に、障害が発生したフロントエンドサーバ２２０１によって既にセッションＩＤが割り当てられたクライアント２０１２からの新たな要求メッセージ(Ｒｅｑ(Ｃ２)ｋ(Ｓ１：Ｓｅ１))の処理が、サーバＩＤ(Ｓ２)で示されるフロントエンドサーバ２２０２によって引き継いで実行される(ステップ３１５)。また、このようにしてフロントエンドサーバ２２０２に引き継がれたセッションＩＤを含む要求メッセージは、このセッションＩＤで示されるセッションにかかわる処理の履歴情報として、フロントエンドサーバ２２０２の履歴更新部２２５から履歴管理サーバ２３０に渡され(図６のステップ３１７および図４参照)、該当するセッションＩＤに対応する履歴情報の追加される(図７(ｂ)参照)。
【００４６】
このように、本発明にかかわる負荷分散装置２１０の処理は、多数のクライアント２０１から入力される要求メッセージを複数のフロントエンドサーバ２２０１〜２２０ｍに振り分ける処理に集約されている。そして、サーバシステムを構成する複数のフロントエンドサーバ２２０のいずれかに障害が発生した際に、他のフロントエンドサーバ２２０によって処理を引き継ぐために必要となる状態復元処理は、引継ぎ先の各フロントエンドサーバ２２０において分散して行われている。
【００４７】
つまり、各フロントエンドサーバ２２０において、負荷分散装置２１０によって振り分けられた要求メッセージに対応する処理を行う過程で、要求メッセージに含まれるセッションＩＤに基づいて、受け取った要求メッセージが他のフロントエンドサーバ２２０から振り替えられた処理にかかわっているか否かを判定し、必要に応じて、履歴管理サーバ２３０においてセッションＩＤに対応して管理されている履歴情報を取得することにより、他のフロントエンドサーバ２２０における内部状態が、要求メッセージを受け取ったフロントエンドサーバ２２０において復元される。
【００４８】
これにより、個々のフロントエンドサーバ２２０が独立にクライアント２０１に割り当てるセッションＩＤを含めた内部状態を完全に復元し、障害が発生したフロントエンドサーバ２２０の処理を他のフロントエンドサーバ２２０によって完璧に引き継ぐことができる。
このように、本発明にかかわるサーバシステムは、サーバシステムを構成する複数のフロントエンドサーバ２２０のいずれかに障害が発生したときにも、個々のクライアント２０１を区別するサービスを確実に維持することが可能であり、このようなサービスを提供するサーバシステムの可用性を大幅に向上することができる。
【００４９】
上述したようにしてサービスに関する処理を継続していき、要求メッセージによってセッションの終了が指示された場合に(図６に示したステップ３１６の肯定判定)、図５に示した履歴更新部２２５により、終了されるセッションを示すセッションＩＤに対応する履歴情報の削除が、通信処理部２２１を介して履歴管理サーバ２３０に指示され、これに応じて、履歴管理サーバ２３０において履歴情報の削除が実行される(ステップ３２４)。また、このとき、セッション管理テーブル２２３の該当する管理情報も削除される(ステップ３２５)。
【００５０】
このようにして、セッションの終了に応じて、そのセッションにかかわる管理情報および履歴情報を削除して、それぞれの格納に用いられていたセッション管理テーブル２２３および履歴管理サーバ２３０の記憶領域を解放することにより、各フロントエンドサーバ２２０および履歴管理サーバ２３０に備えられた資源を有効に利用することができる。
また、本発明にかかわるサーバシステムでは、各フロントエンドサーバ２２０がクライアント２０１に割り当てるセッションＩＤを、個々のフロントエンドサーバ２２０を識別するサーバＩＤとフロントエンドサーバ２２０内で一意のサーバ内ＩＤとの組み合わせによって示すことにより、フロントエンドサーバ２２０の増設などに柔軟に対応可能となっており、十分なスケーラビリティも備えている。
（第２の実施形態）
図８に、本発明にかかわるサーバシステムの第２の実施形態を示す。
【００５１】
なお、図８に示す構成要素のうち、図１および図５に示した各部と同等のものについては、図１および図５に示した符号を付して示し、その説明を省略する。
図８に示したサーバシステムは、Ｌ個の履歴管理サーバ２３０１〜２３０Ｌを備え、また、フロントエンドサーバ２２０は、図５に示した各部に加えて、履歴管理サーバリスト２２７を備えて構成されている。
【００５２】
この履歴管理サーバリスト２２７は、例えば、図９に示すように、サーバシステムを構成する各フロントエンドサーバ２２０のサーバＩＤ(Ｓ１、…、Ｓｍ)に対応して、それぞれの履歴情報の格納先として割り当てられた履歴管理サーバのアドレス(ＲＡ１、…、ＲＡＬ)が格納されている。
また、図８に示した履歴更新部２２５は、受付処理部２２２がサービス処理部２２４に渡した要求メッセージに付加されているセッションＩＤに含まれるサーバＩＤに基づいて、履歴管理サーバリスト２２７から履歴管理サーバ２３０のアドレスを検索し、得られたアドレスを転送先として通信処理部２２１に履歴情報の転送を依頼する。
【００５３】
一方、状況復元部２２６は、受付処理部２２２から受け取ったセッションＩＤに含まれるサーバＩＤに基づいて、同様にして、取得すべき履歴情報が蓄積されている履歴管理サーバ２３０のアドレスを履歴管理サーバリスト２２７から検索し、通信処理部２２１を介して、得られたアドレスで示される履歴管理サーバ２３０に対して、履歴情報の転送を依頼する。
【００５４】
このようにして、サーバシステムを構成する複数のフロントエンドサーバ２２０に関する履歴情報を複数の履歴管理サーバ２３０に分散して蓄積し、また、このように分散して蓄積された履歴情報を必要に応じて、各フロントエンドサーバ２２０に転送することができる。
これにより、多数のフロントエンドサーバ２２０を備えたサーバシステムにおける履歴情報をきわめて容易に管理することができるので、サーバシステムのスケーラビリティを更に向上し、より多数のクライアントに様々なサービスを提供する大規模なネットワークサービスシステムにも容易に適用することができる。
【産業上の利用可能性】
【００５５】
上述したように、本発明にかかわるサーバシステムは、個々のクライアントの識別が不可欠なサービスについても確実な動作を保証な可能な高度な可用性とともに、小規模のシステムから多数のフロントエンドサーバを擁する大規模なシステムまで柔軟に対応可能なスケーラビリティを備えている。また、障害が発生したフロントエンドサーバに割り当てられていたクライアントをクライアント単位で他のフロントエンドサーバに割り当てる仕組みおよび不要になった履歴情報を適宜削除する仕組みを備えることにより、サーバシステムが備えるべき処理マージンを削減することができるので、ネットワークサービスシステムを必要最小限の導入コストで提供することができる。
【００５６】
このような特徴は、多種多様なサービスを様々な規模のターゲットに提供するネットワークサービスのためのサーバシステムにおいて非常に有用である。
特に、映像や音楽配信のように、ストリームデータを配信するサービスのように、個々のクライアントの識別が必要不可欠なサービスについて、高度な可用性を保証可能としたことで、このようなネットワークサービスの分野におけるシステムの信頼性の向上に大きく寄与することは明らかである。
【図面の簡単な説明】
【００５７】
【図１】本発明にかかわるサーバシステムの第１の実施形態を示すである。
【図２】振分処理を説明する図である。
【図３】負荷分散装置の動作を表す流れ図である。
【図４】要求／応答メッセージの授受に関するシーケンス図である。
【図５】本発明にかかわるフロントエンドサーバの詳細構成を示す図である。
【図６】フロントエンドサーバの動作を表す流れ図である。
【図７】履歴管理処理を説明する図である。
【図８】本発明にかかわるサーバシステムの第２の実施形態を示す図である。
【図９】履歴管理サーバリストの例を示す図である。
【符号の説明】
【００５８】
２０１  クライアント
２１０  負荷分散装置
２１１  ネットワーク通信処理部
２１２  振分処理部
２１３  振分管理テーブル
２１４  サーバリスト
２１５  システム内通信処理部
２１６  状態情報収集部
２１７  サーバ割当処理部
２２０  フロントエンドサーバ
２２１  通信処理部
２２２  受付処理部
２２３  セッション管理テーブル
２２４  サービス処理部
２２５  履歴更新部
２２６  状況復元部
２２７  履歴管理サーバリスト
２３０  履歴管理サーバ
【図１】
2007316837.tif 000003
【図２】
2007316837.tif 000004
【図３】
2007316837.tif 000005
【図４】
2007316837.tif 000006
【図５】
2007316837.tif 000007
【図６】
2007316837.tif 000008
【図７】
2007316837.tif 000009
【図８】
2007316837.tif 000010
【図９】
2007316837.tif 000011