(57)【要約】  計算機システムは分散ＫＶＳを構成するための複数のノードを含み、複数のノードは、管理可能なデータ量の上限である上限データ量がそれぞれに設定されている複数のキーレンジを有し、新規のキーレンジを作成する場合、その新規のキーレンジの上限データ量と既存のキーレンジの上限データ量との合計が計算機装置のメモリの容量に基づく量である最大量を超えないように、既存のキーレンジの上限データ量を下げる。
2017130377.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機装置を備える計算機システムであって、
複数の計算機装置は、プロセッサ及びメモリを備え、分散ＫＶＳ（Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅ）を構成するための複数のノードを実行し、
複数のノードは、管理可能なデータ量の上限である上限データ量がそれぞれに設定されている複数のキーレンジを有し、
複数のノードは、新規のキーレンジを作成する場合、その新規のキーレンジの上限データ量と既存のキーレンジの上限データ量との合計が前記計算機装置のメモリの容量に基づく量である最大量を超えないように、前記既存のキーレンジの上限データ量を下げる
計算機システム。
【請求項２】
複数のノードは、それぞれが管理しているデータ量に偏りが存在するときにキーレンジを変更する処理であるリバランス処理を行う場合、
データの移動元及び移動先のキーレンジの上限データ量を下げた後、移動元のキーレンジの一部を分割して新規のキーレンジを生成し、
その新規のキーレンジに移動元のキーレンジの一部のデータを移行し、
その新規のキーレンジを移動先のキーレンジを管理するノードにコピーし、
そのコピーした新規のキーレンジを移動先のキーレンジに併合し、
移動元及び併合後のキーレンジの上限データ量を上げる
請求項１に記載の計算機システム。
【請求項３】
複数のノードは、新規ノードを追加する処理であるスケールアウト処理を行う場合、
データの移動元のキーレンジの上限データ量を下げた後、移動元のキーレンジの一部を分割して新規のキーレンジを生成し、
その新規のキーレンジに移動元のキーレンジの一部のデータを移行し、
その新規のキーレンジを新規ノードにコピーし、
移動元及び新規のキーレンジの上限データ量を上げる
請求項１に記載の計算機システム。
【請求項４】
複数のノードは、既存のノードを削除する処理であるスケールイン処理を行う場合、
移動先のキーレンジ及び削除対象のノードが有する移動元のキーレンジの上限データ量を下げた後、
その移動元のキーレンジを移動先のキーレンジを管理するノードにコピーし、
そのコピーした移動元のキーレンジを移動先のキーレンジに併合し、
併合後のキーレンジの上限データ量を上げる
請求項１に記載の計算機システム。
【請求項５】
前記リバランス処理に関する指示を複数のノードに発行するリバランス装置をさらに備え、
複数のノードにおけるキーレンジの上限データ量の下げる及び上げる処理は、前記リバランス装置から発行される指示に基づいて行われる
請求項２に記載の計算機システム。
【請求項６】
複数のノードは、キーレンジの上限データ量の状態が、初期状態、下げ状態、又は、上げ状態の何れであるかを管理し、
前記リバランス装置からキーレンジの上限データ量を下げる指示を受領したとき、前記キーレンジの上限データ量の状態が初期状態ならば当該指示を実行し、それ以外の状態ならば当該指示を実行せず、
前記リバランス装置からキーレンジの上限データ量を上げる指示を受領したとき、前記キーレンジの上限データ量の状態が初期状態又は上げ状態ならば当該指示を実行し、前記キーレンジの上限データ量の状態が上げ状態ならば当該指示を実行しない
請求項５に記載の計算機システム。
【請求項７】
複数のノードは、リバランス装置にリバランス処理に対応する処理番号を提供し、
リバランス装置は、複数のノードに対する指示にその提供された処理番号を含め、
複数のノードは、
最後に実施した処理番号を管理しておき、
リバランス装置から受領した指示に含まれる処理番号が、最後に実施した処理番号と同じ又はそれより大きいならばその指示を実施し、前記処理番号が最後の実施した処理番号よりも小さいならばその指示を実施しない
請求項５に記載の計算機システム。
【請求項８】
キーレンジの上限データ量を上げる又は下げる指示は、複数のノードの間で原始的配信される
請求項５に記載の計算機システム。
【請求項９】
複数の計算機装置を備える計算機システムで実行されるデータ処理方法であって、
複数の計算機装置は、プロセッサ及びメモリを備え、分散ＫＶＳを構成するための複数のノードを実行し、
複数のノードは、管理可能なデータ量の上限である上限データ量がそれぞれに設定されている複数のキーレンジを有し、
複数のノードは、新規のキーレンジを作成する場合、その新規のキーレンジの上限データ量と既存のキーレンジの上限データ量との合計が前記計算機装置のメモリの容量に基づく量である最大量を超えないように、前記既存のキーレンジの上限データ量を下げる
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、複数の計算機から構成される分散データベースに関する。
【背景技術】
【０００２】
近年、Ｗｅｂを用いたアプリケーションを実行する計算システムにおいてデータ量が爆発的に増大しており、複数のサーバにデータを分散させることによって、データへのアクセス性能を向上させるシステムが知られている。例えば、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）では、データを所定のレンジ（例えば、キーレンジなど）毎に分割し、分割されたデータを複数のサーバに配置することによって、システム全体のアクセス性能を向上させる方法が知られている。【０００３】
また、キャッシュサーバ等に用いられるシステムとして、ＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等のＮｏＳＱＬ（Ｎｏｔ  Ｏｎｌｙ  ＳＱＬ）データベースが知られている。ＫＶＳには、データ（バリュー）と、データの識別子（キー）とがペアとなったレコードが複数格納される。【０００４】
ＫＶＳでは、データに高速にアクセス可能な揮発性の記憶媒体、例えばメモリに、データを格納する構成（メモリストア）、データ格納の永続性に優れる不揮発性の記録媒体、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）やＨＤＤ等に、データを格納する構成（ディスクストア）、又は、前述したものを併用する構成等の種々の構成がとられている。【０００５】
インメモリ型ＫＶＳは、ディスク型ＫＶＳに比べて、高速なデータアクセスを実現するが、いくつか欠点もある。第一に、物理的制約などにより、ＳＳＤやＨＤＤに比べて一台のサーバに搭載可能なメモリ容量が小さいため、ディスク型ＫＶＳに比べて格納可能なデータ量が小さくなってしまう。第二に、メモリは揮発性の記録媒体であるため、何らかの障害で、サーバが停止するとメモリ上のデータが消滅してしまう。【０００６】
上記欠点を克服したシステムが、インメモリ型分散ＫＶＳ（以下、分散ＫＶＳ）である。分散ＫＶＳは、複数のサーバからクラスタを構成して、そのクラスタに含まれるサーバのメモリ上に構成されるＫＶＳである。第一の欠点に対しては、複数のサーバ上にあるメモリを統合することで、一台のサーバでは保持できないメモリ容量を確保できる。第二の欠点に対しては、複数のサーバ間で同じデータを複製しておくことで、一部のサーバが停止してもデータの消滅を回避できる。【０００７】
分散ＫＶＳを構成する各サーバは、他のサーバとは重複しないレンジを担当し、そのレンジに含まれるデータの集合（以下、パーティション）を格納する。さらに、各サーバは他のサーバが管理しているパーティションの複製を格納する。【０００８】
そして、分散ＫＶＳには、管理サーバのような特別なサーバが存在しないもしくは多重化させているため、単一点障害が存在しない。すなわち、任意のサーバに障害が発生した場合であっても、他のサーバが複製されたパーティションに基づいて処理を継続できるため、計算機システムが停止することがない。したがって、分散ＫＶＳは耐障害性も確保される。【０００９】
ここで、分散ＫＶＳに格納するデータ量が多くなることで、サーバの負荷が上昇した、または格納可能なデータ量が無くなった際の対策の一つとしてクラスタに新しいサーバを追加するスケールアウトがある。スケールアウトでは、サーバが担当するレンジの変更を行う処理（以下、リバランス処理）が行われる。また、一部のサーバだけにデータが偏ることで、システムのスループットが低下した際の対策の一つとしてデータの偏りを解消する際もリバランス処理が行われる。【００１０】
前述したような、リバランス処理については、特許文献１、２に記載された技術が知られている。特許文献１には、既存レンジとそれに対応する既存パーティションに対して、リバランス後の新しいパーティションを用意し、既存パーティションから新しいパーティションヘデータをコピーし、コピー完了後に、既存レンジとそれに対応する既存パーティションから、新しいレンジとそれに対応する新しいパーティションへアクセスを切り替える処理を行うことで、リバランス処理が実現できることが記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許公報第２０１１／２２５１２２号明細書
【特許文献２】国際公開第２０１５／７２０２５号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来の分散ＫＶＳを構成する計算機システムは、リバランス処理の際に行われるデータコピーにより、リソース溢れが発生するおそれがある。これに対処するために、メモリの増築やデータの流量監視などを行うことは、運用が煩雑になり、システムの信頼性も低下してしまう。そこで、本発明の目的は、分散ＫＶＳの運用容易性及び信頼性を向上させることにある。その他の目的については、実施例の説明において明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施例に係る計算機システムは複数の計算機装置を備え、複数の計算機装置は、プロセッサ及びメモリを備え、分散ＫＶＳを構成するための複数のノードを実行し、複数のノードは、管理可能なデータ量の上限である上限データ量がそれぞれに設定されている複数のキーレンジを有し、新規のキーレンジを作成する場合、その新規のキーレンジの上限データ量と既存のキーレンジの上限データ量との合計が計算機装置のメモリの容量に基づく量である最大量を超えないように既存のキーレンジの上限データ量を下げる。
【発明の効果】
【００１４】
本発明によれば、分散ＫＶＳを構成する計算機システムの運用容易性及び信頼性を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】本実施例に係る計算機システムの構成例を示す図。
【図２】計算機装置の構成例を示す図。
【図３】リバランス装置の構成例を示す図。
【図４】リバランス処理の概要を説明するための図。
【図５】状態遷移情報の例を示す図。
【図６】処理制御情報の例を示す図。
【図７】リソース情報の例を示す図。
【図８】発番情報の例を示す図。
【図９】リバランス装置の処理例を示すフローチャート。
【図１０】スケールアウト装置の処理例を示すフローチャート。
【図１１】スケールイン装置の処理例を示すフローチャート。
【図１２】構成管理プロセスの電文実行部の処理例を示すフローチャート。
【図１３】構成管理プロセスの発番部の処理例を示すフローチャート。
【図１４】レンジプロセスの処理番号制御部の処理例を示すフローチャート。
【図１５】レンジプロセスの状態制御部の処理例を示すフローチャート。
【図１６】レンジプロセスの電文実行部の処理例を示すフローチャート。
【図１７】レンジプロセスのリソースチェック部の処理例を示すフローチャート。
【図１８Ａ】リバランス処理の例を説明するための図。
【図１８Ｂ】リバランス処理の例を説明するための図。
【図１８Ｃ】リバランス処理の例を説明するための図。
【図１８Ｄ】リバランス処理の例を説明するための図。
【図１８Ｅ】リバランス処理の例を説明するための図。
【図１８Ｆ】リバランス処理の例を説明するための図。
【図１８Ｇ】リバランス処理の例を説明するための図。
【図１８Ｈ】リバランス処理の例を説明するための図。
【図１８Ｉ】リバランス処理の例を説明するための図。
【図１９Ａ】スケールアウト処理の例を説明するための図。
【図１９Ｂ】スケールアウト処理の例を説明するための図。
【図１９Ｃ】スケールアウト処理の例を説明するための図。
【図１９Ｄ】スケールアウト処理の例を説明するための図。
【図１９Ｅ】スケールアウト処理の例を説明するための図。
【図１９Ｆ】スケールアウト処理の例を説明するための図。
【図１９Ｇ】スケールアウト処理の例を説明するための図。
【図１９Ｈ】スケールアウト処理の例を説明するための図。
【図２０Ａ】スケールイン処理の例を説明するための図。
【図２０Ｂ】スケールイン処理の例を説明するための図。
【図２０Ｃ】スケールイン処理の例を説明するための図。
【図２０Ｄ】スケールイン処理の例を説明するための図。
【図２０Ｅ】スケールイン処理の例を説明するための図。
【図２０Ｆ】スケールイン処理の例を説明するための図。
【図２０Ｇ】スケールイン処理の例を説明するための図。
【図２１Ａ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｂ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｃ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｄ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｅ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｆ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｇ】リバランス処理において電文の二重実施の防止例を説明するための図。
【図２１Ｈ】リバランス処理において電文の二重実施の防止例を説明するための図。
【発明を実施するための形態】
【実施例１】
【００１６】
図１は、本実施例に係る計算機システムの構成例を示す。【００１７】
計算機システム１は、リバランス装置２０、スケールイン装置２２、スケールアウト装置２４、死活監視装置３０、クライアント装置４０、及び、複数の計算機装置１０を有し、これらは、ネットワーク５０を介して双方向通信可能に接続されている。【００１８】
複数の計算機装置１０は、複数のノード１１０（図２参照）を有し、複数のノード１１０が連携して分散ＫＶＳを構成する。各ノード１１０は、キーの全範囲の内の一部の範囲を示すキーレンジ（単に「レンジ」という場合もある）を管理する。耐障害性を高めるため、複数のノード１１０が、同じキーレンジを管理してよい。以下、複数の計算機装置１０を「計算機クラスタ」という場合がある。【００１９】
リバランス装置２０は、各キーレンジが保持するデータ量に偏りが発生した場合に、各キーレンジが保持するデータ量が均等化されるようにキーレンジを変更する処理（「リバランス処理」という）を実施する装置である。スケールイン装置２２は、複数のノード１１０から少なくとも１つのノード１１０を削除する処理（「スケールイン処理」という）を実施する装置である。スケールアウト装置２４は、複数のノード１１０に少なくとも１つのノード１１０を追加する処理（「スケールアウト処理」という）を実施する装置である。リバランス装置２０、スケールイン装置２２、及びスケールアウト装置２４は、１つの装置であってもよい。【００２０】
死活監視装置３０は、各装置の死活を監視する装置である。例えば、死活監視装置３０は、各装置に対して定期的にＰＩＮＧを送信し、初手の時間内に応答が返ってこなかったならば（タイムアウトしたならば）、その装置が停止していると判断してよい。そして、死活監視装置３０は、その停止していると判断した装置に対応する待機系の装置に対して、処理を引き継ぐように指示してよい。【００２１】
クライアント装置４０は、複数の計算機装置１０が構成する分散ＫＶＳを利用する。例えば、クライアント装置４０は、計算機クラスタに対して、データの書き込み、読み出し、削除等を要求することができる。データの書き込み要求を受領した計算機クラスタは、そのデータからキーを算出し、そのキーを含むレンジを管理するノード１１０に、そのキー及びデータを書き込んでよい。データの取得要求を受領した計算機クラスタは、そのデータからキーを算出し、そのキーを含むレンジを管理するノード１１０から、そのキーに対応するデータを読み出して、クライアント装置４０へ返してよい。削除についても同様である。【００２２】
図２は、計算機装置１０の構成例を示す。【００２３】
計算機装置１０は、プロセッサ１０２、主記憶デバイス１０４、補助記憶デバイス１０３、及びネットワークＩ／Ｆデバイス１０１を備える。【００２４】
プロセッサ１０２は、主記憶デバイス１０４に格納されるプログラムを実行する。補助記憶デバイス１０３は、各種情報を格納する。補助記憶デバイス１０３の例は、ＨＤＤ、ＳＳＤ等である。ネットワークＩ／Ｆデバイス１０１は、計算機装置１０がネットワーク５０を介して他の装置と通信を行うためのデバイスである。ネットワークＩ／Ｆデバイス１０１の例は、Ｅｔｈｅｒｎｅｔカード等である。主記憶デバイス１０４は、プロセッサ１０２が実行するプログラム及びそのプログラムの実行に必要な情報を格納する。主記憶デバイス１０２の例は、ＳＲＡＭ、ＤＲＡＭ等である。なお、本実施例は、主記憶デバイス１０４に分散ＫＶＳを構築するが、補助記憶デバイス１０３に分散ＫＶＳを構築するディスクストア（図示省略）を構築してもよい。【００２５】
主記憶デバイス１０４は、ノード１１０を実現するためのプログラムを格納する。なお、１つの計算機装置１０には複数のノード１１０が存在してもよい。ノード１１０は、構成管理プロセス１３０、コピー部１６０、複数のレンジプロセス１７０を実現するためのプログラムを含む。【００２６】
構成管理プロセス１３０は、原始的配信部１３１、電文貯蓄部１３２、電文実行部１３３、発番部１３４、操作発行部１３５、及び発番情報４００を有してよい。【００２７】
レンジプロセス１７０は、原始的配信部１７１、処理番号制御部１７４、リソースチェック部１７５、電文貯蓄部１７２、状態制御部１７６、電文実行部１７３、データストア部１７７、グループ情報６００、リソース情報５００、処理制御情報７００、状態遷移情報８００を有してよい。以下、主記憶デバイス１０４に格納されるプログラム及び情報について説明する。【００２８】
＜レンジプロセス＞
レンジプロセス１７０は、一つのレンジを担当する処理単位である。レンジプロセス１７０は「状態」及び「イベン卜」を用いて対象の振る舞いが表現されるシステム（状態マシンやオートマトンとも呼ばれる）であって、内部に現在の状態を保持し、外部からイベン卜が入力された場合、予め決定されたルールにしたがって、現在の状態を次の状態へ「状態遷移」させる。【００２９】
ここで、ＫＶＳ内で保存しているキーに対するデータを「状態」、当該キーに対するデータ更新等の操作を「イベン卜」、当該操作に対する当該データの更新処理を「状態遷移」と見立てた場合、ＫＶＳはキー毎のレンジプロセス１７０の集合として扱うことができる。【００３０】
ただし、キー毎のレンジプロセス１７０の集合を運用する場合、レンジプロセス１７０の数が膨大となるため現実的ではない。例えば、キーのデータ長が４バイトである場合、４バイトで表現できるキーの数（２の３２乗）より、必要となるレンジプロセス１７０の数は約４２億個になる。【００３１】
したがって、ＫＶＳは特定のレンジに含まれるキーの集合毎に一つのレンジプロセス１７０を運用する方が望ましい。レンジはハッシュ値の範囲を表し、各データのキーからハッシュ値を算出し、算出したハッシュ値が含まれるレンジを担当するレンジプロセス１７０がそのデータを格納するものとする。この方式をＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法と呼ぶ。上記方式以外にもＲａｎｇｅ法及びＬｉｓｔ法等の方式を採用しても良い。【００３２】
そして、分散ＫＶＳをレンジプロセス１７０で実現しようとする場合、データを複製し合う複数のレンジプロセス１７０間でデータの一貫性を維持するため、複数のレンジプロセス１７０に同一の振る舞いを実行させる必要がある。なお、データを複製し合うために同一の振る舞いを実行するレンジプロセス１７０の集合を「グループ」と呼ぶ。グループに属する全レンジプロセス１７０が同一の振る舞いを実行するためには、グループに属する全レンジプロセス１７０に同一イベン卜を同一の入力順で入力する必要がある。そこで、イベン卜を入力する順番を決定するために原子的配信部１７１が使用される。【００３３】
レンジプロセス１７０の原子的配信部１７１は、同じグループに属するレンジプロセス１７０の原子的配信部１７１と通信できる。グループに関する情報は、グループ情報６００に格納されている。そして、例えば分散合意アルゴリズムを用いて、グループ内で同一の電文を同一の順序で配信する。当該配信方法を原子的配信と呼ぶ（他にも全順序ブロードキャス卜や原子的ブロードキャス卜とも呼ばれることがある）。【００３４】
電文実行部１７３は、電文貯蓄部１７２から電文を取り出し、データストア部１７７が管理するデータに対し、電文に対応した各種処理を行う。各種処理は、例えばデータの更新、上限データ量の下げ操作、上限データ量の上げ操作、初期化操作などである。【００３５】
＜構成管理プロセス＞
構成管理プロセス１３０は、死活監視装置２０やリバランス装置２０などから受領した電文に基づいて各種の動作を行う。【００３６】
構成管理プロセス１３０の原始的配信部１３１は、全ての構成管理プロセス１３０含まれる原始的配信部１７１と通信でき、全ての構成管理プロセス１３０に原子的配信する。【００３７】
電文貯蓄部１３２は、原始的配信部１３１で原始的配信された電文をＦＩＦＯ方式で一時的に貯蓄する。【００３８】
電文実行部１３３は、電文貯蓄部１７２から電文を取り出して、その電文に対応した各種処理を行う。各種処理は、例えば、構成変更処理や、採番処理などである。詳細については後述する。【００３９】
発番部１３４は、処理番号を発番する。詳細については後述する。【００４０】
操作発行部１３５は、電文送信部２１１や構成管理プロセス１３０の電文実行部１３３が送信する電文に処理番号を付与する。【００４１】
図３は、リバランス装置２０の構成例を示す。【００４２】
リバランス装置２０は、プロセッサ２０２、主記憶デバイス２０４、補助記憶デバイス２０３、及びネットワークＩ／Ｆデバイス２０１を備える。【００４３】
プロセッサ２０２は、主記憶デバイス２０４に格納されるプログラムを実行する。補助記憶デバイス２０３は、各種情報を格納する。補助記憶デバイス２０３の例は、ＨＤＤ、ＳＳＤ等である。ネットワークＩ／Ｆデバイス２０１は、リバランス装置２０がネットワーク５０を介して他の装置と通信を行うためのデバイスである。ネットワークＩ／Ｆデバイス２０１の例は、Ｅｔｈｅｒｎｅｔカード等である。主記憶デバイス２０４は、プロセッサ２０２が実行するプログラム及びそのプログラムの実行に必要な情報を格納する。主記憶デバイス２０４の例は、ＳＲＡＭ、ＤＲＡＭ等である。【００４４】
主記憶デバイス２０４には、構成情報管理部２１４、性能監視部２１５、電文送信部２１１、採番部２１３、操作発行部２１２の機能を実現するためのプログラムが格納されてよい。【００４５】
構成情報管理部２１４は、ノード１１０、及びノード１１０に含まれるレンジプロセス１７０の構成に関する構成情報を管理する。【００４６】
性能監視部２１５は、各グループの性能指標を定期的に収集する。そして、性能監視部２１５は、その収集結果から、グループ間で性能指標の偏りが発生しているか否かを判定する。性能監視部２１５は、偏りが発生していると判定した場合、リバランス処理に係る電文を電文送信部２１１に送信させる。【００４７】
電文送信部２１１は、リバランス処理を行うために、計算機クラスタに対して、電文を送信する。これらの電文は、例えば、初期化電文、上限データ量上げ電文、上限下げ電文、初期化電文やレンジプロセス１７０を操作するための電文であってよい。レンジプロセス１７０の操作とは、例えば、空のレンジの作成操作、レンジの分割操作、レンジのコピー操作、レンジの併合操作等である。詳細については後述する。【００４８】
採番電文は、計算機クラスタに対して、処理番号の採番を要求する電文である。採番電文は、後述の採番部２１３によって発行されてよい。【００４９】
上限データ量上げ電文は、計算機クラスタに対して、指定のキーレンジの上限データ量を上げることを要求する電文である。【００５０】
上限データ量下げ電文は、計算機クラスタに対して、指定のキーレンジの上限データ量を下げることを要求する電文である。【００５１】
構成変更電文は、死活監視装置３０がノード１１０のダウンを検知した場合に送られる電文であり、計算機クラスタからダウンしたノード１１０を切り離すことを要求する電文である。【００５２】
データ更新電文は、計算機クラスタに対して、指定のデータに対する更新（書き込み、読み出し、移動、削除等）を要求する電文である。【００５３】
初期化電文は、リバランス処理の開始に先だって、計算機クラスタに対して、状態遷移情報８００中の状態を初期化することを要求する電文である。【００５４】
採番部２１３は、計算機クラスタに対して採番を要求する電文（「採番電文」）を発行する。そして、採番部２１３は、その採番電文に対して計算機クラスタから発番された処理番号を管理する。この処理番号と操作発行部２１２により、例えば、何らかの異常状態により、現用系のリバランス装置２０と待機系のリバランス装置２０とが同じ電文を計算機クラスタに送信してしまったときに、計算機クラスタがこれらの同じ電文を二重実施してしまうことを防止することができる。【００５５】
図４は、リバランス処理の概要を説明するための図である。【００５６】
この例では、ハッシュ値は１〜２０００の間で求められ、１〜２０００までのレンジでシステムが取り扱う全データが格納できるとする。ここで、１〜１０００のレンジαに含まれる丸で表わされるデータを処理するグループＡ、１００１〜１７００のレンジβに含まれる四角で表わされるデータを処理するグループＢ、１７０１〜２０００のレンジγに含まれる三角で表わされるデータを処理するグループＣ、によってデータ更新等の操作を処理する分散ＫＶＳについて説明する。なお、各ノードが保持可能な最大データ量を「２００ＭＢ」とし、レンジα、β、γの上限データ量を、それぞれ、「１００ＭＢ」とする。【００５７】
Ｒ１のように、グループＡはレンジαに含まれる３個のデータを処理しており、各データはノードＡとノードＢ上に存在するグループＡに属するレンジプロセスのデータストア部１７７で多重化されているため、グループＡは計６個（＝３個ｘ２多重）のデータを保持している。【００５８】
同様に、グループＢはレンジβに含まれる７個のデータを処理しており、各データはノードＡとノードＣ上に存在するグループＢに属するレンジプロセスのデータストア部で多重化されているため、グループＢは計１４個（＝７個ｘ２多重）のデータを保持している。【００５９】
さらに同様に、グループＣはレンジγに含まれる５個のデータを処理しており、各データはノードＢとノードＣ上に存在するグループＣに属するレンジプロセスのデータストア部で多重化されているため、グループＣは計１０個（＝５個ｘ２多重）のデータを保持している。【００６０】
このため各グループ間で負荷に偏りが生じている。そこで、レンジβの範囲を狭め、レンジαの範囲を広げることにより偏りを無くすため、移動グループの作成、グループの分割操作、移動グループの移動、グループの併合操作及び移動グルーフの削除というステップを実施することによりリバランスする処理を説明する。【００６１】
まず、グループの分割操作の準備として、グループＢを含むノードに、レンジ範囲が無い空レンジを担当する、一時的に使用する移動グループＤを作成する。具体的には、ノードＡとノードＣがグループＢに属するレンジを含むため、ノードＡとノードＣに移動グループＤを作成する。【００６２】
次に、グループの分割操作を行い、グループＢのレンジβと移動グループＤのレンジδを更新する。また、グループの分割操作を行う際、移動グループＤが新しく担当するレンジでグループＢが格納しているデータについては、グループＢから移動グループＤへ移動させる。なお、移動グループＤが担当するデータは図中では菱形で表される。【００６３】
次に、Ｒ２のように、移動グルーフＤを移動させるため、まず、ノードＣが保持する移動グループＤに属するレンジプロセス及び当該レンジプロセスが保持するデータをノードＢにコピーし、コピーしたレンジプロセスを移動グループＤに属させる（図中の「コピー」）。ここで、あるグループに属するレンジプロセスを別のノードにコピーし、かつ同じグループに属させることをグループ内プロセスコピー処理と呼ぶ。【００６４】
このとき、ノードＢには、元々のグループＡ（レンジα）とグループＣ（レンジγ）のデータに加えて、コピーされたグループＤ（レンジδ）のデータが存在することになる。すなわち、レンジαの上限データ量「１００ＭＢ」と、レンジγの上限データ量「１００Ｍ」と、レンジδの上限データ量「３８ＭＢ」の合計が、ノードＢが保持可能な最大データ量「２００ＭＢ」を超えてしまっている。本実施例は、このような問題が発生しないようにする。【００６５】
次に、グループの併合操作上で邪魔となるノードＣ上に存在する移動グループＤに属するレンジプロセスを削除する。ここで、あるグループに属するレンジプロセスの一部を削除することをグループ内プロセス削除処理と呼んでもよい。【００６６】
次に、Ｒ３のように、グループの併合操作を行い、グループＡのレンジαと移動グループＤのレンジδを更新する。また、グループの併合操作を行う際、グループＡが新しく担当するレンジで移動グループＤが格納しているデータについては、移動グループＤからグループＡへ移動させる。【００６７】
これにより、Ｒ１と比べてＲ３は、グループＡのレンジαが「１〜１０００」から「１〜１５００」に変更され、グループＢのレンジβが「１００１〜１７００」から「１５０１〜１７００」に変更され、また、グループＡとグループＢに格納されるデータ数が各々１０個（＝５個ｘ２多重）に均等化されている。【００６８】
ここで、グループの分割操作とグループの併合操作は、「レンジ更新処理」と呼ばれる処理によって実現する。具体的には、グループの分割操作は、グループＢが担当するレンジβと移動グループＤが担当するレンジδを、「１００１〜１７００」と「ＮＵＬＬ」から、「１５０１〜１７００」と「１００１〜１５０１」に更新することで実現する。また、グループの併合操作は、移動グループＤが担当するレンジδとグループＡが担当するレンジαを、「１００１〜１５０１」と「１〜１０００」から、「ＮＵＬＬ」とレンジ「１〜１５００」に更新することで実現する。【００６９】
図５は、状態遷移情報８００の例を示す。【００７０】
状態遷移情報８００は、レンジプロセス１７０の状態と、その状態においてレンジプロセス１７０が実行可能な操作との対応関係についての情報を含む。【００７１】
図５の例は、初期状態のとき、上限データ量を上げる操作（上限データ量上げ操作）、及び、上限データ量を下げる操作（上限データ量下げ操作）が実行可能であることを示す。同様に、上限データ量下げ操作が完了している状態（上限データ量下げ状態）のとき、上限データ量上げ操作のみが実行可能であり、上限データ量上げ操作が完了している状態（上限データ量上げ状態）のとき、初期化操作のみが実行可能であることを示す。【００７２】
これにより、一連の処理（例えば１回のリバランス処理）における、上限データ量の上げ下げの操作の整合性を保つことができる。【００７３】
図６は、処理制御情報７００の例を示す。【００７４】
処理制御情報７００には、レンジプロセス１７０がリバランス装置２０などから最後に受領した電文の処理番号（最終処理番号）、及び、レンジプロセス１７０の現在の状態についての情報を含む。【００７５】
最終処理番号は、上記で説明したように、同じ電文の二重実行を防止するために用いられる。【００７６】
レンジプロセス１７０の現在の状態は、レンジプロセス１７０が現在、実行可能な操作を決めるために用いられる。ノード１１０の現在の状態が取り得る値は、状態遷移情報８００のノード１１０の状態に登録されている値であってよい。【００７７】
図７は、リソース情報５００の例を示す。【００７８】
リソース情報５００は、レンジの現在の上限データ量、及び、そのレンジに現在保持されているデータ量（保持データ量）についての情報を含む。【００７９】
図８は、発番情報４００の例を示す。【００８０】
発番情報４００は、構成管理プロセス１３０の発番部１３４が、リバランス装置２０等に発番した処理番号についての情報を含む。【００８１】
図９は、リバランス装置２０の処理例を示すフローチャートである。【００８２】
リバランス装置２０は、性能監視部２１５によってリバランスが必要と判定すると、以下の処理を実施する。【００８３】
（Ｓ２００）採番部２１３は、構成管理プロセス１３０に対して採番電文を送信する。そして採番部２１３は、構成管理プロセス１３０から当該リバランス処理に対応する処理番号を受領し、これを登録する。この処理番号は、操作発行部２１２を通して、以下のリバランス処理における全ての電文に付与されてもよい。そしてＳ２０２へ進む。【００８４】
（Ｓ２０２）電文送信部２１１は、レンジプロセス１７０に対して、初期化電文を送信する。そしてＳ２０４へ進む。【００８５】
（Ｓ２０４）電文送信部２１１は、レンジプロセス１７０と連携して、移動元レンジを管理するノード１１０に、空の一時レンジを作成する。そしてＳ２０６へ進む。【００８６】
（Ｓ２０６）電文送信部２１１は、レンジプロセス１７０に対して、移動元レンジ及び移動先レンジの上限データ量下げ電文を送信する。そしてＳ２０８へ進む。【００８７】
（Ｓ２０８）電文送信部２１１は、レンジプロセス１７０と連携して、移動元レンジのレンジ分割を実行する。例えば、操作発行部は、移動元レンジの一部のデータをＳ２０４で作成した一時レンジに移動させる。【００８８】
（Ｓ２１０）電文送信部２１１は、レンジプロセス１７０と連携して、一時レンジを、移動先レンジを管理するノード１１０にコピーする。そしてＳ２１２へ進む。【００８９】
（Ｓ２１２）電文送信部２１１は、レンジプロセス１７０と連携して、一時レンジを移動先レンジに併合する。そしてＳ２１４へ進む。【００９０】
（Ｓ２１４）電文送信部２１１は、レンジプロセス１７０と連携して、一時レンジ（不要レンジ）を削除する。そしてＳ２１６へ進む。【００９１】
（Ｓ２１６）電文送信部２１１は、レンジプロセス１７０に対して、移動元レンジ及び移動先レンジの上限データ量上げ電文を送信する。そして本処理を終了する。【００９２】
以上によれば、リバランス処理において、ノード１１０が管理するデータ量がそのノード１１０が管理可能な最大データ量を超えることを防止することができる。なお、本処理の具体例を、図１８Ａ〜図１８Ｉ、及び、図２１Ａ〜図２１Ｈに示す。【００９３】
図１０は、スケールアウト装置２４の処理例を示すフローチャートである。【００９４】
スケールアウト装置２４は、新規ノード１１０を計算機クラスタに追加する場合（Ｓ３００）、以下の処理を実施する。【００９５】
（Ｓ３０２）採番部２１３は、構成管理プロセス１３０に対して採番電文を送信する。そして採番部２１３は、構成管理プロセス１３０から当該スケールアウト処理に対応する処理番号を受領し、これを登録する。この処理番号は、操作発行部２１２を通して、以下のスケールアウト処理における全ての電文に付与されてよい。そしてＳ３０４へ進む。【００９６】
（Ｓ３０４）電文送信部２１１は、レンジプロセス１７０に対して、初期化電文を送信する。そしてＳ３０６へ進む。【００９７】
（Ｓ３０６）電文送信部２１１は、レンジプロセス１７０と連携して、移動元レンジを管理するノード１１０に空の移動先レンジを生成する。そしてＳ３０８へ進む。【００９８】
（Ｓ３０８）電文送信部２１１は、レンジプロセス１７０に対して、移動元レンジの上限データ量下げ電文を送信する。そしてＳ３１０へ進む。【００９９】
（Ｓ３１０）電文送信部２１１は、レンジプロセス１７０と連携して、移動元レンジのレンジ分割を実施する。例えば、操作発行部２１２は、移動元レンジの一部のデータをＳ３０６で作成した移動先レンジに移動させる。そしてＳ３１２へ進む。【０１００】
（Ｓ３１２）電文送信部２１１は、レンジプロセス１７０と連携して、移動先レンジを新規ノード１１０にコピーする。また、操作発行部２１２は、レンジプロセス１７０と連携して、移動先レンジを新規ノード１１０にコピーする。【０１０１】
（Ｓ３１４）電文送信部２１１は、レンジプロセス１７０と連携して、Ｓ３１２のレンジのコピーによって余分になったレンジ（不要レンジ）を削除する。そしてＳ２１４へ進む。【０１０２】
（Ｓ３１６）電文送信部２１１は、レンジプロセス１７０に対して、移動元レンジ及び移動先レンジの上限データ量上げ電文を送信する。そして本処理を終了する。【０１０３】
以上によれば、スケールアウト処理において、ノード１１０が管理するデータ量がそのノード１１０が管理可能な最大データ量を超えることを防止することができる。なお、本処理の具体例を、図１９Ａ〜図１９Ｈに示す。【０１０４】
図１１は、スケールイン装置２２の処理例を示すフローチャートである。【０１０５】
スケールイン装置２２は、計算機クラスタから既存ノード１１０を削除する場合、以下の処理を実施する。【０１０６】
（Ｓ４００）採番部２１３は、構成管理プロセス１３０に対して採番電文を送信する。そして採番部２１３は、構成管理プロセス１３０から当該スケールイン処理に対応する処理番号を受領し、これを登録する。この処理番号は、操作発行部２１２を通して、以下のスケールイン処理における全ての電文に付与されてよい。そしてＳ４０２へ進む。【０１０７】
（Ｓ４０２）電文送信部２１１は、レンジプロセス１７０に対して、初期化電文を送信する。そしてＳ４０４へ進む。【０１０８】
（Ｓ４０４）電文送信部２１１は、レンジプロセス１７０に対して、移動元レンジ及び併合先レンジの上限データ量下げ電文を送信する。そしてＳ４０６へ進む。【０１０９】
（Ｓ４０６）電文送信部２１１は、レンジプロセス１７０と連携して、移動元レンジを、移動先レンジを管理するノード１１０に複製する。そしてＳ４０８へ進む。【０１１０】
（Ｓ４０８）電文送信部２１１は、レンジプロセス１７０と連携して、移動先レンジを移動先レンジに併合する。そしてＳ４１０へ進む。【０１１１】
（Ｓ４１０）電文送信部２１１は、移動元レンジ（不要レンジ）を削除する。そしてＳ４１２へ進む。【０１１２】
（Ｓ４１２）電文送信部２１２は、レンジプロセス１７０に対して、移動先レンジの上限値データ量上げ電文を送信する。そしてＳ４１４へ進む。【０１１３】
（Ｓ４１４）電文送信部２１１は、削除対象ノード１１０を計算機クラスタから削除する。そして本処理を終了する。【０１１４】
以上によれば、スケールイン処理において、ノード１１０が管理するデータ量がそのノード１１０が管理可能な最大データ量を超えることを防止することができる。なお、本処理の具体例を、図２０Ａ〜図２０Ｇに示す。【０１１５】
図１２は、構成管理プロセス１３０の電文実行部１３３の処理例を示すフローチャートである。【０１１６】
（Ｓ５００）電文実行部１３３は、受領した電文が構成変更電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ５０４へ進み、「ＮＯ」ならばＳ５０２へ進む。【０１１７】
（Ｓ５０２）電文実行部１３３は、受領した電文が採番電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ５１０へ進み、「ＮＯ」ならば本処理を終了する。【０１１８】
＜構成変更電文の場合＞
（Ｓ５０４）電文実行部１３３は、初期化電文を受領しているレンジプロセス１７０を含むノード１１０の構成管理プロセス１３０であって、代表となる構成管理プロセス１３０であるか否かを判定する。その判定結果が「ＹＥＳ」ならばＳ５１２へ進み、「ＮＯ」ならば本処理を終了する。【０１１９】
（Ｓ５１２）電文実行部１３３は、レンジプロセス１７０に上限データ量上げ電文を送信し本処理を終了する。また、電文を送信する際に、操作発行部１３５を通して処理番号を付与してもよい。【０１２０】
＜採番電文の場合＞
（Ｓ５１０）発番部１３４は、その受領した採番電文に対応する処理番号を発番し、本処理を終了する。発番部１３４の処理の詳細については後述する（図１３参照）【０１２１】
図１３は、構成管理プロセス１３０の発番部１３４の処理例を示すフローチャートである。【０１２２】
（Ｓ６００）発番部１３４は、電文実行部１３３から採番電文を受け取ると、Ｓ６０２の処理に進む。【０１２３】
（Ｓ６０２）発番部１３４は、発番情報４００に含まれる処理番号よりも大きな処理番号を発番する。そしてＳ６０４へ進む。【０１２４】
（Ｓ６０４）発番部１３４は、Ｓ６０２で発番した処理番号を発番情報４００に登録する。そしてＳ６０６へ進む。【０１２５】
（Ｓ６０６）発番部１３４は、自分が原始的配信部１３１で採番電文を受領したノード１１０であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ６０８へ進み、「ＮＯ」ならば本処理を終了する。【０１２６】
（Ｓ６０８）発番部１３４は、Ｓ６０２で発番した処理番号を、採番電文の送信元（例えばリバランス装置２０）に返す。そして本処理を終了する。【０１２７】
図１４は、レンジプロセス１７０の処理番号制御部１７４の処理例を示すフローチャートである。【０１２８】
（Ｓ７００）処理番号制御部１７４は、電文貯蓄部１７２から電文を取り出す。そしてＳ７０２へ進む。【０１２９】
（Ｓ７０２）処理番号制御部１７４は、Ｓ７００で取り出した電文の処理番号が、処理制御情報７００に登録されている最終処理番号以上であるか否かを判定する。処理番号制御部１７４は、その判定結果が「ＹＥＳ」ならばＳ７０４へ進み、「ＮＯ」ならば本処理を終了する。【０１３０】
（Ｓ７０４）処理番号制御部１７４は、最終処理番号を、その取得した電文の処理番号に更新する。そしてＳ７０６へ進む。【０１３１】
（Ｓ７０６）処理番号制御部１７４は、Ｓ７００で取り出した電文を状態制御部１７６に渡し、本処理を終了する。【０１３２】
図１５は、レンジプロセス１７０の状態制御部１７６の処理例を示すフローチャートである。【０１３３】
（Ｓ８００）状態制御部１７６は、処理番号制御部１７４から電文を受け取ると、Ｓ８０２へ進む。【０１３４】
（Ｓ８０２）状態制御部１７６は、状態遷移情報８００を参照し、Ｓ８００で受け取った電文が、処理制御情報７００の現在の状態において実行可能であるか否かを判定する。状態制御部１７６は、その判定結果が「ＹＥＳ」ならばＳ８０４へ進み、「ＮＯ」ならば本処理を終了する。【０１３５】
（Ｓ８０４）状態制御部１７６は、Ｓ８００で受け取った電文を電文実行部１７３に渡し、本処理を終了する。【０１３６】
図１６は、レンジプロセス１７０の電文実行部１７３の処理例を示すフローチャートである。【０１３７】
（Ｓ９００）電文実行部１７３は、状態制御部１７６から電文を受け取ると、Ｓ９０２へ進む。【０１３８】
（Ｓ９０２）電文実行部１７３は、その電文がデータ更新電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ９０４へ進み、「ＮＯ」ならばＳ９１０へ進む。【０１３９】
（Ｓ９１０）電文実行部１７３は、その電文が上限データ量上げ電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ９１２へ進み、「ＮＯ」ならばＳ９２０へ進む。【０１４０】
（Ｓ９２０）電文実行部１７３は、その電文が上限データ量下げ電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ９２２へ進み、「ＮＯ」ならばＳ９３０へ進む。【０１４１】
（Ｓ９３０）電文実行部１７３は、その電文が初期化電文であるか否かを判定し、その判定結果が「ＹＥＳ」ならばＳ９３２へ進み、「ＮＯ」ならば本処理を終了する。【０１４２】
＜データ更新電文の場合＞
（Ｓ９０４）電文実行部１７３は、データをデータストア部１７７に蓄積し、本処理を終了する。【０１４３】
＜上限データ量上げ電文の場合＞
（Ｓ９１２）電文実行部１７３は、リソース情報５００の上限データ量を上げ操作する。例えば、リソース情報５００の上限データ量を、上限データ量上げ電文の指定する値に変更する。そしてＳ９１４へ進む。【０１４４】
（Ｓ９１４）電文実行部１７３は、処理制御情報７００の現在の状態を「上限データ量上げ状態」に変更し、本処理を終了する。【０１４５】
＜上限データ量下げ電文の場合＞
（Ｓ９２２）電文実行部１７３は、リソース情報５００の上限データ量を下げ操作する。例えば、リソース情報５００の上限データ量を、上限データ量下げ電文の指定する値に変更する。そしてＳ９２４へ進む。【０１４６】
（Ｓ９２４）電文実行部１７３は、処理制御情報７００の現在の状態を「上限データ量下げ状態」に変更し、本処理を終了する。【０１４７】
＜初期化電文の場合＞
（Ｓ９３２）電文実行部１７３は、処理制御情報７００を「初期状態」に変更し、本処理を終了する。【０１４８】
図１７は、レンジプロセス１７０のリソースチェック部１７５の処理例を示すフローチャートである。【０１４９】
（Ｓ１０００）リソースチェック部１７５は、リソース情報５００から上限データ量を取得する。【０１５０】
（Ｓ１００２）リソースチェック部１７５は、受領したデータ更新電文のデータをそのレンジに登録しても、Ｓ１０００で取得した上限データ量を超えないか否かを判定する。リソースチェック部１７５は、その判定結果が「ＹＥＳ」ならばＳ１００４へ進み、「ＮＯ」ならば本処理を終了する。【０１５１】
（Ｓ１００４）リソースチェック部１７５は、原始的配信部１７１にそのデータ更新電文を渡し、本処理を終了する。【０１５２】
次に、リバランス処理、スケールアウト処理、及び、スケールイン処理の具体的な例を示す。【０１５３】
図１８Ａ〜図１８Ｉは、本実施例におけるリバランス処理の例を説明するための図である。【０１５４】
（図１８Ａ）ノードＡがレンジ１及びレンジ４を管理し、ノードＢがレンジ１及びレンジ２を管理し、ノードＣがレンジ２及びレンジ３を管理し、ノードＤがレンジ３及びレンジ４を管理している構成において、レンジ３内のデータの一部をレンジ２に移動させるリバランス処理を行う。各ノードの最大メモリ量は「２００」、各レンジの監視上限（上限データ量に相当）は「１００」とする。【０１５５】
（図１８Ｂ）Ｓ２０４の処理により、移動元レンジ３を管理するノードＣ及びノードＤに空の一時レンジ３．５を作成する。ここで、空の一時レンジ３．５の監視上限を「３８」とする。【０１５６】
（図１８Ｃ）Ｓ２０６の処理により、移動元レンジ３及び移動先レンジ２の上限データ量下げ電文（監視上限を「６２」に変更する電文）を送信し、移動元レンジ３及び移動先レンジ２の監視上限を「６２」に変更する。この監視上限の値は、ノードが管理する全てのレンジの監視上限の合計が、ノードの最大メモリ量「２００」を超えないように決定されてよい。【０１５７】
（図１８Ｄ）Ｓ２０８の処理により、移動元レンジ３内の一部のデータを一時レンジ３．５に移動させる。【０１５８】
（図１８Ｅ）Ｓ２１０の処理により、一時レンジ３．５を、移動先レンジ２を管理するノードＢに複製する。このとき、ノードＢには、レンジ１とレンジ２とレンジ３．５が存在するが、図１８Ｃにおいてレンジ２の監視上限が「６２」に下げられているので、これらのレンジの監視上限の合計は、ノードＢの最大メモリ量「２００」を超えない。すなわち、リソース溢れが防止される。【０１５９】
（図１８Ｆ）Ｓ２１２の処理により、レンジ３．５をレンジ２に併合する。【０１６０】
（図１８Ｇ）Ｓ２１４の処理により、不要となったレンジ３．５を削除する。【０１６１】
（図１８Ｈ）Ｓ２１６の処理により、移動元レンジ３及び移動先レンジ２の上限データ量上げ電文（監視上限を「１００」に変更する電文）を送信し、移動元レンジ３及び移動先レンジ２の監視上限を「１００」に変更する。これにより、図１８Ｃで一旦下げられたレンジ２及び３の監視上限が元に戻る。【０１６２】
（図１８Ｉ）これらのリバランス処理が行われている間、例えばクライアント装置４０は、各レンジに対してデータ更新電文を送信してもよい。また、スケールアウト、スケールインについても同様である。【０１６３】
図１９Ａ〜図１９Ｈは、本実施例におけるスケールアウト処理の例を説明するための図である。【０１６４】
（図１９Ａ）ノードＡがレンジ１及びレンジ４を管理し、ノードＣがレンジ１及びレンジ３を管理し、ノードＤがレンジ３及びレンジ４を管理している構成において、計算機クラスタにノードＢを追加するスケールアウト処理を行う。各ノードの最大メモリ量は「２００」、各レンジの監視上限は「１００」とする。【０１６５】
（図１９Ｂ）Ｓ３００の処理において、ノードＢを計算機クラスタに追加する。【０１６６】
（図１９Ｃ）Ｓ３０６の処理において、移動元レンジ３を管理するノードＣ及びレンジ４に空の移動先レンジ３．５を作成する。ここで、移動先レンジ３．５の監視上限を「３８」とする。【０１６７】
（図１９Ｄ）Ｓ３０８の処理により、移動元レンジ３の上限データ量下げ電文の送信処理し、移動先レンジ３の監視上限を「６２」に変更する。【０１６８】
（図１９Ｅ）Ｓ３１０の処理により、移動元レンジ３内の一部のデータを移動先レンジ３．５に移動させる。このとき、ノードＣには、レンジ１とレンジ３とレンジ３．５とが存在するが、図１９Ｄにおいてレンジ３の監視上限が「６２」に下げられているので、これらのレンジの監視上限の合計は、ノードＣの最大メモリ量「２００」を超えない。ノードＤについても同様である。つまり、リソース溢れが防止される。【０１６９】
（図１９Ｆ）Ｓ３１２の処理により、移動先レンジ３．５を追加ノードＢにコピーする。また、全体でデータ量が均等化されるように、必要に応じて、ノードＡのレンジ１を追加ノードＢにコピーしてもよい。【０１７０】
（図１９Ｇ）Ｓ３１４の処理により、余分となった（不要な）ノードＣのレンジ１及びノードＤのレンジ３．５を削除する。【０１７１】
（図１９Ｈ）Ｓ３１６の処理により、移動元レンジ３及び移動先レンジ３．５の上限データ量上げ電文（監視上限を「１００」に変更する電文）を送信し、移動元レンジ３及び移動先レンジ３．５の監視上限を「１００」に変更する。これにより、図１９Ｅで一旦下げられた移動元レンジ３の監視上限が元に戻る。また、図１９Ｃで作成された移動先レンジ３．５の監視上限が「１００」に上がる。【０１７２】
図２０Ａ〜図２０Ｇは、本実施例におけるスケールイン処理の例を説明するための図である。【０１７３】
（図２０Ａ）ノードＡがレンジ１及びレンジ４を管理し、ノードＢがレンジ１及びレンジ２を管理し、ノードＣがレンジ２及びレンジ３を管理し、ノードＤがレンジ３及びレンジ４を管理している構成において、ノードＢを計算機クラスタから切り離すスケールイン処理を行う。各ノードの最大メモリ量は「２００」、各レンジの監視上限は「１００」である。【０１７４】
（図２０Ｂ）Ｓ４０４の処理により、移動元レンジ２及び移動先レンジ３の上限データ量下げ電文（監視上限を「５０」に変更する電文）を送信し、移動元レンジ２及び移動先レンジ３の監視上限を「５０」に変更する。【０１７５】
（図２０Ｃ）Ｓ４０６の処理により、移動元レンジ２を、移動先レンジ３を管理するノードＤにコピーする。このとき、ノードＤには、レンジ２とレンジ３とレンジ４とが存在するが、図２０Ｂにおいてレンジ３とレンジ４の監視上限が「５０」に下げられているので、これらのレンジの監視上限の合計は、ノードＤの最大メモリ量「２００」を超えない。つまり、リソース溢れが防止される。なお、冗長性を確保するために、削除対象のノードＢが管理するレンジ１を、ノードＣにコピーしてよい。【０１７６】
（図２０Ｄ）Ｓ４０８の処理により、移動元レンジ２を移動先レンジ３に併合させる。【０１７７】
（図２０Ｅ）Ｓ４１０の処理により、不要となった移動元レンジ２を削除する。【０１７８】
（図２０Ｆ）Ｓ４１２の処理により、併合レンジ３の上限データ量上げ電文を送信し、併合データ量の監視上限を「１００」に変更する。これにより、図２０Ｂでいったん下げられた移動先レンジ３の監視上限が元に戻る。【０１７９】
（図２０Ｇ）Ｓ４１４の処理により、削除対象のノードＢを計算機クラスタから削除する。【０１８０】
図２１Ａ〜図２１Ｈは、リバランス処理において電文の二重実施が防止される例を説明するための図である。【０１８１】
（図２１Ａ）ノードＡがレンジ１及びレンジ４を管理し、ノードＢがレンジ１及びレンジ２を管理し、ノードＣがレンジ２及びレンジ３を管理し、ノードＤがレンジ３及びレンジ４を管理している構成において、現用系のリバランス装置２０が、レンジ３内のデータの一部をレンジ２に移動させるリバランス処理を行う。各ノードの最大メモリ量は「２００」、各レンジの監視上限は「１００」とする。現用系のリバランス装置２０のＳ２００の処理により、構成管理プロセス１３０に採番電文を送信する。【０１８２】
（図２１Ｂ）採番電文を受領した構成管理プロセス１３０は、Ｓ６００〜Ｓ６０８の処理により、処理番号「１」を発番し、現用系のリバランス装置２０へ送信する。また、構成管理プロセス１３０は、その発番した処理番号「１」を、発番情報４００に登録する。処理番号「１」を受領した現用系のリバランス装置２０は、この処理番号「１」を保持する。【０１８３】
（図２１Ｃ）現用系のリバランス装置２０のＳ２０６の処理により、保持中の処理番号「１」を含む、移動元レンジ２及び移動先レンジ３の上限データ量下げ電文（監視上限を「６２」に変更する電文）を送信する。この上限データ量下げ電文の処理番号１は、構成管理プロセス１３０が発番情報４００に保持中の処理番号「１」と同じ（Ｓ７０２の判定結果が「ＹＥＳ」）なので、実行される。つまり、監視上限が「６２」に変更される。そして、この移動元レンジ２及び移動先レンジ３には、処理番号「１」が対応付けられる。【０１８４】
（図２１Ｄ）ここで、死活監視装置３０が、現用系のリバランス装置２０が停止したと誤判断したとする。誤判断の例は、現用系のリバランス装置２０の処理負荷が高く、死活監視装置３０へのＰＩＮＧ応答が遅れた（タイムアウトになった）場合などである。この場合、死活監視装置３０は、待機系のリバランス装置２０に対して処理の切り替えを指示する。【０１８５】
（図２１Ｅ）待機系のリバランス装置２０は、上記の図２１Ａと同様、構成管理プロセス１３０に採番電文を送信する。採番電文を受領した構成管理プロセス１３０の発番部１３４は、例えば、発番情報４００に保持中の処理番号「１」よりも大きい処理番号「２」を発番し、待機系のリバランス装置２０へ送信する。また、構成管理プロセス１３０は、その発番した処理番号「２」を発番情報４００に登録する。処理番号「２」を受領した待機系のリバランス装置２０は、この処理番号「２」を保持する。【０１８６】
（図２１Ｆ）待機系のリバランス装置２０のＳ２０６の処理により、上記の図２１Ｃと同様、保持中の処理番号２を含む、移動元レンジ２及び移動先レンジ３の上限データ量下げ電文（監視上限を「６２」に変更する電文）を送信する。この上限データ量下げ電文は、構成管理プロセス１３０が発番情報４００に保持中の処理番号２と同じ（Ｓ７０２の判定結果が「ＹＥＳ」）なので、実行される。つまり、監視上限は同じく「６２」に変更される。そして、この移動元レンジ２及び移動先レンジ３には、処理番号「２」が対応付けられる。【０１８７】
（図２１Ｇ）ここで、実際は停止していなかった現用系のリバランス装置２０が、図２１Ｃで実施したＳ２０６以降の処理（つまりＳ２０８〜Ｓ２１６の処理）を引き続き実施しようとする。例えば、Ｓ２１６の処理として、保持中の処理番号「１」を含む、移動元レンジ２及び移動先レンジ３の上限データ量上げ電文（管理上限を「１００」に変更する電文）を送信する。しかし、この上限データ量上げ電文の処理番号「１」は、レンジ２及び３に対応付けられている処理番号「２」よりも小さい（Ｓ７０２の判定結果が「ＮＯ」）なので、実行されない。すなわち、電文の二重実施が防止され、監視上限は「６２」のままとなる。【０１８８】
（図２１Ｈ）一方、待機系のリバランス装置２０も、上記図２１Ｆで実施したＳ２０６以降の処理（つまりＳ２０８〜Ｓ２１６の処理）を引き続き実施しようとする。例えば、Ｓ２１６の処理として、保持中の処理番号「２」を含む、移動元レンジ２及び移動先レンジ３の上限データ量上げ電文（管理上限を「１００」に変更する電文）を送信する。この上限データ量上げ電文の処理番号「２」は、レンジ２及び３に対応付けられている処理番号「２」と同じ（Ｓ７０２の判定結果が「ＹＥＳ」）なので、実行される。つまり、監視上限は「１００」に変更される。【０１８９】
以上の処理によれば、現用系及び待機系のリバランス装置２０が存在する構成において、リバランス処理が二重実施されることを防止することができる。【０１９０】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲を実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【０１９１】
１０：計算機装置  ２０：リバランス装置  ２２：スケールイン装置  ２４：スケールアウト装置  ３０：死活監視装置  ４０：クライアント装置  １１０：ノード  １３０：構成管理プロセス  １７０：レンジプロセス
【図１】
2017130377.tif 000003
【図２】
2017130377.tif 000004
【図３】
2017130377.tif 000005
【図４】
2017130377.tif 000006
【図５】
2017130377.tif 000007
【図６】
2017130377.tif 000008
【図７】
2017130377.tif 000009
【図８】
2017130377.tif 000010
【図９】
2017130377.tif 000011
【図１０】
2017130377.tif 000012
【図１１】
2017130377.tif 000013
【図１２】
2017130377.tif 000014
【図１３】
2017130377.tif 000015
【図１４】
2017130377.tif 000016
【図１５】
2017130377.tif 000017
【図１６】
2017130377.tif 000018
【図１７】
2017130377.tif 000019
【図１８Ａ】
2017130377.tif 000020
【図１８Ｂ】
2017130377.tif 000021
【図１８Ｃ】
2017130377.tif 000022
【図１８Ｄ】
2017130377.tif 000023
【図１８Ｅ】
2017130377.tif 000024
【図１８Ｆ】
2017130377.tif 000025
【図１８Ｇ】
2017130377.tif 000026
【図１８Ｈ】
2017130377.tif 000027
【図１８Ｉ】
2017130377.tif 000028
【図１９Ａ】
2017130377.tif 000029
【図１９Ｂ】
2017130377.tif 000030
【図１９Ｃ】
2017130377.tif 000031
【図１９Ｄ】
2017130377.tif 000032
【図１９Ｅ】
2017130377.tif 000033
【図１９Ｆ】
2017130377.tif 000034
【図１９Ｇ】
2017130377.tif 000035
【図１９Ｈ】
2017130377.tif 000036
【図２０Ａ】
2017130377.tif 000037
【図２０Ｂ】
2017130377.tif 000038
【図２０Ｃ】
2017130377.tif 000039
【図２０Ｄ】
2017130377.tif 000040
【図２０Ｅ】
2017130377.tif 000041
【図２０Ｆ】
2017130377.tif 000042
【図２０Ｇ】
2017130377.tif 000043
【図２１Ａ】
2017130377.tif 000044
【図２１Ｂ】
2017130377.tif 000045
【図２１Ｃ】
2017130377.tif 000046
【図２１Ｄ】
2017130377.tif 000047
【図２１Ｅ】
2017130377.tif 000048
【図２１Ｆ】
2017130377.tif 000049
【図２１Ｇ】
2017130377.tif 000050
【図２１Ｈ】
2017130377.tif 000051
【国際調査報告】
2017130377.tif 000052
2017130377.tif 000053