(57)【要約】【課題】データ移行時における障害の波及範囲を抑制すること。【解決手段】運用データ群を処理可能な複数のサーバを制御する制御装置は、サーバ数と、１グループ内に最小限必要なサーバ数である最小台数と、に基づいて、サーバが所属するグループの数を算出し、１以上のグループの中から、サーバの所属先グループを決定し、運用データ群の中から、決定された所属先グループに割り当てる運用データを決定し、所属先グループに割り当てられた運用データの割当先を、所属先グループに所属する最小台数以上のサーバのいずれかに決定し、かつ、所属先グループに割り当てられた運用データの複製である冗長データの割当先を、当該冗長データの複製元である運用データの割当先のサーバとは異なるサーバに決定し、当該決定結果に基づいて、複数のサーバに運用データ群および冗長データ群を割り当てる。【選択図】図８
2015207150.tif 000002
【特許請求の範囲】
【請求項１】
運用中のデータ群である運用データ群を処理可能な複数のデータ処理装置を制御する制御装置であって、
前記制御装置は、プログラムを実行するプロセッサと、前記プログラムを記憶するメモリと、を有し、
前記プロセッサは、
前記データ処理装置の台数と、１グループ内に最小限必要な前記データ処理装置の台数である最小台数と、に基づいて、前記データ処理装置が所属するグループの数を算出する算出処理と、
前記算出処理によって算出された前記グループの数より特定される１以上のグループの中から、前記データ処理装置の所属先グループを決定する第１の決定処理と、
前記運用データ群の中から、前記第１の決定処理によって決定された所属先グループに割り当てる運用データを決定する第２の決定処理と、
前記第２の決定処理によって前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定する第３の決定処理と、
前記第２の決定処理および前記第３の決定処理による決定結果に基づいて、前記複数のデータ処理装置に前記運用データ群および前記冗長データの集合である冗長データ群を割り当てる割当処理と、
を実行することを特徴とする制御装置。
【請求項２】
前記第１の決定処理では、前記プロセッサは、前記算出処理によって算出された前記グループの数より特定される１以上のグループの中から、前記データ処理装置の台数の差が前記グループ間で最小となるように前記データ処理装置の所属先グループを決定することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第２の決定処理では、前記プロセッサは、前記運用データの割当数の差が前記グループ間で最小となるように、前記運用データ群の中から前記所属先グループに割り当てる運用データを決定することを特徴とする請求項１または２に記載の制御装置。
【請求項４】
前記第３の決定処理では、前記プロセッサは、前記運用データの割当数の差が前記所属先グループ内の前記データ処理装置間で最小となるように、前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項５】
前記第３の決定処理では、前記プロセッサは、前記冗長データの割当数の差が前記所属先グループ内の前記データ処理装置間で最小となるように、前記所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項６】
前記第３の決定処理では、前記プロセッサは、前記所属先グループに所属する前記最小台数以上の第１の処理性能を有する第１のデータ処理装置が前記第１の処理性能よりも低い第２の処理性能を有する第２のデータ処理装置よりも前記運用データの割当数が多くなるように、前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項７】
前記第１の決定処理では、前記プロセッサは、前記データ処理装置が追加された場合、前記１以上のグループの各々のグループに所属する前記データ処理装置の所属台数に基づいて、前記１以上のグループの中から、追加されたデータ処理装置の所属先グループを決定し、
前記第３の決定処理では、前記プロセッサは、前記追加されたデータ処理装置の所属先グループに割り当てられている運用データの割当先を、前記追加されたデータ処理装置の所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記追加されたデータ処理装置の所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記追加されたデータ処理装置の所属先グループに所属する前記最小台数以上のデータ処理装置のうち、前記冗長データの複製元である冗長データの割当先のデータ処理装置とは異なるデータ処理装置に決定し、
前記割当処理では、前記プロセッサは、前記第２および第３の決定処理による決定結果に基づいて、前記追加されたデータ処理装置を含む前記複数のデータ処理装置に前記運用データ群および前記冗長データ群を割り当てることを特徴とする請求項１に記載の制御装置。
【請求項８】
前記プロセッサは、
前記データ処理装置が追加されたことにより、追加されたデータ処理装置の所属先グループにおける前記データ処理装置の所属台数が、前記最小台数以上である上限台数を超えた場合、前記追加されたデータ処理装置の所属先グループを第１のグループと第２のグループに分割する分割処理を実行し、
前記第１の決定処理では、前記プロセッサは、前記分割処理によって分割された前記第１および第２のグループの中から、前記追加されたデータ処理装置の所属先グループに所属するデータ処理装置の所属先グループを決定し、
前記第２の決定処理では、前記プロセッサは、前記追加されたデータ処理装置の所属先グループに割り当てられていた運用データの中から、前記第１および第２のグループの各々に割り当てる運用データを決定し、
前記第３の決定処理では、前記プロセッサは、前記第２の決定処理によって決定された前記第１のグループに割り当てる運用データの割当先を、前記第１のグループに所属するいずれかのデータ処理装置に決定し、前記第２のグループに割り当てる運用データの割当先を、前記第２のグループに所属するいずれかのデータ処理装置に決定し、かつ、前記第１のグループに割り当てる運用データの複製である冗長データの割当先を、前記第１のグループに所属するデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定し、前記第２のグループに割り当てる運用データの複製である冗長データの割当先を、前記第２のグループに所属するデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項９】
前記第３の決定処理では、前記プロセッサは、前記１以上のグループのいずれかのグループに所属するデータ処理装置が削除された場合、前記いずれかのグループに割り当てられていた運用データの割当先を、前記いずれかのグループに所属する残余のデータ処理装置に決定し、かつ、前記いずれかのグループに割り当てられていた運用データの複製である冗長データの割当先を、前記残余のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項１０】
前記プロセッサは、
前記１以上のグループのいずれかのグループに所属するデータ処理装置が削除されたことにより、前記いずれかのグループにおける前記データ処理装置の所属台数が、前記最小台数未満になった場合、前記いずれかのグループを他のグループに併合する併合処理を実行し、
前記第３の決定処理では、前記プロセッサは、前記いずれかのグループおよび前記他のグループに割り当てられていた運用データの割当先を、前記併合処理によって併合されたグループに所属するデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記いずれかのグループおよび前記他のグループに割り当てられていた運用データの複製である冗長データの割当先を、前記併合されたグループに所属するデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定することを特徴とする請求項１に記載の制御装置。
【請求項１１】
前記プロセッサは、
前記併合されたグループにおける前記データ処理装置の所属台数が、前記最小台数以上である上限台数を超えた場合、前記併合されたグループを第１のグループと第２のグループに分割する分割処理を実行し、
前記第１の決定処理では、前記プロセッサは、前記分割処理によって分割された前記第１および第２のグループの中から、前記データ処理装置の台数の差が前記第１および第２のグループ間で最小となるように、前記併合されたグループに所属するデータ処理装置の所属先グループを決定し、
前記第２の決定処理では、前記プロセッサは、前記併合されたグループに割り当てられていた運用データの中から、前記第１および第２のグループの各々に割り当てる運用データを決定し、
前記第３の決定処理では、前記プロセッサは、前記第２の決定処理によって決定された前記第１のグループに割り当てる運用データの割当先を、前記第１のグループに所属するいずれかのデータ処理装置に決定し、前記第２のグループに割り当てる運用データの割当先を、前記第２のグループに所属するいずれかのデータ処理装置に決定し、かつ、前記第１のグループに割り当てる運用データの複製である冗長データの割当先を、前記第１のグループに所属するデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定し、前記第２のグループに割り当てる運用データの複製である冗長データの割当先を、前記第２のグループに所属するデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定することを特徴とする請求項１０に記載の制御装置。
【請求項１２】
前記制御装置は、前記複数のデータ処理装置外において前記冗長データ群を記憶する記憶装置にアクセス可能であることを特徴とする請求項１に記載の制御装置。
【請求項１３】
運用中のデータ群である運用データ群を処理可能な複数のデータ処理装置と、前記複数のデータ処理装置を制御する制御装置と、を有する管理システムであって、
前記制御装置は、プログラムを実行するプロセッサと、前記プログラムを記憶するメモリと、を有し、
前記プロセッサは、
前記データ処理装置の台数と、１グループ内に最小限必要な前記データ処理装置の台数である最小台数と、に基づいて、前記データ処理装置が所属するグループの数を算出する算出処理と、
前記算出処理によって算出された前記グループの数より特定される１以上のグループの中から、前記データ処理装置の所属先グループを決定する第１の決定処理と、
前記運用データ群の中から、前記第１の決定処理によって決定された所属先グループに割り当てる運用データを決定する第２の決定処理と、
前記第２の決定処理によって前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定する第３の決定処理と、
前記第２の決定処理および前記第３の決定処理による決定結果に基づいて、前記複数のデータ処理装置に前記運用データ群および前記冗長データの集合である冗長データ群を割り当てる割当処理と、
を実行することを特徴とする管理システム。
【請求項１４】
運用中のデータ群である運用データ群を処理可能な複数のデータ処理装置を制御する制御装置による制御方法であって、
前記制御装置は、プログラムを実行するプロセッサと、前記プログラムを記憶するメモリと、を有し、
前記プロセッサは、
前記データ処理装置の台数と、１グループ内に最小限必要な前記データ処理装置の台数である最小台数と、に基づいて、前記データ処理装置が所属するグループの数を算出する算出処理と、
前記算出処理によって算出された前記グループの数より特定される１以上のグループの中から、前記データ処理装置の所属先グループを決定する第１の決定処理と、
前記運用データ群の中から、前記第１の決定処理によって決定された所属先グループに割り当てる運用データを決定する第２の決定処理と、
前記第２の決定処理によって前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定する第３の決定処理と、
前記第２の決定処理および前記第３の決定処理による決定結果に基づいて、前記複数のデータ処理装置に前記運用データ群および前記冗長データの集合である冗長データ群を割り当てる割当処理と、
を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御する制御装置、管理システム、および制御方法に関する。
【背景技術】
【０００２】
従来、複数のサーバに処理を分散させ、負荷の増加やサーバの増減設により、サーバ間で処理の分担を再構成する分散処理システムが開示されている（下記特許文献１）。特許文献１のデータ負荷分散配置システムは、サーバ配置装置は、ＤＢサーバごとに、負荷とサーバ閾値との差の絶対値を計算し、負荷がサーバ閾値以下のサーバＳ−の集合と、負荷がサーバ閾値を超えるサーバＳ＋の集合とを生成する。そして、サーバＳ＋のうち、絶対値が大きいＤＢサーバから順に、ハッシュ空間上の担当領域の超過分に対して、サーバＳ−のサーバを配置することにより、サーバ担当データ情報を生成する。各ＤＢサーバは、サーバ配置装置が生成したサーバ担当データ情報に基づき、自身が保存するデータを、他のＤＢサーバと交換する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２３８０８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、複数のＤＢサーバ間で、負荷分散のための担当割当処理を実行する。ＤＢサーバを追加する場合、負荷を軽減するためにクラスタを構築する全所属サーバから処理の一部を引き継ぎ、引き継ぐデータを他のＤＢサーバから移動する必要がある。逆に、ＤＢサーバを削除する場合、削除したＤＢサーバの処理を、残存するＤＢサーバで肩代わりする必要がある。また、残存するＤＢサーバで冗長系を再構築するために、運用データの複製である冗長データを他のＤＢサーバに配置する必要があり、ＤＢサーバ間でデータの移動が発生する。
【０００５】
ＤＢサーバの追加時、削除時のデータ移動に対して、クラスタを構成するすべてのＤＢサーバが関与する。データ移動は障害により正常に実行されない可能性がある。たとえば、データ移動の障害の具体例として、ＤＢサーバ間の接続回線ケーブルの切断や不良によりデータ移動が中断されてしまう例がある。また、プログラムの不具合により増設したＤＢサーバが受信したデータの引き継ぎ処理を正常に実行することができず、増設したＤＢサーバが正常にサービス処理を開始しない例がある。したがって、データ移動に障害が発生した場合、すべてのＤＢサーバに障害の影響が波及し、最悪の場合、すべてのＤＢサーバが停止する。
【０００６】
本発明は、データ移行時における障害の波及範囲を抑制することを目的の一つとする。
【課題を解決するための手段】
【０００７】
本願において開示される発明の一側面となる制御装置は、運用中のデータ群である運用データ群を処理可能な複数のデータ処理装置を制御する制御装置であって、プログラムを実行するプロセッサと、前記プログラムを記憶するメモリと、を有し、前記プロセッサは、前記データ処理装置の台数と、１グループ内に最小限必要な前記データ処理装置の台数である最小台数と、に基づいて、前記データ処理装置が所属するグループの数を算出する算出処理と、前記算出処理によって算出された前記グループの数より特定される１以上のグループの中から、前記データ処理装置の所属先グループを決定する第１の決定処理と、前記運用データ群の中から、前記第１の決定処理によって決定された所属先グループに割り当てる運用データを決定する第２の決定処理と、前記第２の決定処理によって前記所属先グループに割り当てられた運用データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のいずれかのデータ処理装置に決定し、かつ、前記所属先グループに割り当てられた運用データの複製である冗長データの割当先を、前記所属先グループに所属する前記最小台数以上のデータ処理装置のうち、当該冗長データの複製元である運用データの割当先のデータ処理装置とは異なるデータ処理装置に決定する第３の決定処理と、前記第２および第３の決定処理による決定結果に基づいて、前記複数のデータ処理装置に前記運用データ群および前記冗長データの集合である冗長データ群を割り当てる割当処理と、を実行することを特徴とする。
【発明の効果】
【０００８】
本発明の代表的な実施の形態によれば、データ移行時における障害の波及範囲を抑制することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１にかかるサーバ増設例を示す説明図である。
【図２】実施例１にかかるサーバ減設例を示す説明図である。
【図３】実施例１にかかる管理システムのシステム構成例を示すブロック図である。
【図４】負荷分散装置によるセッション群番号の決定処理およびパケットの割当処理を示す説明図である。
【図５】制御装置、負荷分散装置、およびサーバのハードウェア構成例を示すブロック図である。
【図６】冗長グループ情報の一例を示す説明図である。
【図７】セッション群情報の一例を示す説明図である。
【図８】制御装置による冗長グループの初期構成処理手順例を示すフローチャートである。
【図９】サーバ増設時の冗長グループの変更例を示す説明図である。
【図１０】サーバ増設前の冗長グループを示す説明図である。
【図１１】冗長グループ情報の更新例を示す説明図である。
【図１２】セッション群情報の更新例を示す説明図である。
【図１３】サーバ増設時のステート情報の組換え動作例１を示す説明図である。
【図１４】サーバ増設時のステート情報の組換え動作結果１を示す説明図である。
【図１５】対応情報の更新例１を示す説明図である。
【図１６】サーバ増設時のステート情報の組換え動作例２を示す説明図である。
【図１７】サーバ増設時のステート情報の組換え動作結果２を示す説明図である。
【図１８】制御装置による冗長グループ更新処理例１を示すフローチャートである。
【図１９】サーバ減設時の冗長グループの変更例を示す説明図である。
【図２０】サーバ減設前の冗長グループを示す説明図である。
【図２１】冗長グループ情報の更新例を示す説明図である。
【図２２】セッション群情報の更新例を示す説明図である。
【図２３】サーバ減設時のステート情報の組換え動作例１を示す説明図である。
【図２４】対応情報の更新例２を示す説明図である。
【図２５】サーバ減設時のステート情報の組換え動作例２を示す説明図である。
【図２６】図２５におけるサーバ減設時のステート情報の組換え動作結果を示す説明図である。
【図２７】制御装置による冗長グループ更新処理例２を示すフローチャートである。
【図２８】実施例２にかかる冗長グループを示す説明図である。
【図２９】実施例２におけるサーバ増減設によるステート情報の組換え例を示す説明図である。
【図３０】実施例３にかかる管理システムのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を用いて、本発明にかかる管理システムの実施例について説明する。以下の例では、管理システムの一例として、ゲートウェイシステムを例に挙げて説明する。なお、本明細書で「運用データ」とは現在扱われているデータである。また、「冗長データ」とは、運用データの複製データであり、たとえば、運用データのバックアップ用のデータとなる。
【実施例１】
【００１１】
（サーバ増設例）
図１は、実施例１にかかるサーバ増設例を示す説明図である。図１の左側がサーバ増設前の状態であり、右側がサーバ増設後の状態である。管理システム１００は、複数（図１では２個）の冗長グループ１０４−１，１０４−２を有する。冗長グループとは、冗長系を構成するデータ処理装置の一例であるサーバの集合である。なお、冗長グループの表記を、１０４−ｇとする。ｇは冗長グループ１０４−ｇを特定する番号であり、１＜ｇ≦Ｇとなる整数である。Ｇは冗長グループ１０４−ｇの総数であり、Ｇ≧１となる整数である。
【００１２】
また、管理システム１００は、複数のデータ処理装置となる複数のサーバを有する。図１の例では、管理システム１００において、冗長グループ１０４−１が３台のサーバ１０３−１〜１０３−３を有し、冗長グループ１０４−２が２台のサーバ１０３−４，１０３−５を有する。なお、サーバの表記を、１０３−ｊとする。ｊはサーバ１０３−ｊを特定する番号（サーバ番号）であり、１≦ｊ≦Ｎとなる整数である。Ｎはサーバ１０３−ｊの総数であり、Ｎ≧１となる整数である。なお、サーバ１０３−ｊは、物理マシンおよび仮想マシンのいずれでもよい。
【００１３】
各サーバ１０３−ｊは、運用データ集合Ｒ１−ｊと冗長データ集合Ｒ２−ｊを有する。運用データ集合Ｒ１−ｊは、１個以上の運用データの集合である。冗長データ集合Ｒ２−ｊは、１個以上の冗長データの集合である。「Ｒ１」が運用を示し、「Ｒ２」が冗長を示す。運用データおよび冗長データは、たとえば、管理システム１００を介して通信をおこなう装置間のセッション群のステート情報である。ステート情報とは、セッションの各々について、通信状況を示す情報である。ステート情報は、たとえば、一方の装置（たとえば、ユーザ端末）から他方の装置（たとえば、Ｗｅｂサーバ）への接続要求中やセッション確立のほか、一方の装置から他方の装置への転送量（パケット数）などである。
【００１４】
本例では、運用データであるセッション群ｐのステート情報をＳｐ−１と表記し、冗長データであるセッション群ｐのステート情報をＳｐ−２と表記する。すなわち、枝番の「１」が運用データ、「２」が冗長データを示す。ｐは、セッション群を特定する番号（セッション群番号）であり、たとえば、パケットから得られる特徴情報（たとえば、送信元アドレスや宛先アドレスのハッシュ値）である。すなわち、ハッシュ値が同一であるセッションの集合がセッション群となる。
【００１５】
サーバ１０３−ｊは、サーバ１０３−ｊが所属する冗長グループ１０４−ｇと同一冗長グループ１０４−ｇ内の他のサーバ１０３−ｋ（ｊ≠ｋ）が保持する運用データの冗長データを格納することにより、冗長系を構築する。サーバ１０３−１を例に挙げると、運用データ集合Ｒ１−１には、ステート情報Ｓ１−１，Ｓ４−１が格納され、冗長データ集合Ｒ２−１には、ステート情報Ｓ３−２，Ｓ５−２が格納される。ステート情報Ｓ３−２，Ｓ５−２の複製元である運用データはステート情報Ｓ３−１，Ｓ５−１であり、ステート情報Ｓ３−１，Ｓ５−１は、サーバ１０３−１または冗長グループ１０４−２には格納されておらず、それぞれ他のサーバ１０３−３，１０３−２に格納される。
【００１６】
また、いずれかの冗長グループ１０４−ｇにおいてサーバ１０３−（Ｎ＋１）が増設された場合、増設先の冗長グループ１０４−ｇ内において構成の組換えが実行される。構成の組換えとは、冗長グループ内１０４−ｇ内の追加サーバ１０３−（Ｎ＋１）を含めた全サーバ１０３−ｊに格納されている運用データ群および冗長データ群の割当先を組み換える処理である。
【００１７】
たとえば、上述したように、サーバ１０３−（Ｎ＋１）追加後の冗長グループ内１０４−ｇ内の各サーバ１０３−ｊは、それぞれ異なる運用データを運用データ集合Ｒ１−ｊに格納する。また、各サーバ１０３−ｊは、サーバ１０３−ｊが所属する冗長グループ１０４−ｇと同一冗長グループ１０４−ｇ内の他のサーバ１０３−ｋ（ｊ≠ｋ）が保持する運用データの冗長データを格納する。これにより、各サーバ１０３−ｊに冗長系が構築される。この場合、サーバ１０３−（Ｎ＋１）追加後のサーバ１０３−ｊ間で運用データ数および冗長データ数が均等になるように、追加前の運用データ群および冗長データ群が組み換えられる。
【００１８】
たとえば、図１の右側では、冗長グループ１０４−２にサーバ１０３−６が追加されたことにより、冗長グループ１０４−２内において構成の組換えが実行される。図１中、太矢印が運用データおよび冗長データの移行を示し、点線で示した太矢印の始端側の矩形が移行元の運用データおよび冗長データであり、移行により移行元の運用データ集合Ｒ１−ｊおよび冗長データ集合Ｒ２−ｊから削除される。太矢印の終端側の矩形が、移行元の運用データ集合Ｒ１−ｊおよび冗長データ集合Ｒ２−ｊから移行された運用データおよび冗長データである。
【００１９】
本例では、サーバ１０３−６追加前では、サーバ１０３−４，１０３−５はそれぞれ３個の運用データおよび３個の冗長データを格納していたが、サーバ１０３−６追加により、サーバ１０３−４〜１０３−６はそれぞれ２個の運用データおよび２個の冗長データを格納する。なお、運用データおよび冗長データの個数により均等にならない場合があるが、その場合は、たとえば、サーバ１０３−ｊ間で運用データ数および冗長データ数の差が最小となるように組み換えればよい。
【００２０】
このように、サーバ増設時における運用データおよび冗長データの組換え時における障害発生範囲を冗長グループ１０４−２に抑制することができ、冗長グループ１０４−１には、障害が波及しない。
【００２１】
図２は、実施例１にかかるサーバ減設例を示す説明図である。図２の左側がサーバ減設前の状態であり、右側がサーバ減設後の状態である。ここでは、図２の左側は、図１の右側と同一構成とし、冗長グループ１０４−２のサーバ１０３−５が、管理者の操作により、または、サーバ１０３−５の故障により減設される場合を例にあげて説明する。
【００２２】
サーバ１０３−５が減設されると、運用データ集合Ｒ１−５内のステート情報Ｓ８−１，Ｓ１０−１が冗長グループ１０４−２から削除されてしまう。したがって、管理システム１００では、減設サーバ１０３−５以外の他のサーバ１０３−４，１０３−６が、ステート情報Ｓ８−１，Ｓ１０−１の冗長データであるステート情報Ｓ８−２，Ｓ１０−２を運用データに組み換える。
【００２３】
具体的には、たとえば、図２の右側で示すように、サーバ１０３−４は、冗長データ集合Ｒ２−４のステート情報Ｓ８−２の所属属性を、冗長データ集合Ｒ２−４から運用データ集合Ｒ１−４に変更する。同様に、サーバ１０３−４は、冗長データ集合Ｒ２−６のステート情報Ｓ１０−２の所属属性を、冗長データ集合Ｒ２−６から運用データ集合Ｒ１−６に変更する。所属属性が変更された冗長データは運用データとなるため、符号の枝番は「１」となる。当該変更ではデータ転送がされず、所属属性を示す識別子が変更されるだけである。したがって、運用データへの組換えの高速化を図ることができる。
【００２４】
これにより、冗長グループ１０４−ｇ内のサーバ１０３−ｋが減設された場合、同一冗長グループ１０４−ｇ内のサーバ１０３−ｊが、冗長データ集合Ｒ２−ｊ内のサーバ１０３−ｋの冗長データ（ステート情報Ｓｐ−２）を運用データとして使用することで、サーバ１０３−ｋの処理を引き継ぐことにより、管理システム１００はサービス処理を継続する。このように、ある冗長グループ１０４−ｇ内での構成組換えが他の冗長グループに波及しないため、データ管理の安全性の向上を図ることができる。
【００２５】
＜システム構成例＞
図３は、実施例１にかかる管理システム１００のシステム構成例を示すブロック図である。管理システム１００は、制御装置１０１と、負荷分散装置１０２−ｉ（ｉは１≦ｉ≦Ｍとなる整数。Ｍは負荷分散装置の総数）と、冗長グループ１０４−ｇと、を有する。制御装置１０１、負荷分散装置１０２−ｉ、および複数の冗長グループ１０４−ｇは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ），ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ），インターネットなどのネットワークにより接続される。制御装置１０１は、管理システム１００全体を管理し、担当セッション群変更処理、障害復旧処理、および冗長系再構築処理を実行する。
【００２６】
担当セッション群変更処理とは、サーバ１０３−（Ｎ＋１）を増設する場合、既存のサーバ１０３−１〜１０３−Ｎから運用データであるステート情報Ｓｐ−１の一部を、増設したサーバ１０３−（Ｎ＋１）に移動し、増設したサーバ１０３−（Ｎ＋１）にデータ処理を引き継ぐ処理である。これにより、増設したサーバ１０３−（Ｎ＋１）を含めて負荷分散を図ることができる。
【００２７】
障害復旧処理とは、複数のサーバ１０３−１〜１０３−Ｎのうちあるサーバ１０３−ｊが故障した場合、サーバ１０３−ｋ（ｋ≠ｊ）が故障したサーバ１０３−ｊのデータ処理を引き継ぐ処理であり、これにより、管理システム１００はサービス処理を継続することができる。
【００２８】
冗長系再構築処理とは、サーバ１０３−ｊの増減設に応じて、冗長データであるステート情報Ｓｐ−２の構成組換えを実行し、冗長系を再構築する処理である。たとえば、サーバ１０３−（Ｎ＋１）を増設した場合、管理システム１００は、冗長系再構築処理により、サーバ１０３−１〜１０３−Ｎの冗長データの一部を、増設したサーバ１０３−（Ｎ＋１）に移動する。これにより、増設したサーバ１０３−（Ｎ＋１）を含めたすべてのサーバ１０３−１〜１０３−Ｎ、１０３−（Ｎ＋１）で冗長系を構成し、次の故障に対応することができる。
【００２９】
サーバ１０３−ｊを減設した場合、管理システム１００は、冗長系再構築処理により、サーバ１０３−ｊの減設に対する障害復旧処理後、障害復旧処理により失った冗長データを、残存するサーバ１０３−ｋ（ｋ≠ｊ）上に生成する。これにより、現存するサーバ１０３−ｋで次の障害発生に備えることができる。
【００３０】
負荷分散装置１０２−ｉは、パケットの送受信をおこなう。負荷分散装置１０２−ｉは、入力されたパケットを当該パケットのセッションを識別する特徴情報に基づいて、当該パケットのセッション群を決定する。特徴情報としては、管理システム１００がゲートウェイシステムの場合、たとえば、パケットの宛先アドレスが用いられる。なお、特徴情報として採用される情報は、宛先アドレスに限定されず、適用されるシステムやプロトコル、サービスに応じた情報を採用すればよい。
【００３１】
また、負荷分散装置１０２−ｉは、入力されたパケットのセッション群を決定し、当該パケットのセッション群を担当するサーバ１０３−ｊに転送する。セッション群の決定およびパケットの割り当てについては後述する。また、負荷分散装置１０２−ｉは、各サーバ１０３−ｊのパケット処理部１３０により処理されたパケットを外部に転送する。各負荷分散装置１０２−ｉは、同一機能を実現する。
【００３２】
サーバ１０３−ｊは、負荷分散装置１０２−ｉから転送されてくるパケットのセッションに関するステート情報Ｓｐ−１、Ｓｐ−２を管理する。サーバ１０３−ｊは、パケット処理部１３０と、運用データ集合Ｒ１−ｊと、冗長データ集合Ｒ２−ｊと、を有する。パケット処理部１３０は、パケットを解析して、パケットの宛先アドレスや送信元アドレスなどセッションを特定する特徴情報を取得し、パケット処理の結果であるステート情報Ｓｐ−１を運用データとして運用データ集合Ｒ１−ｊに保存する。
【００３３】
また、あるサーバ１０３−ｊのある運用データが更新されると、当該運用データに対応する冗長データも更新される。たとえば、図１において、サーバ１０３−１の運用データ集合Ｒ１−１内のセッション群１のステート情報Ｓ１−１が更新されると、ステート情報Ｓ１−１の冗長データとしてサーバ１０３−２の冗長データ集合Ｒ２−２に格納されているステート情報Ｓ１−２も更新される。すなわち、サーバ１０３−２の冗長データ集合Ｒ２−２に格納されているステート情報Ｓ１−２は、更新後のセッション群１のステート情報Ｓ１−１により上書きされる。このように、冗長データの更新処理は、更新された運用データを格納するサーバ１０３−ｊが、更新された運用データであるステート情報Ｓｐ−１を、更新されたステート情報Ｓｐ−１の冗長データを格納するサーバ１０３−ｋ（ｊ≠ｋ）に複製することにより、実行される。
【００３４】
冗長グループ１０４−ｇは、冗長系を構成する１以上のサーバ１０３−ｊが割り当てられたグループである。たとえば、図１や図３の例では、サーバ１０３−１〜１０３−３は同一の冗長グループ１０４−１に所属する。サーバ１０３−１の運用データ集合Ｒ１−１内の運用データ（ステート情報Ｓｐ−１）の複製である冗長データ（ステート情報Ｓｐ−２）は、冗長グループ１０４−１に所属する他のサーバ１０３−２、１０３−３のいずれかの冗長データ集合Ｒ２−２、Ｒ２−３に格納される。
【００３５】
なお、サーバ１０３−ｊの運用データ（ステート情報Ｓｐ−１）の複製である冗長データ（ステート情報Ｓｐ−２）は、同一サーバ１０３−ｊの冗長データ集合Ｒ２−ｊに格納されることはない。また、冗長グループ１０４−ｇ内の運用データおよび冗長データは、後述する冗長グループ１０４−ｇの分割や併合を除き、他の冗長グループ１０４−ｈ（ｇ≠ｈ）に格納されることはない。
【００３６】
ここで、管理システム１００による外部へのパケット転送例について説明する。サーバ１０３−ｊから転送されたパケットは、ネットワーク１１０に入力される。ネットワーク１１０は、転送されたパケットの宛先アドレスに基づいて、宛先アドレスに近いネットワーク（不図示）に転送できる負荷分散装置１０２−ｉを選択し、転送されたパケットを当該負荷分散装置１０２−ｉに転送する。負荷分散装置１０２−ｉは、転送されたパケットを管理システム１００の外部へ転送する。
【００３７】
＜負荷分散装置１０２−ｉによる処理例＞
図４は、負荷分散装置１０２−ｉによるセッション群番号ｐの決定処理およびパケットの割当処理を示す説明図である。負荷分散装置１０２−ｉは、ハッシュ関数１２１と、対応情報１２２と、を有する。負荷分散装置１０２−ｉは、ハッシュ関数１２１を用いて、入力されたパケットからセッションを識別する特徴情報を抽出する。具体的には、たとえば、負荷分散装置１０２−ｉは、セッションを識別する特徴情報としてパケットの宛先アドレスをハッシュ関数１２１に与え、ハッシュ値を抽出する。
【００３８】
対応情報１２２は、セッション群番号ｐとサーバ番号ｊとを対応付けたテーブルである。セッション群番号ｐとは、入力されたパケットのセッション群を特定する情報である。また、サーバ番号ｊとは、サーバ１０３−ｊを特定する情報である。本実施例では、管理システム１００は、入力されたパケットの宛先アドレスなどのセッションを識別するための特徴情報に基づき、入力されたパケットを、セッション群というサーバ１０３−ｊへの振り分けに使用する単位に分類する。
【００３９】
すなわち、セッション群とは、パケット通信のセッションを複数集約した単位であり、より具体的には、入力されたパケットのセッションを識別する特徴情報についてのハッシュ値が共通するセッションの集合である。すなわち、対応情報１２２におけるセッション群番号ｐとは、ハッシュ値の取りうる値である。図４では、説明の便宜上、セッション群の数を「１２」とし、サーバ１０３−ｊの台数を「５」とする。パケットが負荷分散装置１０２−ｉに入力されると、ハッシュ関数１２１により、パケットから、たとえば、ハッシュ値であるセッション群番号「１１」が抽出されたとする。対応情報１２２において、セッション群番号「１１」に対応するサーバ番号ｊは「４」である。したがって、負荷分散装置１０２−ｉは、パケットの転送先をサーバ１０３−４に決定し、当該パケットをサーバ１０３−４に転送する。
【００４０】
サーバ１０３−４は、転送されてきたパケットをパケット処理部１３０にて処理し、セッション情報を抽出する。抽出したセッション情報は、セッション群「１１」に該当するセッションのステート情報である。そして、サーバ１０３−４は、抽出したセッション情報を、セッション群「１１」のステート情報Ｓ１１−１に追加する。
【００４１】
＜ハードウェア構成例＞
図５は、制御装置１０１、負荷分散装置１０２−ｉ、およびサーバ１０３−ｊのハードウェア構成例を示すブロック図である。（Ａ）は、物理計算機５００のハードウェア構成例を示し、（Ｂ）は、物理計算機５００上に作成した仮想マシン５１０のハードウェア構成例を示す。制御装置１０１、負荷分散装置１０２−ｉ、およびサーバ１０３−ｊは、（Ａ）および（Ｂ）のいずれの構成も採用できる。
【００４２】
（Ａ）の構成では、制御装置１０１、負荷分散装置１０２−ｉ、またはサーバ１０３−ｊである物理計算機５００は、プロセッサ５０１と記憶装置５０２とインタフェース５０３とバス５０４とを有する。プロセッサ５０１と記憶装置５０２とインタフェース５０３とは、バス５０４を介して接続される。プロセッサ５０１は、記憶装置５０２に格納されたプログラムを読み込んで当該プログラムに応じた処理を実行する。記憶装置５０２は、制御装置１０１、負荷分散装置１０２−ｉ、サーバ１０３−ｊによる処理を実現するためのプログラムを格納する。また、記憶装置５０２は、プログラムの実行時に参照されるデータやテーブルを格納する。インタフェース５０３は、データの入出力を実行する。
【００４３】
（Ｂ）の構成では、制御装置１０１、負荷分散装置１０２−ｉ、またはサーバ１０３−ｊである仮想マシン５１０は、仮想プロセッサ５１１と仮想記憶装置５１２と仮想インタフェース５１３と仮想バス５１４を有する。仮想マシン５１０は、物理計算機５００上に複数台作成されてもよい。仮想プロセッサ５１１と仮想記憶装置５１２と仮想インタフェース５１３とは仮想バス５１４を介して接続される。仮想プロセッサ５１１は、仮想記憶装置５１２に格納されたプログラムを読み込んで当該プログラムに応じた処理を実行する。仮想記憶装置５１２は、制御装置１０１、負荷分散装置１０２−ｉ、サーバ１０３−ｊによる処理を実現するためのプログラムを格納する。また、仮想記憶装置５１２は、プログラムの実行時に参照されるデータやテーブルを格納する。仮想インタフェース５１３は、データの入出力を実行する。
【００４４】
＜冗長グループ情報＞
図６は、冗長グループ情報の一例を示す説明図である。冗長グループ情報６００は、制御装置１０１に格納される。冗長グループ情報６００は、どの冗長グループ１０４−ｇが、サーバ１０３−ｊを何台保持し、保持しているサーバ１０３−ｊがどのサーバであり、当該サーバ１０３−ｊが担当するセッション群はどのセッション群であるかを示す情報である。
【００４５】
冗長グループ情報６００は、冗長グループ番号項目と、所属サーバ数項目と、所属サーバ番号項目と、担当セッション群番号項目とを関連付け、冗長グループごとに、各項目の値を有する。冗長グループ番号項目には、冗長グループ番号ｇが格納される。所属サーバ数項目には、冗長グループ番号ｇにより特定される冗長グループ１０４−ｇに所属するサーバの台数が格納される。所属サーバ番号項目には、冗長グループ番号ｇにより特定される冗長グループ１０４−ｇに所属するサーバを特定するサーバ番号ｊが格納される。担当セッション群番号項目には、冗長グループ番号ｇにより特定される冗長グループ１０４−ｇに所属する全サーバ１０３−ｊが担当するセッション群番号ｐが格納される。
【００４６】
たとえば、１行目のエントリは、冗長グループ１０４−１は３台のサーバ１０３−ｉを保持し、当該３台のサーバ１０３−ｊはサーバ１０３−１〜１０３−３であり、サーバ１０３−１〜１０３−３は、ステート情報Ｓ１−１〜Ｓ６−１、Ｓ１−２〜Ｓ６−２を保持することを示す。
【００４７】
＜セッション群情報＞
図７は、セッション群情報の一例を示す説明図である。セッション群情報７００は、制御装置１０１に格納される。セッション群情報７００は、どのサーバ１０３−ｊがどの運用データおよび冗長データを保持するかを示す情報である。セッション群情報７００は、サーバ番号項目と、運用データのセッション群番号項目と、冗長データのセッション群番号項目とを関連付け、サーバ１０３−ｊごとに、各項目の値を有する。
【００４８】
サーバ番号項目には、サーバ番号ｊが格納される。運用データのセッション群番号項目には、サーバ番号ｊにより特定されるサーバ１０３−ｊが保持する運用データであるステート情報Ｓｐ−１についてのセッション群番号ｐが格納される。冗長データのセッション群番号項目には、サーバ番号ｊにより特定されるサーバ１０３−ｊが保持する冗長データであるステート情報Ｓｐ−２についてのセッション群番号ｐが格納される。
【００４９】
たとえば、１行目のエントリは、サーバ１０３−１は、運用データとしてステート情報Ｓ１−１，Ｓ４−１と、冗長データとしてステート情報Ｓ３−２，Ｓ５−２を保持することを示す。
【００５０】
＜冗長グループの初期構成処理手順＞
図８は、制御装置１０１による冗長グループの初期構成処理手順例を示すフローチャートである。制御装置１０１は、最初に冗長グループ１０４−ｇの構成を決定する。はじめに、管理システム１００の管理者が、冗長グループ１０４−ｇの所属サーバ数の最小値である最小所属サーバ数α（αはα≧２となる整数）を制御装置１０１により設定する。制御装置１０１は、管理システム内のサーバ１０３−１〜１０３−Ｎの台数Ｎを最小所属サーバ数αで割った値の商を算出し、当該商を冗長グループ数Ｇに設定する（ステップＳ８０１）。図１の例では、Ｎ＝５、α＝２であるため、冗長グループ数ＧはＮ／αの商である２となる。
【００５１】
なお、最小所属サーバ数αは、たとえば、管理システム１００で使用するサーバ１０３−ｊの最大台数Ｎ、サーバ１０３−ｊ間のデータ転送時間を考慮して決定される。例えば、サーバ１０３−ｊを最小で１００台使用する管理システム１００において、ステート情報組換え時の障害による影響を全サーバ数の１０［％］に抑えたい場合、ステート情報組み換えの対象となるサーバ１０３−ｊの最大台数ＮはＮ＝（３α―２）台であるため、（３α―２）台が、サーバ１０３−ｊの最大台数Ｎである１００台の１０［％］に相当する１０台となればよい。すなわち、３α―２＝１０より、最小所属サーバ数αの値が４として設定されればよい。ステート情報組み換えの対象となるサーバ１０３−ｊの最大台数ＮがＮ＝（３α―２）台である理由は後述する。
【００５２】
また、ステート情報組み換え時に各サーバ１０３−ｊが１［ＧＢ］のステート情報Ｓｐ−１，Ｓｐ−２を１［Ｇｂｐｓ］の回線で移動させる管理システム１００の例について説明する。１台のサーバ１０３−ｊの増減設にかかるステート情報組換え時間を１０秒以内に抑える必要がある場合、１台のサーバ１０３−ｊのステート情報Ｓｐ−１，Ｓｐ−２の移動に１秒必要とし、各サーバ１０３−ｊが１台ずつ順番にステート情報Ｓｐ−１，Ｓｐ−２を移動する必要があるケースを想定した場合、ステート情報組換え対象となるサーバ１０３−ｊの最大台数Ｎである（３α―２）台が、Ｎ＝１０台以下となる必要がある。したがって、３α―２＝１０より、最小所属サーバ数αの値が４として設定されればよい。
【００５３】
このステップＳ８０１により、制御装置１０１は、冗長グループ情報６００に、冗長グループ数Ｇと同数のエントリを生成し、冗長グループ番号を採番する。
【００５４】
つぎに、制御装置１０１は、ステップＳ８０１により冗長グループ数Ｇを設定した後、サーバ１０３−１〜１０３−Ｎの所属先となる冗長グループ１０４−ｇを決定する（ステップＳ８０２）。具体的には、たとえば、制御装置１０１は、サーバ１０３−ｊの台数（サーバ数）の差が冗長グループ１０４−ｇ間で最小となるように各冗長グループ１０４−１〜１０４−Ｇに最小所属サーバ数αと同一の台数分のサーバ１０３−ｊを割り当てる。サーバ数が最小所属サーバ数αで割り切れる数ではない場合、制御装置１０１は、サーバ数を最小所属サーバ数αで割った余りの台数のサーバ１０３−ｊをいずれかの冗長グループ１０４−ｇに割り当てる。
【００５５】
サーバ１０３−１〜１０３−Ｎの所属先の決定方法の例として、制御装置１０１は、余りとなったサーバ１０３−ｊを冗長グループ１０４−１から順番にラウンドロビンで１台ずつ割り当てる処理を、余りとなったサーバ１０３−ｊがすべて冗長グループ１０４−ｇに割り当てられるまで繰り返す方法を使用することができる。たとえば、制御装置１０１は、最小所属サーバ数αを３として、１１台のサーバ１０３−１〜１０３−１１の所属先を冗長グループ１０４−ｇに決定する場合、冗長グループ数が１１を３で割った値の商である３であるため、冗長グループ１０４−１〜１０４−３に３台ずつサーバを割り当てる。そして、制御装置１０１は、余った２台のサーバ１０３−ｊの内１台を冗長グループ１０４−１に割り当て、１台を冗長グループ１０４−２に割り当てる。
【００５６】
このステップＳ８０２により、制御装置１０１は、冗長グループ情報６００のエントリごとに、冗長グループ情報６００の所属サーバ数と所属サーバ番号とを設定することができる。なお、ラウンドロビンにかぎらず、制御装置１０１は、ランダムに、または、ある特定の冗長グループ１０４−ｇに集中的に、サーバ１０３−ｊの所属先を決定することとしてもよい。たとえば、上記の例において、制御装置１０１は、冗長グループ１０４−１をサーバ１０３−１〜１０３−９の所属先に、冗長グループ１０４−２をサーバ１０３−１０の所属先に、冗長グループ１０４−３をサーバ１０３−１１の所属先に決定することとしてもよい。
【００５７】
そして、制御装置１０１は、担当するセッション群番号により特定されるセッション群のステート情報Ｓｐ−１，Ｓｐ−２の割当先を、冗長グループ１０４−１〜１０４−Ｇの中から決定する（ステップＳ８０３）。具体的には、たとえば、制御装置１０１は、ステート情報Ｓｐ−１，Ｓｐ−２の割当数の差が冗長グループ１０４−ｇ間で最小となるように、ステート情報Ｓｐ−１，Ｓｐ−２の割当先を、冗長グループ１０４−１〜１０４−Ｇの中から決定する。セッション群の総数、すなわちセッション群番号ｐの最大値は、ハッシュ関数１２１が出力可能なハッシュ値の総数と同一の値となる。制御装置１０１は、各冗長グループの担当セッション群の数を可能な限り均等にし、冗長グループ１０４−ｇ間で処理負荷が分散されるようにする。このために、制御装置１０１は、セッション群の総数を冗長グループ数Ｇで割った値の商を、担当セッション群の数とする。
【００５８】
また、セッション群の総数が冗長グループ数Ｇで割り切れる値ではない場合、制御装置１０１は、セッション群の総数を冗長グループ数Ｇで割った値の余りをいずれかの冗長グループに割り当てる。割り当てる方法の例として、制御装置１０１は、余ったセッション群を、最老番の冗長グループ１０４−Ｇに割り当てる方法を使用することができる。
【００５９】
たとえば、制御装置１０１が５００個のセッション群を３個（Ｇ＝３）の冗長グループ１０４−１〜１０４−３に割り当てる場合、５００を３で割った商が１６６、余りが２であるため、制御装置１０１は、セッション群番号ｐ＝１〜１６６に該当するセッション群を冗長グループ１０４−１に、セッション群番号ｐ＝１６７〜３３２に該当するセッション群を冗長グループ１０４−２に、セッション群番号ｐ＝３３３〜４９８に該当するセッション群を冗長グループ１０４−３に、余ったセッション群番号ｐ＝４９９、５００に該当する２個のセッション群を最老番の冗長グループ１０４−３に割り当てる。
【００６０】
このステップＳ８０３により、制御装置１０１は、冗長グループ情報６００のエントリごとに、冗長グループ情報６００の担当セッション群番号を設定することができる。なお、制御装置１０１は、ランダムに、または、ある特定の冗長グループ１０４−ｇに集中的に、セッション群の割当先を決定することとしてもよい。たとえば、上記の例において、制御装置１０１は、セッション群番号ｐ＝１〜４９８に該当するセッション群を冗長グループ１０４−１に、セッション群番号ｐ＝４９９に該当するセッション群を冗長グループ１０４−２に、セッション群番号ｐ＝５００に該当するセッション群を冗長グループ１０４−３に割り当てることとしてもよい。
【００６１】
このあと、制御装置１０１は、各冗長グループ１０４−ｇ内のサーバ１０３−ｊ間で担当セッション群変更処理を実行する（ステップＳ８０４）。具体的には、たとえば、制御装置１０１は、所属する冗長グループ１０４−ｇに割り当てられたセッション群の割当先をサーバ１０３−ｊに決定する。各サーバ１０３−ｊは、セッション群の中のあるセッションのパケットの処理を担当し、当該パケットの処理結果であるステート情報Ｓｐ−１，Ｓｐ−２を運用データ集合Ｒ１−ｊに格納する処理を担当することになる。
【００６２】
セッション群の割当先サーバの決定方法として、ラウンドロビン法がある。ラウンドロビン法では、セッション群１から順に冗長グループ１０４−ｇ内のサーバ１０３−１、サーバ１０３−２、１０３−３、…と順に割り当てる。ラウンドロビン法は、単純な方法でセッション群を均等に各サーバ１０３−ｊに割り当てることができるという利点がある。
【００６３】
また、セッション群の割当先サーバの決定方法の別の例として、サーバ１０３−ｊの処理性能（たとえば、プロセッサのクロック周波数やメモリ容量）の差を考慮して、処理性能が高いサーバ１０３−ｊにより多くのセッション群の割当先サーバを決定する方法がある。この決定方法では、サーバ１０３−ｊに処理性能差がある場合、サーバ１０３−ｊの処理能力に合わせた負荷分散ができ、サーバ１０３−ｊ毎の処理負荷の差を抑えることができるという利点がある。これらの決定方法はあくまで一例であり、同一冗長グループ１０４−ｇのサーバ１０３−ｊ間でセッション群の割当先サーバを決定する方法であれば使用することができる。たとえば、制御装置１０１は、ランダムに、または、ある特定のサーバ１０３−ｊに集中的に、セッション群の割当先を決定することとしてもよい。
【００６４】
このあと、制御装置１０１は、冗長グループ１０４−ｇ内で冗長系構築処理を実行し、各サーバ１０３−ｊが冗長データとしての保存を担当するセッション群を決定する。各サーバ１０３−ｊが処理を担当するセッション群の割当先サーバを、他のサーバ１０３−ｋ（ｊ≠ｋ）に決定することで、各サーバ１０３−ｊが冗長データとしての保存を担当するセッション群を決定する。
【００６５】
たとえば、サーバ１０３−１がセッション群１、２、３の処理を担当する場合、サーバ１０３−２がセッション群１の冗長データ（ステート情報Ｓ１−２）の保存を担当、サーバ１０３−３がセッション群２の冗長データ（ステート情報Ｓ２−２）の保存を担当、サーバ１０３−４がセッション群３の冗長データ（ステート情報Ｓ３−２）の保存を担当するというように分散することで、サーバ１０３−１が障害により減設される場合、残りの３台のサーバ１０３−２〜１０３−４で処理を引き継ぐことができる。この方法はあくまで一例であり、同一冗長グループのサーバ１０３−ｊ間で運用データ担当、冗長データ担当の役割を決定する方式であれば使用することができる。
【００６６】
このステップＳ８０４により、制御装置１０１は、図７に示したセッション群情報７００を生成することができる。
【００６７】
このあと、制御装置１０１は、ステップＳ８０４により生成されたセッション群情報７００にしたがって、ステート情報をサーバ１０３−ｊに割り当てる（ステップＳ８０５）。これにより、冗長グループの初期構成処理を終了する。
【００６８】
＜サーバ増設時のステート情報組換えおよび冗長グループ分割例＞
つぎに、サーバ増設時のステート情報組換えおよび冗長グループ分割例について、図９〜図１８を用いて説明する。冗長グループ１０４−ｇの所属サーバ数は、サーバ１０３−ｊの増減設により変化する。ある冗長グループ１０４−ｇにサーバ１０３−ｊを増設した結果、当該冗長グループ１０４−ｇの所属サーバ数が２αになった場合、制御装置１０１は、当該冗長グループ１０４−ｇを２つの冗長グループに分割する。したがって、冗長グループ１０４−ｇあたりの最大所属サーバ数は（２α―１）であり、サーバ１０３−ｊの増設時にステート情報Ｓｐ−１，Ｓｐ−２の組換え対象となるサーバ１０３−ｊの最大台数は２α台となる。
【００６９】
サーバ１０３−ｊの増設時に冗長グループ１０４−ｊを分割する理由は、ある冗長グループ１０４−ｇの所属サーバ数が増加を続け、管理システム１００の総サーバ数Ｎの大部分を一つの当該冗長グループ１０４−ｇが占めることを防ぐためである。これにより、冗長グループ１０４−ｇ間で負荷分散を図ることができる。なお、ここでは、最小所属サーバ数αをα＝２とする。また、初期状態では、冗長グループ数Ｇを、Ｇ＝１とする。
【００７０】
図９は、サーバ増設時の冗長グループの変更例を示す説明図である。（Ａ）はサーバ増設前の状態を示す。（Ｂ）は、（Ａ）の状態から冗長グループ１０４−１にサーバ１０３−３が追加された例を示す。（Ｃ）は、（Ｂ）の状態から冗長グループ１０４−１にサーバ１０３−４が追加され、冗長グループ１０４−１が分割された例を示す。
【００７１】
（Ｂ）において、（Ａ）の状態からサーバ１０３−３が追加されると、冗長グループ１０４−１内の所属サーバ数が３になるが、最小所属サーバ数α（＝２）の２倍である２α（＝４）に一致しない。したがって、冗長グループ１０４−１はまだ分割されない。
【００７２】
（Ｃ）において、（Ｂ）の状態からサーバ１０３−４が追加されると、冗長グループ１０４−１内の所属サーバ数が４になり、最小所属サーバ数α（＝２）の２倍である２α（＝４）に一致する。したがって、制御装置１０１は、冗長グループ１０４−１を２つの冗長グループ１０４−１，１０４−２に分割する。ここでは、分割後の冗長グループ１０４−１は、サーバ１０３−１，１０３−２を有し、冗長グループ１０４−２は、サーバ１０３−３，１０３−４を有する。
【００７３】
また、（Ｂ）の状態である分割前の担当セッション群は１〜９であるが、分割により、分割後の冗長グループ１０４−１が、担当セッション群１〜５のステート情報Ｓ１−１〜Ｓ５−１、Ｓ１−２〜Ｓ５−２を保持し、冗長グループ１０４−２が、担当セッション群６〜９のステート情報Ｓ６−１〜Ｓ９−１、Ｓ６−２〜Ｓ９−２を保持する。このように、１つの冗長グループ１０４−ｇにおいて所属サーバ数が２αになると、２つの冗長グループに分割される。
【００７４】
図１０は、サーバ増設前の冗長グループを示す説明図である。図１０は、図９の（Ａ）の状態を示す。冗長グループ１０４−１は、サーバ１０３−１，１０３−２を有する。
【００７５】
図１１は、冗長グループ情報６００の更新例を示す説明図である。（Ａ）は、初期状態、すなわち、図９の（Ａ）および図１０に示した状態のときの冗長グループ情報６００を示す。（Ｂ）は、図９の（Ａ）の状態からサーバ１０３−３が追加されて図９の（Ｂ）の状態となったときの冗長グループ情報６００を示す。（Ｃ）は、図９の（Ｂ）の状態からサーバ１０３−４が追加され、かつ、冗長グループ１０４−１が分割されて、図９の（Ｃ）の状態となったときの冗長グループ情報６００を示す。
【００７６】
図１２は、セッション群情報７００の更新例を示す説明図である。（Ａ）は、初期状態、すなわち、図９の（Ａ）および図１０に示した状態のときのセッション群情報７００を示す。（Ｂ）は、図９の（Ａ）の状態からサーバ１０３−３が追加されて図９の（Ｂ）の状態となったときのセッション群情報７００を示す。図１１の（Ｂ）において、冗長グループ１０４−１の所属サーバはサーバ１０３−１〜１０３−３である。したがって、図１２の（Ｂ）では、制御装置１０１は、たとえば、ステップＳ８０３に示した処理により、サーバ番号「１」，「２」，「３」のエントリにおいて、ラウンドロビンでセッション群番号１〜９を割り当てる。
【００７７】
（Ｃ）は、図９の（Ｂ）の状態からサーバ１０３−４が追加され、かつ、冗長グループ１０４−１が分割されて、図９の（Ｃ）の状態となったときのセッション群情報７００を示す。図１１の（Ｃ）において、冗長グループ１０４−１の所属サーバはサーバ１０３−１，１０３−２である。したがって、図１２の（Ｃ）では、制御装置１０１は、サーバ番号「１」，「２」のエントリにおいて、ラウンドロビンでセッション群番号１〜５を割り当てる。同様に、制御装置１０１は、サーバ番号「３」，「４」のエントリにおいて、ラウンドロビンでセッション群番号６〜９を割り当てる。
【００７８】
図１３は、サーバ増設時のステート情報の組換え動作例１を示す説明図であり、図１４は、サーバ増設時のステート情報の組換え動作結果１を示す説明図である。図１３に示す組換え動作は、図９の（Ａ）から（Ｂ）の状態に増設された場合の動作例であり、図１２の（Ｂ）のセッション群情報７００にしたがって実行される。図１３（図１６、図２３も同じ）中、太矢印がステート情報Ｓｐ−１，Ｓｐ−２の移動を示し、点線で示した太矢印の始端側の矩形が移行元のステート情報Ｓｐ−１，Ｓｐ−２であり、移行により移行元の運用データ集合Ｒ１−ｊおよび冗長データ集合Ｒ２−ｊから削除される。太矢印の終端側の矩形が、移行元の運用データ集合Ｒ１−ｊおよび冗長データ集合Ｒ２−ｊから移行されたステート情報Ｓｐ−１，Ｓｐ−２である。
【００７９】
このように、ステート情報の組換えは１つの冗長グループ１０４−１内で実行されるため、他の冗長グループ１０４−ｇが存在する場合、ステート情報の組換え時に冗長グループ１０４−１に障害が発生しても、他の冗長グループ１０４−ｇには障害の影響が波及しない。
【００８０】
図１５は、対応情報１２２の更新例を示す説明図である。制御装置１０１は、各負荷分散装置１０２−ｉが保持する対応情報１２２を（Ａ）から（Ｂ）に、（Ｂ）から（Ｃ）に更新する。（Ａ）は、初期状態、すなわち、図９の（Ａ）および図１０に示した状態のときの対応情報１２２を示す。（Ｂ）は、図９の（Ａ）の状態からサーバ１０３−３が追加されて図９の（Ｂ）の状態となったときの対応情報１２２を示す。この対応情報１２２は、図１２の（Ｂ）に示したセッション群情報７００にしたがって更新される。（Ｃ）は、図９の（Ｂ）の状態からサーバ１０３−４が追加され、かつ、冗長グループ１０４−１が分割されて、図９の（Ｃ）の状態となったときの対応情報１２２を示す。この対応情報１２２は、図１２の（Ｃ）に示したセッション群情報７００にしたがって更新される。
【００８１】
図１６は、サーバ増設時のステート情報の組換え動作例２を示す説明図であり、図１７は、サーバ増設時のステート情報の組換え動作結果２を示す説明図である。図１６に示す組換え動作は、図９の（Ｂ）から（Ｃ）の状態に増設された場合の動作例であり、図１２の（Ｃ）のセッション群情報７００にしたがって実行される。図９の（Ｃ）に示したように、冗長グループ１０４−１が分割された場合、ステート情報の組換えは、分割後の冗長グループ１０４−１，１０４−２にまたがって実行される。このように、所属サーバ数が増設により２αに到達する都度、冗長グループ１０４−ｇが分割されるため、いずれの冗長グループ１０４−ｇにおいても、障害波及範囲となる各々の冗長グループ１０４−ｇのサーバ数を、αから２α―１までの範囲に抑制することができる。
【００８２】
図１８は、制御装置１０１による冗長グループ更新処理例１を示すフローチャートである。図１８の冗長グループ更新処理では、上述した担当セッション群変更処理、および冗長系再構築処理が実行される。
【００８３】
制御装置１０１は、サーバ１０３−（Ｎ＋１）の追加を検知すると、冗長グループ情報６００に格納されている各冗長グループ１０４−ｇの所属サーバ数に基づいて、サーバ１０３−（Ｎ＋１）を追加する冗長グループ１０４−ｇを決定する（ステップＳ１８０１）。たとえば、図９の（Ａ），（Ｂ）の場合、冗長グループ１０４−１だけであるため、冗長グループ１０４−１が追加先グループとなる。冗長グループ１０４−ｇが複数存在する場合、制御装置１０１は、所属サーバ数が最小の冗長グループ１０４−ｇを追加先グループに決定する。
【００８４】
つぎに、制御装置１０１は、サーバ１０３−（Ｎ＋１）が追加された冗長グループ１０４−ｇが最小所属サーバ数αの２倍である２αに等しいか否かを判断する（ステップＳ１８０２）。等しくない場合（ステップＳ１８０２：Ｎｏ）、ステップＳ１８０３に移行する。たとえば、図９の（Ａ）では、サーバ１０３−３追加後の冗長グループ１０４−１の所属サーバ数は「３」であり、最小所属サーバ数αの２倍の値である２α（＝４）と等しくない（ステップＳ１８０２：Ｎｏ）。
【００８５】
このように、サーバ追加後の所属サーバ数が２αでない場合は（ステップＳ１８０２：Ｎｏ）、図１１の（Ａ），（Ｂ）に示したように、制御装置１０１は冗長グループ情報６００を（Ａ）から（Ｂ）に更新する（ステップＳ１８０３）。この場合、冗長グループ１０４−１は分割されないため、冗長グループ情報６００では新規エントリが生成されず、グループ番号「１」のエントリの所属サーバ数が「２」から「３」に更新され、所属サーバ番号に「３」が追加される。
【００８６】
また、制御装置１０１は、図１２の（Ａ），（Ｂ）に示したように、セッション群情報７００を（Ａ）から（Ｂ）に更新する。セッション群情報７００の更新については、たとえば、図８のステップＳ８０４に示した処理が実行される。制御装置１０１は、図１２の（Ｂ）に示したように、追加されたサーバ１０３−３（サーバ番号「３」）のエントリを生成し、サーバ番号「１」〜「３」のエントリにおいて、運用データのセッション群番号および冗長データのセッション群番号をラウンドロビンで割り当てる。この場合、同一エントリにおいて、運用データのセッション群番号と冗長データのセッション群番号が重複しないようにする。そして、ステップＳ１８０５に移行する。
【００８７】
一方、ステップＳ１８０２において、サーバ１０３−（Ｎ＋１）が追加された冗長グループ１０４−ｇが最小所属サーバ数αの２倍である２αに等しい場合（ステップＳ１８０２：Ｙｅｓ）、ステップＳ１８０５に移行する。たとえば、図９の（Ｂ）の例では、サーバ１０３−４追加後の冗長グループ１０４−１の所属サーバ数は４であり、最小所属サーバ数αの２倍の値である２α（＝４）と等しい（ステップＳ１８０２：Ｙｅｓ）。
【００８８】
したがって、制御装置１０１は、図９の（Ｃ）に示したように、追加先の冗長グループ１０４−１を２つの冗長グループ１０４−１，１０４−２に分割する（ステップＳ１８０５）。具体的には、制御装置１０１は、冗長グループ情報６００を、図１１の（Ｂ）から（Ｃ）に更新する。この場合、冗長グループ１０４−１は分割されるため、冗長グループ情報６００ではグループ番号「２」の新規エントリが生成される。所属サーバ数は、グループ番号「１」、「２」のエントリで均等に分配され、所属サーバ番号の数も均等に分配される。
【００８９】
また、制御装置１０１は、セッション群情報７００を、図１２の（Ｂ）から（Ｃ）に更新する。この場合、制御装置１０１は、図１２の（Ｃ）に示したように、追加されたサーバ１０３−４（サーバ番号「４」）のエントリを生成し、図１１の（Ｃ）の冗長グループ情報６００にしたがって、サーバ番号「１」，「２」のエントリにおいて、運用データのセッション群番号および冗長データのセッション群番号をラウンドロビンで割り当てる。この場合、同一エントリにおいて、運用データのセッション群番号と冗長データのセッション群番号が重複しないようにする。同様に、制御装置１０１は、図１１の（Ｃ）の冗長グループ情報６００にしたがって、サーバ番号「３」，「４」のエントリにおいて、運用データのセッション群番号および冗長データのセッション群番号をラウンドロビンで割り当てる。そして、ステップＳ１８０５に移行する。
【００９０】
このあと、制御装置１０１は、図１３や図１６に示したように、更新されたセッション群情報７００にしたがって、ステート情報を再構築する（ステップＳ１８０５）。具体的には、たとえば、制御装置１０１は、各サーバ１０３−ｊに、セッション群情報７００のうち各サーバ１０３−ｊのエントリを送り、各サーバ１０３−ｊに再構築させる。また、制御装置１０１は、図１５に示したように、更新されたセッション群情報７００にしたがって、各負荷分散装置１０２−ｉが保持する対応情報１２２を更新する（ステップＳ１８０６）。これにより、冗長グループ更新処理を終了する。
【００９１】
このように、サーバ１０３−（Ｎ＋１）の追加したときのステート情報組換え時に、サーバ１０３−（Ｎ＋１）の追加先の冗長グループ１０４−ｇ内で障害が発生しても、障害が他の冗長グループに波及しないため、被害を最小限に抑制することができる。また、冗長グループ１０４−ｇ内のサーバ１０３−ｊの数が増加して所定数（たとえば、２α）に到達すると、冗長グループ１０４−ｇが分割される。したがって、障害波及範囲の拡大を抑制することができる。
【００９２】
つぎに、サーバ減設の場合の処理について説明する。冗長グループ１０４−ｇからサーバ１０３−ｊが削除される場合、管理システムは、残存するサーバ１０３−ｊ（ｊ≠ｋ）が保持する冗長データを用いて、削除されたサーバ１０３−ｋの運用データによる処理を引き継ぐ。また、サーバ１０３−ｊの冗長データが運用データに変更されたことにより、当該運用データの冗長データが存在しないことになる。したがって、管理システムは、その後のサーバ減設に備えて、冗長データの再構築をする必要がある。また、管理システムは、サーバ減設により冗長グループ１０４−ｇの所属サーバ数が最小所属サーバ数αになった場合、他の冗長グループとマージする。
【００９３】
＜サーバ減設時のステート情報組換えおよび冗長グループ分割例＞
つぎに、サーバ減設時のステート情報組換えおよび冗長グループ分割例について、図１９〜図２７を用いて説明する。ある冗長グループ１０４−ｇからサーバ１０３−ｊを減設した結果、当該冗長グループ１０４−ｇの所属サーバ数がα未満になった場合、制御装置１０１は、当該冗長グループ１０４−ｇを他のグループ１０４−ｈ（ｈ≠ｇ）とマージする。したがって、冗長グループ１０４−ｇあたりの最小所属サーバ数は（α―１）であり、サーバ１０３−ｊの減設時にステート情報Ｓｐ−１，Ｓｐ−２の組換え対象となるサーバ１０３−ｊの最大台数は、所属サーバ数が（α−１）台である冗長グループ１０４−ｇと、所属サーバ数（２α―１）の冗長グループ１０４−ｈ（ｈ≠ｇ）とをマージする場合の（３α−２）台となる。
【００９４】
サーバ１０３−ｊの減設時に冗長グループ１０４−ｇを他の冗長グループ１０４−ｈ（ｈ≠ｇ）とマージする理由は、ある冗長グループ１０４−ｇの所属サーバ数が減少を続け、当該冗長グループ１０４−ｇの所属サーバ数が１となり、冗長系を構築できなくなるのを防ぐためである。したがって、サーバ１０３−ｊを増減設した場合、ステート情報Ｓｐ−１，Ｓｐ−２の組換え対象となるサーバ１０３−ｊの最大台数は（３α―２）台となる。ここでは、最小所属サーバ数αをα＝２とする。また、初期状態では、冗長グループ数Ｇを、Ｇ＝２とする。
【００９５】
図１９は、サーバ減設時の冗長グループの変更例を示す説明図である。（Ａ）はサーバ減設前の状態を示す。（Ｂ）は、（Ａ）の状態から冗長グループ１０４−２からサーバ１０３−５が削除された例を示す。（Ｃ）は、（Ｂ）の状態から冗長グループ１０４−２からサーバ１０３−３が削除され、冗長グループ１０４−１と冗長グループ１０４−２とがマージされた例を示す。
【００９６】
（Ｂ）において、（Ａ）の状態からサーバ１０３−３が削除されると、冗長グループ１０４−２内の所属サーバ数が「３」から「２」になり、最小所属サーバ数α（＝２）を下回らない。したがって、冗長グループ１０４−２は、他の冗長グループ１０４−１にマージされない。この場合、冗長グループ１０４−２内で、後述する図２１、図２２の（Ａ），（Ｂ）および図２４の（Ａ），（Ｂ）に示すように、冗長グループ１０４−２内でステート情報Ｓｐ−１，Ｓｐ−２の再構築が実行される。したがって、再構築中に冗長グループ１０４−２に障害が発生しても、冗長グループ１０４−１には波及しない。
【００９７】
（Ｃ）において、（Ｂ）の状態からサーバ１０３−３が削除されると、冗長グループ１０４−２内の所属サーバ数が「２」から「１」になり、最小所属サーバ数α（＝２）を下回る。したがって、冗長グループ１０４−２は、他の冗長グループ１０４−１にマージされる。また、マージ後の冗長グループ１０４−１が、担当セッション群１〜９のステート情報Ｓ１−１〜Ｓ９−１、Ｓ１−２〜Ｓ９−２を保持することになる。このように、１つの冗長グループ１０４−ｇにおいて所属サーバ数がαを下回ると、他の冗長グループにマージされる。
【００９８】
図２０は、サーバ減設前の冗長グループを示す説明図である。図２０は、図１９の（Ａ）の状態を示す。冗長グループ１０４−１は、サーバ１０３−１，１０３−２を有し、冗長グループは、サーバ１０３−３〜１０３−５を有する。
【００９９】
図２１は、冗長グループ情報６００の更新例を示す説明図である。図２１において、（Ａ）は、初期状態、すなわち、図１９の（Ａ）および図２２の（Ａ）に示した状態のときの冗長グループ情報６００を示す。（Ｂ）は、図１９の（Ａ）の状態から（Ｂ）の状態になったときの冗長グループ情報６００を示す。（Ｃ）は、図１９の（Ｂ）の状態から、冗長グループ１０４−２のサーバ１０３−３が削除され、冗長グループ１０４−１，１０４−２がマージされた場合の冗長グループ情報６００を示す。
【０１００】
図２２は、セッション群情報７００の更新例を示す説明図である。（Ａ）は、初期状態、すなわち、図１９の（Ａ）および図２０に示した状態のときのセッション群情報７００を示す。（Ｂ）は、図１９の（Ａ）の状態から冗長グループ１０４−２のサーバ１０３−５が削除された場合のセッション群情報７００を示す。すなわち、サーバ番号「５」のエントリが削除される。そして、制御装置１０１は、残余のサーバ番号「１」〜「４」のエントリにおいて、たとえば、ステップＳ８０３に示した処理により、ラウンドロビンでセッション群番号１〜９を割り当てる。
【０１０１】
（Ｃ）は、図１９の（Ｂ）の状態から冗長グループ１０４−２のサーバ１０３−３が削除され、冗長グループ１０４−１，１０４−２がマージされた場合のセッション群情報７００を示す。すなわち、サーバ番号「３」のエントリが削除される。図２１の（Ｃ）において、マージ後の冗長グループ１０４−１の所属サーバはサーバ１０３−１，１０３−２，１０３−４である。したがって、制御装置１０１は、サーバ番号「１」，「２」，「４」のエントリにおいて、たとえば、ステップＳ８０４に示した処理により、ラウンドロビンでセッション群番号１〜９を割り当てる。
【０１０２】
図２３は、サーバ減設時のステート情報の組換え動作例１を示す説明図である。図２３は、初期状態、すなわち、図１９の（Ａ）においてサーバ１０３−３が削除されたときの冗長グループ１０４−１，１０４−２を示す。冗長グループ１０４−２におけるサーバ１０３−５の削除により、冗長グループ１０４−２では、サーバ１０３−５が保持していた運用データであるステート情報Ｓ８−１と冗長データであるステート情報Ｓ７−２が欠落する。したがって、冗長グループ１０４−２の残余のサーバ１０３−３，１０３−４は、制御装置１０１から送られてくる図２２の（Ｂ）に示したセッション群情報７００にしたがって、ステート情報を再構築する。
【０１０３】
具体的には、たとえば、冗長データ集合Ｒ２−３内のステート情報Ｓ８−２の属性が、冗長データから運用データに変更され、ステート情報Ｓ８−１になる。同様に、運用データ集合Ｒ１−４内のステート情報Ｓ７−１が、冗長データ集合Ｒ２−３に複製され、ステート情報Ｓ７−２になる。
【０１０４】
また、サーバ１０３−３，１０３−４でステート情報の数を均等に分配するために、サーバ１０３−１が保持するステート情報Ｓ９−１がサーバ１０３−４に移行する。属性変更で得られたステート情報Ｓ８−１が複製され、当該ステート情報Ｓ８−１は、ステート情報Ｓ８−２としてサーバ１０３−４の冗長データ集合Ｒ２−４に移行する。さらに、サーバ１０３−４が保持するステート情報Ｓ９−２が、サーバ１０３−３の冗長データ集合Ｒ２−３に複製される。
【０１０５】
図２３に示した組換え処理は冗長グループ１０４−２内で実行されるため、冗長グループ１０４−２に障害が発生しても、冗長グループ１０４−１には波及しない。
【０１０６】
図２４は、対応情報の更新例を示す説明図である。制御装置１０１は、各負荷分散装置１０２−ｉが保持する対応情報１２２を（Ａ）から（Ｂ）に、（Ｂ）から（Ｃ）に更新する。（Ａ）は、初期状態、すなわち、図１９の（Ａ）および図２０の（Ａ）に示した状態のときの対応情報を示す。（Ｂ）は、図１９の（Ａ）の状態からサーバ１０３−５が削除されて、図１９の（Ｂ）の状態となったときの対応情報を示す。この対応情報１２２は、図２３の（Ｂ）に示したセッション群情報７００にしたがって更新される。（Ｃ）は、図１９の（Ｂ）の状態からサーバ１０３−３が削除され、かつ、冗長グループ１０４−１，１０４−２がマージされて、図１９の（Ｃ）の状態となったときの対応情報を示す。この対応情報は、図２３の（Ｃ）に示したセッション群情報７００にしたがって更新される。
【０１０７】
図２５は、サーバ減設時のステート情報の組換え動作例２を示す説明図であり、図２６は、図２５におけるサーバ減設時のステート情報の組換え動作結果を示す説明図である。図２５に示す組換え動作は、図１９の（Ｂ）の状態から冗長グループ１０４−１，１０４−２がマージされて図１９の（Ｃ）の状態となった場合の動作例であり、図２３の（Ｃ）のセッション群情報７００にしたがって実行される。
【０１０８】
このように、ステート情報の組換えは１つの冗長グループ１０４−１内で実行されるため、他の冗長グループ１０４−ｇが存在する場合、ステート情報の組換え時に冗長グループ１０４−１に障害が発生しても、他の冗長グループ１０４−ｇには障害の影響が波及しない。
【０１０９】
図２７は、制御装置１０１による冗長グループ更新処理例２を示すフローチャートである。図２７の冗長グループ更新処理では、上述した担当セッション群変更処理、障害復旧処理、および冗長系再構築処理が実行される。
【０１１０】
制御装置１０１は、サーバ１０３−ｋの削除を検知すると（ステップＳ２７０１）、サーバ１０３−ｋが減設された冗長グループ１０４−ｇ（以降、減設グループ）の所属サーバ数が最小所属サーバ数α未満か否かを判断する（ステップＳ２７０２）。α未満でない場合（ステップＳ２７０２：Ｎｏ）、減設グループ１０４−ｇを他の冗長グループにマージさせる必要がないため、ステップＳ２７０６に移行する。
【０１１１】
一方、α未満である場合（ステップＳ２７０２：Ｙｅｓ）、制御装置１０１は、減設グループ１０４−ｇを他の冗長グループにマージする（ステップＳ２７０３）。たとえば、制御装置１０１は、他の冗長グループとして、減設グループ以外の冗長グループで所属サーバ数が最小の冗長グループを選択する。
【０１１２】
そして、制御装置１０１は、マージ後の冗長グループ１０４−ｇの所属サーバ数が、最小所属サーバ数αの２倍である２α未満であるか否かを判断する（ステップＳ２７０４）。２α未満である場合（ステップＳ２７０４：Ｙｅｓ）、マージ後の冗長グループ１０４−ｇを分割する必要がないため、ステップＳ２７０６に移行する。一方、２α未満でない場合（ステップＳ２７０４：Ｎｏ）、制御装置１０１は、マージ後の冗長グループ１０４−ｇを２つの冗長グループに分割する（ステップＳ２７０５）。そして、ステップＳ２７０７に移行する。
【０１１３】
また、ステップＳ２７０６では、制御装置１０１は、冗長グループ情報６００およびセッション群情報７００を更新する（ステップＳ２７０６）。たとえば、冗長グループ情報６００については、減設グループがマージされていない場合は、サーバ１０３−ｊの削除に伴い、制御装置１０１は、減設グループのエントリにおいて、所属サーバ数を１下げて、所属サーバ番号から削除されたサーバ１０３−ｊのサーバ番号を削除する。また、減設グループがマージされた場合は、たとえば、図２２の（Ｃ）に示したように、制御装置１０１は、減設グループのエントリとマージ先の冗長グループのエントリとを統合する。
【０１１４】
また、セッション群情報７００については、サーバ１０３−ｊの削除に伴い、制御装置１０１は、削除されたサーバ１０３−ｊのエントリをセッション群情報７００から削除する。たとえば、図２３の（Ａ）のセッション群情報７００において、サーバ１０３−５が削除された場合は、制御装置１０１は、図２３の（Ａ）のセッション群情報７００から、サーバ番号「５」のエントリを削除する。また、図２３の（Ｂ）のセッション群情報７００において、サーバ１０３−３が削除された場合は、制御装置１０１は、図２３の（Ｂ）のセッション群情報７００から、サーバ番号「３」のエントリを削除する。
【０１１５】
そして、減設グループがマージされていない場合は、制御装置１０１は、図２２の（Ｂ）に示したように、たとえば、ステップＳ８０３に示した処理により、図２１の（Ｂ）で特定される冗長グループ単位でセッション群番号１〜５，６〜９を割り当てる。
【０１１６】
また、減設グループがマージされた場合は、制御装置１０１は、図２２の（Ｃ）に示したように、たとえば、ステップＳ８０３に示した処理により、図２１の（Ｃ）で特定される冗長グループ単位でセッション群番号１〜９を割り当てる。そして、ステップＳ２７０７に移行する。
【０１１７】
このあと、制御装置１０１は、図２３や図２５に示したように、更新されたセッション群情報７００にしたがって、ステート情報を再構築する（ステップＳ２７０７）。具体的には、たとえば、制御装置１０１は、各サーバ１０３−ｊに、セッション群情報７００のうち各サーバ１０３−ｊのエントリを送り、各サーバ１０３−ｊに再構築させる。また、制御装置１０１は、図２４に示したように、更新されたセッション群情報７００にしたがって、各負荷分散装置１０２−ｉが保持する対応情報１２２を更新する（ステップＳ２７０８）。これにより、冗長グループ更新処理を終了する。
【０１１８】
このように、サーバ１０３−ｊの減設したときのステート情報組換え時に、減設グループ１０４−ｇ内で障害が発生しても、障害が他の冗長グループに波及しないため、被害を最小限に抑制することができる。
【０１１９】
また、冗長グループ１０４−ｇごとに所属サーバ数が最小所属サーバ数αを下回ると他の冗長グループにマージされるため、冗長グループの過剰な増加を抑制することができ、適切な数の冗長グループ１０４−ｇを維持することができる。すなわち、サーバ数が最小所属サーバ数αを下回ると、その冗長グループ１０４−ｇ内のサーバ１０３−ｊが担当するセッション群（ステート情報Ｓｐ−１、Ｓｐ−２）の数が相対的に増加するため、サーバ１台あたりの処理負荷が増大する。したがって、サーバ数が最小所属サーバ数αを下回った場合に他の冗長グループにマージすることで、各サーバ１０３−ｊの処理負荷の低減を図ることができる。また、マージ後の所属サーバ数が所定数（たとえば、２α）以上になると、冗長グループ１０４−ｇが分割される。したがって、障害波及範囲の拡大を抑制することができる。
【実施例２】
【０１２０】
つぎに、実施例２について説明する。実施例１は、サーバ１０３−ｊの運用データ集合Ｒ１運用データ集合Ｒ１−ｊ内の運用データであるステート情報Ｓｐ−１を保存し、他の１台のサーバ１０３−ｋ（ｊ≠ｋ）に、冗長データであるステート情報Ｓｐ−２を保存する構成とした。これに対し、実施例２は、サーバ１０３−ｊの運用データ集合Ｒ１運用データ集合Ｒ１−ｊ内のステート情報Ｓｐ−１の冗長データであるステート情報Ｓｐ−２が、サーバ１０３−ｊと同一の冗長グループ１０４−ｇに所属する他のすべてのサーバ１０３−ｋ（ｊ≠ｋ）に保存される。したがって、実施例２の場合、セッション群情報７００において、冗長データのセッション群番号には、そのエントリの運用データのセッション群番号以外のすべてのセッション群番号が格納される。たとえば、図７に示したセッション群情報７００の場合、サーバ番号「１」のエントリでは、冗長データのセッション群番号として、「３」、「５」のほか、「２」、「６」も格納される。なお、実施例１と同一構成には同一符号を付し、その説明を省略する。
【０１２１】
図２８は、実施例２にかかる冗長グループを示す説明図である。サーバ１０３−ｊの運用データ集合Ｒ１−ｊ内には、サーバ１０３−ｊが処理を担当する全セッション群（ステート情報Ｓｐ−１）の運用データ群Ｄ１−ｊが格納される。また、サーバ１０３−ｊの冗長データ集合Ｒ２−ｊには、サーバ１０３−ｊと同一の冗長グループ１０４−ｇに所属する他のすべてのサーバ１０３−ｋ（ｋ≠ｊ）が処理を担当する全セッション群（Ｓｐ−２）である冗長データ群Ｄｋ−２が格納される。
【０１２２】
たとえば、サーバ１０３−１〜１０３−３の３台が冗長グループ１０４−１に所属する場合、サーバ１０３−１の冗長データ集合Ｒ２−１には、サーバ１０３−２が処理を担当するすべてのセッション（Ｓ２−１、Ｓ５−１）の冗長データ（Ｓ２−２、Ｓ５−２）である冗長データ群Ｄ２−２と、サーバ１０３−３が処理を担当するすべてのセッション（Ｓ３−１、Ｓ６−１）の冗長データ（Ｓ３−２、Ｓ６−２）である冗長データ群Ｄ３−２が格納される。サーバ１０３−２の冗長データ集合Ｒ２−２およびサーバ１０３−３の冗長データ集合Ｒ３−２についても同様に、他のすべてのサーバ１０３−ｋが処理を担当する全セッション群（Ｓｐ−２）の冗長データ群Ｄｋ−２が格納される。
【０１２３】
新規にサーバ１０３−（Ｎ＋１）が増設される場合は、サーバ１０３−（Ｎ＋１）が追加された冗長グループ１０４−ｇに所属する全てのサーバ１０３−ｊが処理を担当する全セッション群の運用データ群Ｄｊ−１を、サーバ１０３−ｊが処理を担当する全セッション群の冗長データ群Ｄｊ−２として、サーバ１０３−（Ｎ＋１）の冗長データ集合Ｒ２−（Ｎ＋１）内に複製する。
【０１２４】
そして、サーバ１０３−（Ｎ＋１）が処理を担当する全セッション群の運用データ群Ｄ（Ｎ＋１）−１を、冗長グループ１０４−ｇに所属する全てのサーバ１０３−ｊの冗長データ集合Ｒ２−ｊに複製することで、冗長系再構築処理が実行される。
【０１２５】
また、任意のサーバ１０３−ｊが減設される場合は、サーバ１０３−ｊと同一の冗長グループ１０４−ｇに所属するサーバ１０３−ｋ（ｋ≠ｊ）の１台がサーバ１０３−ｊの処理を引き継ぐことにより、障害復旧処理が実行される。また、サーバ１０３−ｊの処理を引き継ぐサーバ１０３−ｋが、サーバ１０３−ｊが処理を担当していたセッション群を、運用データ集合Ｒ１−ｋに含める。そして、サーバ１０３−ｊの処理を引き継ぐサーバ１０３−ｋが、冗長グループ１０４−ｇ内の他の全てのサーバ１０３−ｌ（ｌ≠ｊ、ｋ）に、運用データ集合Ｒ１−ｋ内の運用データを複製することにより、冗長系再構築処理が実行される。
【０１２６】
図２９は、実施例２におけるサーバ増減設によるステート情報の組換え例を示す説明図である。（Ａ）から（Ｂ）への遷移が、冗長グループ１０４−２において（Ａ）の状態からサーバ１０３−６を増設する場合の組換え例であり、（Ｂ）から（Ａ）への遷移が、冗長グループ１０４−２において（Ｂ）の状態からサーバ１０３−６を減設する場合の組換え例である。
【０１２７】
このように、実施例２によれば、サーバ１０３−ｊが、サーバ１０３−ｊの所属する冗長グループ１０４−ｇの他の全てのサーバ１０３−ｋ（ｋ≠ｊ）の冗長データを格納するため、同時に複数台のサーバ１０３−ｊが故障した場合にも、障害復旧処理を実行できる。また、データ複製範囲を冗長グループ１０４−ｇ内のサーバ１０３−ｊに限定することにより、複数台のサーバ１０３−ｊへのデータ複製時間や、サーバ１０３−ｊに必要となる記憶容量を抑制することができ、低コストで管理システムの耐障害性の向上を図ることができる。
【実施例３】
【０１２８】
つぎに、実施例３について説明する。実施例３は、実施例１および実施例２において、各サーバ１０３−ｊにおける冗長データ集合を、サーバ１０３−ｊ外の記憶装置に記憶させた例である。これにより、各サーバ１０３−ｊの記憶領域の使用量を削減することができる。
【０１２９】
図３０は、実施例３にかかる管理システム１００のハードウェア構成例を示すブロック図である。管理システム１００は、各サーバ１０３−ｊの冗長データ集合Ｒ２−１〜Ｒ２−Ｎを記憶する記憶装置３０００を有する。記憶装置３０００は、ネットワーク１１０に接続される。
【０１３０】
実施例３では、冗長データ集合Ｒ２−ｊがすべて記憶装置３０００に記憶されるため、実施例１のような運用／冗長の設定変更ではなく、記憶装置３０００からサーバ１０３−ｊへのデータ転送により、冗長データ集合Ｒ２−ｊのステート情報Ｓｐ−２が運用データ集合Ｒ１−ｊのステート情報Ｓｐ−１として格納される。
【０１３１】
このように、実施例３では、冗長データ集合Ｒ２−ｊをサーバ１０３−ｊとは異なる記憶装置３０００に記憶させるため、各サーバ１０３−ｊの記憶領域の使用量を削減することができる。また、サーバ１０３−ｊの増減設におけるステート情報組み換え時に記憶装置３０００にアクセスするサーバを、冗長グループ１０４−ｇ内のサーバ１０３−ｊに限定することにより、記憶装置３０００に同時にアクセスするサーバ数を抑制することができる。したがって、サーバ１０３−ｊの増減設におけるステート情報組み換え時の各サーバ１０３−ｊの読み出し速度が向上し、記憶装置３０００の処理負荷を低減することができる。
【０１３２】
以上に説明したように、本実施例によれば、負荷分散および冗長系再構築において、ステート情報配置組み換え時の障害発生範囲を抑制することができる。また、上述した実施例１〜３では、制御装置、負荷分散装置、およびサーバがネットワークを介して接続された管理システムを例に挙げて説明したが、これらが１台のコンピュータとして動作することとしてもよい。この場合、ネットワークはスイッチに置き換えられる。
【０１３３】
また、上述した実施例では、セッション群のステート情報Ｓｐ−１、Ｓｐ−２を例に挙げて説明したが、運用データとそのバックアップ用の冗長データとを保存する構成であれば、セッションに限らず、他の情報でもよい。
【０１３４】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１３５】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１３６】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１３７】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１３８】
１００  管理システム
１０１  制御装置
１０２−ｉ  負荷分散装置
１０３−ｊ  サーバ
１０４−ｇ  冗長グループ
１１０  ネットワーク
１２１  ハッシュ関数
１２２  対応情報
１３０  パケット処理部
６００  冗長グループ情報
７００  セッション群情報
３０００  記憶装置
Ｒ１−ｊ  運用データ集合
Ｒ２−ｊ  冗長データ集合
Ｓｐ−１  ステート情報（運用データ）
Ｓｐ−２  ステート情報（冗長データ）
【図１】
2015207150.tif 000003
【図２】
2015207150.tif 000004
【図３】
2015207150.tif 000005
【図４】
2015207150.tif 000006
【図５】
2015207150.tif 000007
【図６】
2015207150.tif 000008
【図７】
2015207150.tif 000009
【図８】
2015207150.tif 000010
【図９】
2015207150.tif 000011
【図１０】
2015207150.tif 000012
【図１１】
2015207150.tif 000013
【図１２】
2015207150.tif 000014
【図１３】
2015207150.tif 000015
【図１４】
2015207150.tif 000016
【図１６】
2015207150.tif 000017
【図１７】
2015207150.tif 000018
【図１８】
2015207150.tif 000019
【図１９】
2015207150.tif 000020
【図２０】
2015207150.tif 000021
【図２１】
2015207150.tif 000022
【図２２】
2015207150.tif 000023
【図２３】
2015207150.tif 000024
【図２５】
2015207150.tif 000025
【図２６】
2015207150.tif 000026
【図２７】
2015207150.tif 000027
【図２８】
2015207150.tif 000028
【図２９】
2015207150.tif 000029
【図３０】
2015207150.tif 000030
【図１５】
2015207150.tif 000031
【図２４】
2015207150.tif 000032