(57)【要約】【課題】  クライアントの設置場所に応じて、品質の高いサービスを提供可能なサービス提供サーバを動的に決定することができるようにする。【解決手段】  遅延時間判断手段１ａにより、クライアントから送られたリクエストが解析され、クライアントのネットワーク上の位置を識別され、クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、クライアントがデータセンタから応答を受け取るまでの処理遅延時間がデータセンタ毎に判断される。次に、振り分け先決定手段１ｂにより、遅延時間判断手段１ａで判断された処理遅延時間に基づいて、クライアントに対して少ない遅延時間でサービスを提供可能なデータセンタが優先的に、推奨センタとして選択される。そして、サービス振り分け手段１ｃの制御により、リクエストを出力したクライアントへのサービスが、推奨センタ内のサーバで実行される。【選択図】  図１
2006332825.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散プログラムにおいて、
コンピュータに、
クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断する遅延時間判断手段、
前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する振り分け先決定手段、
前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させるサービス振り分け手段、
として機能させることを特徴とする負荷分散プログラム。
【請求項２】
前記遅延時間判断手段は、前記リクエストの送信元アドレスに基づいて前記クライアントが接続されたクライアント接続サーバを特定し、特定されたクライアント接続サーバの位置に基づいて、前記クライアントと各データセンタとの間の処理遅延時間を判断することを特徴とする請求項１記載の負荷分散プログラム。
【請求項３】
前記遅延時間判断手段は、前記クライアントに対してインターネットへの接続サービスを提供するクライアント接続サーバと前記データセンタとの間の通信遅延時間が予め設定された遅延時間管理テーブルを参照して、前記クライアントと各データセンタとの間の処理遅延時間を判断することを特徴とする請求項２記載の負荷分散プログラム。
【請求項４】
前記サービス振り分け手段は、前記推奨センタの処理能力に前記リクエストに応じた処理を実行するための余剰資源が無い場合、前記推奨センタの処理能力を増強させることを特徴とする請求項１記載の負荷分散プログラム。
【請求項５】
前記サービス振り分け手段は、前記推奨センタの処理能力の増強作業が完了するまで、前記リクエストを出力した前記クライアントへのサービスを一時的に他のデータセンタに実行させることを特徴とする請求項４記載の負荷分散プログラム。
【請求項６】
前記振り分け先決定手段は、許容できる処理遅延時間の最大値が許容可遅延時間として予め設定されており、前記許容可遅延時間が保証され、且つ前記リクエストに応じた処理するための余剰資源があるデータセンタを前記推奨センタとすることを特徴とする請求項１記載の負荷分散プログラム。
【請求項７】
前記振り分け先決定手段は、サービスで保証する品質を示すサービスクラス毎に優先度が設定されており、前記推奨センタにおいて前記リクエストに応じた処理を実行するための余剰資源がない場合、前記クライアントを使用するユーザの属するクラスよりも優先度が低いクラスのユーザへのサービスを停止させて、資源を確保することを特徴とする請求項１記載の負荷分散プログラム。
【請求項８】
前記振り分け先決定手段は、所定のタイミングで、前記データセンタそれぞれでサービスの提供を受けている全ユーザの前記データセンタへの再振り分けを実施することを特徴とする請求項１記載の負荷分散プログラム。
【請求項９】
コンピュータにより、複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散方法において、
遅延時間判断手段が、クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断し、
振り分け先決定手段が、前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択し、
サービス振り分け手段が、前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させる、
ことを特徴とする負荷分散方法。
【請求項１０】
複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散装置において、
クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断する遅延時間判断手段と、
前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する振り分け先決定手段と、
前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させるサービス振り分け手段と、
を有することを特徴とする負荷分散装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のサーバそれぞれにかかる処理負荷を分散させる負荷分散プログラム、負荷分散方法、及び負荷分散装置に関し、特にクライアントから処理要求を受け取る毎にその処理を実行するサーバを動的に決定する負荷分散プログラム、負荷分散方法、及び負荷分散装置に関する。
【背景技術】
【０００２】
一般的なクライアント・サーバシステムでは、クライアントからのリクエスト量を事前に見積もった上で、サービス提供に必要なサーバ・ネットワーク等のリソース（資源）を確保する。そして、確保したリソースを用いて、クライアントに対してサービスが提供される。
【０００３】
ところが、近年の急激なインターネットの普及に伴い、将来必要なリソース量の見積もりが難しくなっている。特にコンシューマ向けにＷｅｂ経由でネットワークサービスを提供する場合、期間限定のイベント等に伴いリクエスト量が一時的かつ急激に増大するケースがある。特にこのようなケースでは、必要なリソース量の見積が困難となる。そして、単位時間当たりのリクエスト量の見積を誤ることにより、リクエスト集中時にサービス提供が滞るという問題が発生していた。
【０００４】
これに対し、リソース量を動的に増減させることでサービスの運用効率の向上を目指し、同時に予備リソースを複数サービスで共用しリソース利用効率を高める方式がある。このようなリソース管理が行われるネットワーク環境を、オンデマンド環境と呼ぶ。
【０００５】
オンデマンド環境によって、急激なリクエスト量増大時でも必要なリソース量を適宜確保できるようになる。また、予備リソースを複数のセンタで用意し相互に融通することで、リソースの利用効率を高めることも可能である。
【０００６】
このようなオンデマンド環境においても、サービスの差別化のためにユーザ毎の細かい管理が要求されてきている。ユーザ管理をオンデマンド環境で行うには、ユーザ固有情報のデータセンタ間での共有や、ユーザクラス毎のサービス品質管理を行うことが必要となる。この際の情報管理については、データセンタ間をネットワークで接続すれば解決可能である。ただし、それだけではサービスクラス間でサービス品質の不整合をおこす事がある。
【０００７】
すなわち、ユーザから見た品質を正しく維持するためにはユーザ・データセンタ間のネットワーク状況やサーバ負荷、バックエンドネットワークの遅延等を考慮しなければならない。そして、ユーザ毎に決められた遅延や品質が保証されるようサーバの追加やユーザ間で利用サーバの変更等の制御を行うことが必要になる。
【０００８】
例えば、需要に合わせてサーバ上のリソース容量をオンデマンドで調整できる技術が考えられている（特許文献１参照）。
【特許文献１】特開２００１−０６７３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１記載の技術は静的なコンテンツの配布をターゲットとしており、アプリケーションサーバの場合や、サービス内部の処理が多層に分かれる構成は考慮していない。また、サービスの割り振りやセンタ選択に際し、他のユーザ特性や複数サービスの調整による割り振りの調整は考慮していない。すなわち、リソースの量について検討されているものの、割り当てるリソースの質については考慮がなされてこなかった。
【００１０】
ここで、リソースの量とはクライアントにサービスを提供する能力を示し、リソースの質とはクライアントに対してより品質の高いサービスを提供できるかを示す。リソースの質としては、例えば、クライアントから見て、要求を出力してから応答が返ってくるまでの時間（遅延時間）の早さによって判断される。
【００１１】
一般に、ネットワーク経由でリクエストの送受を伴うクライアント・サーバシステムでは、クライアントから見た性能は、サーバで処理にかかる時間だけでなく、クライアント・サーバ間やサーバ・バックエンドサーバ間の通信にかかる時間も考慮する必要がある。そのため、クライアントからの要求に応じた処理を実行するサーバとして、ネットワーク的にクライアントに近い場所のサーバを利用することが好ましい。
【００１２】
通常、オンデマンド環境ではサービスを提供するセンタが複数存在し得る。そのため、各クライアントに対してネットワーク的に近い位置にあるセンタの利用を指示することでクライアントから見た性能を向上させることが可能である。つまりそのユーザにとってネットワーク的に近い位置にあるセンタのリソースは質の高いリソースとなる。
【００１３】
クライアントおよびセンタが分散して存在する場合には、クライアントによって最も質の高いリソースを持つセンタが異なることになり、クライアント分布に合わせてオンデマンドでセンタ毎にリソースを割り振り、それを各クライアントに割り当てることでサービス品質を最も高くできる。
【００１４】
実際には各センタで確保可能なリソース量やユーザ分布の集中等の要因がありうるため、全クライアントを各々に最適なセンタに割り当てることは困難であり、またリソースの利用効率という点でも無駄が生じやすい。そのため要求されるサービス品質の範囲内で可能な割当先を選ぶことが必要である。またサービスによってはクライアント・サーバ間の通信遅延でなくサーバ・バックエンドサーバ間の通信遅延が大きく影響することもあり得る。
【００１５】
この部分の通信遅延は従来の構成では同一センタ上に存在しているため考慮の必要はなかったが、オンデマンド環境で処理レイヤ毎にサーバを割り当てる場合にはこのレイヤ間の遅延についても考慮が必要となる。実際のサービスでは、クライアントのクラス分けを行っている場合がある。例えばニュースサイト等では有料会員に優先してサービスを提供し、無料ユーザに関してはサービスの提供は行うが品質を下げることがある。
【００１６】
このような場合に、有料会員に対して質の高い、つまりクライアントから見て通信処理遅延が小さいセンタのリソースを優先的に割り当てていく処理を行うことで、クライアント種別によるサービスの差別化を行うことが可能になる。
【００１７】
また、リソースの追加・削除に伴い、クライアントから見た最適なセンタが変化するため、状況の変化に応じてセンタへのユーザの割り振りをやり直すことが必要になる。
さらに、サービスへのリソース割当時に、どのセンタのリソースを割り当てるかによってクライアントから見た性能が変化するため、複数サービスのセンタへの割当についても何らかのルールに基づいて割当や再割当が必要になる。
【００１８】
本発明はこのような点に鑑みてなされたものであり、クライアントの設置場所に応じて、品質の高いサービスを提供可能なサービス提供サーバを動的に決定することができる負荷分散プログラム、負荷分散方法、及び負荷分散装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明では上記課題を解決するために、図１に示すような負荷分散プログラムが提供される。本発明に係る負荷分散プログラムは、複数のデータセンタ４ａ〜４ｃに対してクライアント３ａ〜３ｃからの要求を動的に振り分けるために、図１に示す機能をコンピュータに実行させることができる。
【００２０】
遅延時間判断手段１ａは、クライアントから送られたリクエストを解析し、クライアントのネットワーク２ａ〜２ｃ上の位置を識別し、クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、クライアントがデータセンタから応答を受け取るまでの処理遅延時間をデータセンタ毎に判断する。振り分け先決定手段１ｂは、遅延時間判断手段１ａで判断された処理遅延時間に基づいて、クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する。サービス振り分け手段１ｃは、リクエストを出力したクライアントへのサービスを、推奨センタ内のサーバに実行させる。
【００２１】
このような負荷分散プログラムを実行するコンピュータによれば、遅延時間判断手段１ａにより、クライアントから送られたリクエストが解析され、クライアントのネットワーク上の位置を識別され、クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、クライアントがデータセンタから応答を受け取るまでの処理遅延時間がデータセンタ毎に判断される。次に、振り分け先決定手段１ｂにより、遅延時間判断手段１ａで判断された処理遅延時間に基づいて、クライアントに対して少ない遅延時間でサービスを提供可能なデータセンタが優先的に、推奨センタとして選択される。そして、サービス振り分け手段１ｃの制御により、リクエストを出力したクライアントへのサービスが、推奨センタ内のサーバで実行される。
【発明の効果】
【００２２】
本発明では、クライアントのネットワーク上での位置に応じた遅延時間が少ないデータセンタでクライアントに対するサービス提供を行わせるようにリクエストの振り分けを行うため、ネットワーク上に分散配置されたデータセンタを効率的に運用して、各クライアントに対して品質の高いサービスを提供することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。図１に示すように、負荷分散装置１は、複数のネットワーク２ａ〜２ｃを介して、複数のクライアント３ａ〜３ｃ、および複数のデータセンタ４ａ〜４ｃに接続されている。データセンタ４ａ〜４ｃは、１つ以上のサーバを有しており、サーバによってクライアント３ａ〜３ｃに対して所定のサービスを提供する。負荷分散装置１は、複数のデータセンタ４ａ〜４ｃに対してクライアント３ａ〜３ｃからの要求を動的に振り分けるために、遅延時間判断手段１ａ、振り分け先決定手段１ｂ、およびサービス振り分け手段１ｃを有している。
【００２４】
遅延時間判断手段１ａは、クライアントから送られたリクエストを解析し、クライアントのネットワーク２ａ〜２ｃ上の位置を識別する。例えば、リクエストの送信元アドレスに基づいて、クライアントが接続されているインターネット接続サービス用のサーバを特定する。インターネット接続サービス用のサーバのネットワーク上の位置を予め遅延時間判断手段１ａに登録しておけば、リクエストを送信したクライアントのネットワーク上の位置（どこのサーバの配下にいるか）が分かる。
【００２５】
そして、遅延時間判断手段１ａは、クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、クライアントがデータセンタから応答を受け取るまでの処理遅延時間をデータセンタ毎に判断する。
【００２６】
例えば、図１に示すクライアント３ａとデータセンタ４ａとの間は、１つのネットワーク２ａのみで接続されている。そのため、ネットワーク２ａでの通信時間と、データセンタ４ａでの処理時間との加算値となる。また、クライアント３ａとデータセンタ４ｃとの間は、３つのネットワーク２ａ〜２ｃを介して接続されている。そのため、ネットワーク２ａ〜２ｃでの通信時間と、データセンタ４ｃでの処理時間との加算値となる。すると、クライアント３ａとデータセンタ４ｃとの間は通信経路が長くなり、その結果、処理遅延時間も長くなる。
【００２７】
振り分け先決定手段１ｂは、遅延時間判断手段１ａで判断された処理遅延時間に基づいて、クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する。クライアント３ａから出力されたリクエストであれば、データセンタ４ａが最も優先的に選択される。データセンタ４ａにおいて余剰資源が不足している場合、次に処理遅延時間が短くなるデータセンタ４ｂが選択される。
【００２８】
サービス振り分け手段１ｃは、リクエストを出力したクライアントへのサービスを、推奨センタ内のサーバに実行させる。
例えば、サービス振り分け手段１ｃは、クライアント３ａからのリクエストに対して、データセンタ４ａを推奨センタとして選択した場合、クライアント３ａに対し、データセンタ４ａへの再アクセスを指示するリダイレクトメッセージを応答する。すると、クライアント３ａは、リダイレクトメッセージに応じて、データセンタ４ａに対してリクエストを送信する。データセンタ４ａ内のサーバは、クライアント３ａからのリクエストに応じて、クライアント３ａへサービスを提供する。
【００２９】
このような負荷分散プログラムを実行するコンピュータによれば、例えば、クライアント３ａからリクエストが送信されると、遅延時間判断手段１ａによりそのリクエストが解析され、クライアント３ａのネットワーク上の位置を識別される。そして、遅延時間判断手段１ａにより、クライアント３ａの位置とネットワーク上の各データセンタ４ａ〜４ｃの位置との通信経路に基づいて、クライアント３ａがデータセンタ４ａ〜４ｃから応答を受け取るまでの処理遅延時間がデータセンタ４ａ〜４ｃ毎に判断される。次に、振り分け先決定手段１ｂにより、クライアント３ａに対して最も少ない遅延時間でサービスを提供可能なデータセンタ４ａがサービス提供可能かどうかが検討され、サービス提供可能であれば、推奨センタとして選択される。そして、サービス振り分け手段１ｃの制御により、リクエストを出力したクライアント３ａへのサービスが、推奨センタであるデータセンタ４ａ内のサーバで実行される。
【００３０】
このような負荷分散装置１がリクエストを複数のデータセンタ４ａ〜４ｃの何れかに振り分けることで、クライアントに対して少ない処理遅延時間でサービスを提供することができるようになる。その結果、サービス品質を向上させることができる。
【００３１】
次に、本実施の形態の詳細を説明する。
図２は、本実施の形態のシステム構成例を示す図である。本実施の形態のシステムでは、クライアント群４１，４２，４３は、それぞれ異なるネットワーク２１，２２，２３に接続されている。ネットワーク２１，２２，２３は、例えば、インターネットの一部を構成している。インターネットの内部は一般に、地域ごとの網(プロバイダ内の網等)とそれを相互に接続する接続（ＩＸ接続（複数のプロバイダのネットワーク相互接続）、ピアリング等）から成っており、ここではそれらを個別のネットワーク２１，２２，２３として表している。
【００３２】
ここで、クライアント群４１，４２，４３は、クライアントの集合である。クライアントは、サーバで提供されるサービスを利用する装置である。ネットワーク２１とネットワーク２２とは、互いに接続されている。また、ネットワーク２２とネットワーク２３とは、互いに接続されている。
【００３３】
また、各ネットワーク２１，２２，２３は、それぞれデータセンタ２００、３００，４００に接続されている。ネットワーク２１には、さらに広域負荷分散装置１００が接続されている。
【００３４】
広域負荷分散装置１００は、ユーザが使用するクライアントからのリクエストに対する割り振り先のデータセンタを決定するためのものである。ユーザは広域負荷分散装置１００に問い合わせることで、どのデータセンタを利用すべきかを認識する。なお一般的な運用では広域負荷分散装置１００は、いずれかのデータセンタ内に設置されることが想定される。
【００３５】
具体的には、広域負荷分散装置１００は、クライアントからのリクエスト（サービス要求）を、どのデータセンタのどのサーバで処理させるかを決定する。その際、広域負荷分散装置１００は、要求を出力したクライアントの設置場所に応じて、処理効率が最適となるデータセンタを決定する。すなわち、クライアント−センタ間はネットワーク群で接続されているが、個々のクライアントとセンタとの間の通信遅延時間は、クライアント−センタの組み合わせによって異なる。同様にサーバ−固定サーバ間の通信遅延もセンタによって異なる。そこで、広域負荷分散装置１００は、クライアントからのリクエストの振り分け先として、通信遅延時間が短くなるようなデータセンタに決定する。
【００３６】
データセンタ２００，３００，４００は、クライアントからのリクエストに対して実際に処理を行い、応答を返すサービスの提供を行う。なお、データセンタ２００，３００，４００では、サービスに対して固定的にサーバを割り当てるのでなく、負荷状況に応じて割当を変化させるユーティリティ運用に対応している。各データセンタ２００，３００，４００にはサービスを稼動させ処理を行うための複数のサーバ（サーバ群２２０，３２０，４２０）と、サーバに対して負荷を割り振るセンタ内負荷分散装置２１０，３１０，４１０とが含まれる。
【００３７】
センタ内負荷分散装置２１０，３１０，４１０は各データセンタ２００，３００，４００の入口に設置され、センタ内のサーバを代表してアクセスを受け付け、センタ内のサーバに転送する。その際、センタ内負荷分散装置２１０，３１０，４１０は、負荷に余裕のあるサーバに、リクエストを振り分ける。
【００３８】
サーバ群２２０，３２０，４２０内の各サーバは、クライアントからのリクエストを処理し、必要に応じてバックエンドサーバ６０に対し処理を依頼する。そして、各サーバは、処理結果をクライアントに返送する。
【００３９】
なお、サーバ群２２０は、ネットワーク２４を介して、バックエンドサーバ６０に接続されている。サーバ群３２０は、ネットワーク２５とネットワーク２４とを介して、バックエンドサーバ６０に接続されている。サーバ群４２０は、ネットワーク２６、ネットワーク２５、及びネットワーク２４を介して、バックエンドサーバ６０に接続されている。
【００４０】
バックエンドサーバ６０は、各サーバ群２２０，３２０，４２０に属するサーバからの依頼に応じてデータ処理を行う。例えば、バックエンドサーバ６０は、データベース管理機能を有し、他のサーバからの要求に応じて、データベース内のデータ取得またはデータ更新を行う。
【００４１】
すなわち、データベース等、オンデマンドで分散することが難しい機能については、ネットワーク２４〜２６を通して複数のセンタと接続されるバックエンドサーバ６０で提供される。ここで利用されるネットワーク２４〜２６は、通常インターネットとは論理的には異なる管理専用網が利用される。なお、バックエンドサーバ６０は、ユーザに対してサービスを提供するデータセンタ２００，３００，４００のいずれかで運用することも、それ以外のデータセンタ（サービスを運営する企業内のデータセンタ等）で運用することも可能である。また、サービスの構成によってはバックエンドサーバ６０が存在しないこともあり得る。
【００４２】
広域負荷分散装置１００、センタ内負荷分散装置２１０，３１０，４１０、サーバ群２２０，３２０，４２０内の各サーバ、およびバックエンドサーバ６０は、それぞれ管理ネットワーク３０を介して、管理サーバ５０に接続されている。管理サーバ５０は、各データセンタや装置に対して設定や監視を行うものであり、バックエンドサーバ６０と同様に管理ネットワーク３０を通して各機器の制御を行う。
【００４３】
具体的には、管理サーバ５０は、管理ネットワーク３０を介して接続された装置から状態情報を収集し、動作環境を管理する。例えば、管理サーバ５０は、各サーバ群２２０，３２０，４２０の負荷状態を管理し、負荷が過大となったサーバ群に対して、予備のサーバとして用意しておいたサーバを追加する。このサーバの追加処理は、管理サーバ５０が、データセンタ２００，３００，４００内の各装置を遠隔制御することで実施される。
【００４４】
ここで、クライアントと広域負荷分散装置１００や各データセンタ２００，３００，４００を繋ぐネットワーク２１，２２，２３はインターネット等の広域分散ネットワークである。一方、サーバとバックエンドサーバ６０とを繋ぐネットワーク２４，２５，２６には、専用線等専有可能で安全なネットワークが利用される。
【００４５】
このようなシステムにおいて、クライアントは、広域負荷分散装置１００宛にサービスに対するリクエストを発行する。すると、広域負荷分散装置１００がリクエストを処理すべきデータセンタおよびサーバを決定する。このとき、広域負荷分散装置１００は、決定したセンタのセンタ内負荷分散装置およびサーバに対して、ユーザ情報を送信する。すると、センタ内負荷分散装置及びサーバにおいて、ユーザ情報が登録される。
【００４６】
そして、広域負荷分散装置１００は、決定したデータセンタに対応するアドレスを指定したリダイレクトメッセージをクライアントに応答する。この際、サーバの負荷が過大になると、管理サーバによって、各センタに配置されるサーバがオンデマンドで追加配置される。
【００４７】
クライアントは、リダイレクトメッセージに応じて、広域負荷分散装置１００で決定されたデータセンタに対するリクエストを出力する。そのリクエストは、センタ内負荷分散装置で受け取られる。そして、リクエストは、センタ内負荷分散装置によって、広域負荷分散装置１００で決定されたサーバに振り分けられる。
【００４８】
リクエストを受け取ったサーバは、リクエストに応じた処理を実行し、処理結果をクライアントに応答する。なおサーバは、バックエンドサーバ６０の情報に必要に応じてアクセスする。
【００４９】
本実施の形態における負荷分散処理は、広域負荷分散装置１００が中心となって実行される。具体的には、広域負荷分散装置１００におけるデータセンタおよびサーバの決定は、以下のような手順で行われる。
【００５０】
広域負荷分散装置１００は、リクエストを受け取ると、ユーザから各センタまでの通信遅延時間を見積もる。次に、広域負荷分散装置１００は、通信時間に対して、サーバ処理時間・バックサーバ処理時間・バックネット通信時間（バックエンドサーバ６０に対して処理を依頼し、結果を受け取るまでの時間）を加えた処理時間をセンタ毎に求める。
【００５１】
その後、広域負荷分散装置１００は、求めた値を処理時間が短い順に並べ直し、未使用処理能力もしくは低クラスユーザが利用する処理能力が新規ユーザの必要量に足りているかを判定する。性能が足りていてかつ処理時間が保証値以下であれば、広域負荷分散装置１００は、そのデータセンタおよびサーバを、リクエストを出力したユーザに割り当てる。
【００５２】
処理能力が確保できたが処理時間が保証値を超えるようであれば、広域負荷分散装置１００は、処理時間の保証値を満たすことができないデータセンタに対して、ユーザ割当を行う。そして、広域負荷分散装置１００は、管理サーバ５０に対して、ユーザに対する処理時間の保証が可能なデータセンタへのサーバの追加割当を依頼する。サーバの追加完了後、広域負荷分散装置１００は、ユーザを適切なデータセンタに移動させる（ユーザの再割当を行う）。
【００５３】
なお、処理能力割当の際に低クラスユーザ分を利用したのであれば、それらのユーザに対し同様の方法でセンタ・サーバが選択し直しされ、ユーザに対する振り分け先となるデータセンタの移動（ユーザの移動）が行われる。
【００５４】
次に、広域負荷分散装置１００のハードウェア構成について説明する。
図３は、広域負荷分散装置のハードウェア構成例を示す図である。広域負荷分散装置１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６，１０７が接続されている。
【００５５】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００５６】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００５７】
通信インタフェース１０６は、ネットワーク２１に接続されている。通信インタフェース１０６は、ネットワーク２１を介して、クライアント等のコンピュータとの間でデータの送受信を行う。
【００５８】
通信インタフェース１０７は、管理ネットワーク３０に接続されている。通信インタフェース１０７は、管理ネットワーク３０を介して、管理サーバ５０との間でデータの送受信を行う。
【００５９】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、広域負荷分散装置１００のハードウェア構成を示したが、クライアント、センタ内負荷分散装置２１０，３１０，４１０、データセンタ２００，３００，４００内の各サーバ、管理サーバ５０、およびバックエンドサーバ６０も同様のハードウェア構成で実現することができる。
【００６０】
次に、広域負荷分散装置１００の機能について詳細に説明する。
図４は、広域負荷分散装置の機能を示すブロック図である。広域負荷分散装置１００には、サービス管理データベース（ＤＢ）１１０、リクエスト振り分け制御部１２１、ユーザ識別部１２２、クラス判定部１２３、ネットワーク遅延算出部１２４、振り分け先決定部１２５、サーバ選択部１２６、およびユーザ移動部１２７を有している。
【００６１】
サービス管理ＤＢ１１０には、リクエストを振り分けるために必要なデータが格納されている。具体的には、サービス管理ＤＢ１１０には、サービス情報表１１１、ユーザ情報表１１２、サービス／ユーザ割当表１１３、ネットワーク遅延算出表１１４が格納されている。
【００６２】
サービス情報表１１１には、サーバで提供するサービスに関する情報が登録されている。
ユーザ情報表１１２には、サービス提供対象となるユーザに関する情報が登録されている。
【００６３】
サービス／ユーザ割当表１１３には、各サーバの資源を、現在のどのユーザにどれだけ割り当てているのかを示す情報が登録されている。
ネットワーク遅延算出表１１４には、クライアントを接続するためにサービスプロバイダに設置されたサーバのアドレスと、そのサーバから各センタまでのネットワーク遅延時間とが予め設定されている。
【００６４】
リクエスト振り分け制御部１２１は、クライアントからのリクエストを受け付け、そのリクエストの振り分け先の判断処理を制御する。そして、リクエスト振り分け制御部１２１は、決定した振り分け先を指定したリダイレクトメッセージをクライアントに返す。
【００６５】
ユーザ識別部１２２は、リクエスト振り分け制御部１２１からの要求に応じて、リクエストを出力したクライアントを使用しているユーザを識別する。
クラス判定部１２３は、リクエスト振り分け制御部１２１からの要求に応じて、サービス提供を求めているユーザのクラス（サービス品質毎に分けられたユーザグループ）や、そのクラスで許容される遅延時間を判定する。
【００６６】
ネットワーク遅延算出部１２４は、リクエスト振り分け制御部１２１からの要求に応じて、ユーザが使用するクライアントから各データセンタまでのネットワーク遅延時間を判定する。
【００６７】
振り分け先決定部１２５は、リクエスト振り分け制御部１２１からの要求に応じて、リクエストの振り分け先となるデータセンタおよびサーバを決定する。
サーバ選択部１２６は、振り分け先決定部１２５からの要求に応じて、ネットワーク遅延時間を考慮して、リクエストを処理すべきデータセンタおよびサーバを選択する。
【００６８】
ユーザ移動部１２７は、振り分け先決定部１２５からの要求に応じて、ユーザの移動処理を行う。ユーザの移動処理とは、サービスを提供するサーバに振り分けられているユーザを、別のサーバに再振り分けする処理である。
【００６９】
次に、サービス管理ＤＢ１１０に格納される情報を具体的に説明する。
図５は、サービス情報表のデータ構造例を示す図である。図５に示すようにサービス情報表１１１には、サービス、最小割当、最大割当、サービスクラス、優先度、必要性能、許容可遅延時間、処理遅延時間の欄が設けられている。
【００７０】
サービスの欄には、サービスを一意に識別するための名称（サービス名）が設定される。最小割当の欄には、対応するサービスに対して割当可能な資源量（性能）の下限を示す数値が設定される。なお、性能は、例えば、所定のハードウェア構成のコンピュータで実行可能な処理能力を基準単位として、そのコンピュータの何倍の処理能力かによって示される。最大割当の欄には、対応するサービスに対して割当可能な資源量の上限を示す数値が設定される。
【００７１】
サービスクラスの欄には、対応するサービスに設定されている品質の分類を示す１以上のクラスが設定される。なお、サービスクラスに設定されるクラスのうちの１つが、デフォルトに設定されている。ユーザの属性としてサービスクラスが指定されていないときは、デフォルトのクラスが割り当てられる。
【００７２】
優先度の欄には、対応するクラスの優先度を示す数値が設定される。設定される数値が小さいほど、高い優先度を示す。必要性能の欄には、対応するクラスに属する１人のユーザに対してサービスを提供するために必要な性能が設定される。許容可遅延時間の欄には、対応するクラスに属するユーザに対して許容可能な遅延時間（ユーザとの契約によって保証している遅延時間）が設定される。ここで、遅延時間は、ユーザが使用するクライアントがリクエストを出力してから、そのリクエストに対する処理結果がクライアントに到達するまでの時間である。すなわち、遅延時間に設定される値には、ネットワーク部分の伝送遅延が含まれている。
【００７３】
処理遅延時間の欄には、各クラスに応じたサービスを実行する際のサーバでの実処理時間が、データセンタ毎に設定される。なお、クラス毎にサービスの処理に割り当てられる性能（必要性能）が異なるため、処理時間もクラス毎に異なる値となる。
【００７４】
なお、サービス情報表１１１の全パラメータは、サービス開始時に設定される。これらのうち、最小割当、最大割当および必要性能はサーバ性能を適当な基準で正規化したものである。また、処理時間に関しては初期状態で静的に設定するだけでなく動的に計測し更新する方法も考えられる。
【００７５】
図６は、ユーザ情報表のデータ構造例を示す図である。ユーザ情報表１１２には、ユーザ、識別子、利用サービス、サービスクラス、利用センタ、利用サーバ、推奨センタ、及びネットワーク遅延時間の各欄が設けられている。
【００７６】
ユーザの欄には、サービスを利用するユーザの識別情報（ユーザ名）が設定される。識別子の欄には、ユーザをシステム内で一意に識別するための識別子（ユーザＩＤ）が設定される。利用サービスの欄には、対応するユーザが利用するサービス名が設定される。サービスクラスの欄には、ユーザがサービスを利用する際のクラスが設定される。
【００７７】
利用センタの欄には、対応するユーザが現在利用しているデータセンタ（利用センタ）の名称が設定される。利用サーバの欄には、対応するユーザが現在利用しているサーバ（利用サーバ）の名称が設定される。推奨センタの欄には、対応するユーザが利用するのに適していると判断されたセンタの名称が設定される。ネットワーク遅延時間の欄には、データセンタにアクセスする際のネットワーク上の遅延時間が、データセンタ毎に設定される。
【００７８】
なお、ユーザ情報表１１２は、広域負荷分散装置１００において設定された後、関連するセンタ内負荷分散装置に対してコピーが渡される。また、ユーザ、識別子、利用サービス、およびサービスクラスの各欄については、サービス開始時に情報が設定される。利用センタ・サーバ、推奨センタおよびネットワーク遅延時間の欄には、ユーザがアクセスをしてきたときに情報が設定され、サービス利用終了時に情報が削除される。
【００７９】
図７は、サービス／ユーザ割当表のデータ構造例を示す図である。サービス／ユーザ割当表１１３には、センタ、サーバ、総性能、割当済、稼働サービス、確保済、利用済、ユーザ、および割当量の欄が設けられている。
【００８０】
センタの欄には、データセンタの名称が設定される。サーバの欄には、各データセンタに設置されているサーバの名称が設定される。総性能の欄には、各サーバの性能が設定される。割当済の欄には、各サーバで実行するサービスに割り当てられた性能が設定される。稼働サービスの欄には、対応するサーバで提供しているサービスの名称が設定される。確保済の欄は、対応するサービスを提供するために確保したサーバの性能が設定される。利用済の欄には、サービスに割り当てられた性能のうち、ユーザが利用している性能が設定される。ユーザの欄には、対応するサーバを利用するユーザのユーザＩＤが設定される。割当量の欄には、対応するユーザに応じたサービス提供のために割り当てられた性能が設定される。
【００８１】
なお、サービス／ユーザ割当表１１３のセンタ、サーバ、総性能の欄には、サービス開始時に情報が設定される。また、割当済み、稼動サービス、確保済みの欄には、サービス割当時に情報が設定される。利用済み、ユーザ、割当量の欄の情報は、ユーザへの割当や移動時に更新される。
【００８２】
図８は、ネットワーク遅延算出表のデータ構造例を示す図である。ネットワーク遅延算出表１１４には、送信元ＩＰ、範囲（マスク）、およびネットワーク遅延時間の欄が設けられている。送信元ＩＰの欄には、クライアントを接続するためのインターネットサービスプロバイダ（ＩＳＰ）に設けられたサーバのＩＰアドレスが設定される。範囲（マスク）の欄には、ＩＳＰに設けられたサーバのサブネットマスクの範囲が設定される。ネットワーク遅延時間の欄には、ＩＳＰのサーバからデータセンタまでの遅延時間が、データセンタ毎に設定される。
【００８３】
ネットワーク遅延算出表１１４の各欄には、開始時に情報が設定される。また、設定された情報は、サービス提供中に計測等によって動的に更新される。
広域負荷分散装置１００は、サービス提供開始時には、サービス管理ＤＢ１１０内の所定の項目に情報を設定する。さらに、広域負荷分散装置１００は、各データセンタのセンタ内負荷分散装置２１０，３１０，４１０に対し、ユーザ情報表１１２およびサービス／ユーザ割当表１１３のうち、そのセンタに該当する部分の情報を設定する。また広域負荷分散装置１００は、各サーバに対し、サービス／ユーザ割当表１１３のうち、そのサーバに該当する部分の情報を設定する。
【００８４】
以上のような機能および情報を有する広域負荷分散装置１００を中心として負荷分散が行われ、クライアントに対するサービス提供が行われる。以下、サービス提供の際の、負荷分散処理を詳細に説明する。
【００８５】
図９は、広域負荷分散装置の処理手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］広域負荷分散装置１００のリクエスト振り分け制御部１２１が、クライアントからのリクエストを受信する。
【００８６】
［ステップＳ１２］リクエスト振り分け制御部１２１は、ユーザ識別部１２２に対してユーザ識別を依頼する。すると、ユーザ識別部１２２においてリクエストからユーザＩＤが取り出される。そして、リクエスト振り分け制御部１２１は、ユーザＩＤをユーザ識別部１２２から受け取る。
【００８７】
［ステップＳ１３］リクエスト振り分け制御部１２１は、ユーザの再振り分けが必要か否かを判断する。ユーザの再振り分けを行うかどうかは、予めリクエスト振り分け制御部１２１に設定された再振り分け条件を満たすか否かによって判断される。例えば、一度サーバに振り分けたユーザであっても、所定の時間間隔で振り分け先の強制的な見直しを行うこともできる。その場合、見直し間隔となる所定時間が振り分け条件として設定され、リクエスト振り分け制御部１２１は、リクエストを出力したユーザの前回の振り分け処理から所定時間経過したか否かによって、再振り分けの要否を判断する。
【００８８】
なお、ユーザからの最初のリクエストの場合、再振り分けは不要と判断される。再振り分けが必要な場合、処理がステップＳ１９に進められる。再振り分けが不要な場合、処理がステップＳ１４に進められる。
【００８９】
［ステップＳ１４］リクエスト振り分け制御部１２１は、振り分け先が設定済みか否かを判断する。具体的には、リクエスト振り分け制御部１２１は、ユーザ情報表１１２を参照し、リクエストを出力したユーザのユーザＩＤに対応付けて、利用センタおよび利用サーバが登録されているか否かを判断する。利用センタおよび利用サーバが登録されていれば、振り分け先設定済みと判定される。振り分け先設定済みの場合、処理がステップＳ１５に進められる。振り分け先未設定の場合、処理がステップＳ１６に進められる。
【００９０】
［ステップＳ１５］リクエスト振り分け制御部１２１は、ユーザ情報表１１２からリクエストを出力したユーザのユーザＩＤに対応付けて登録されている利用センタおよび利用サーバを選択する。その後、処理がステップＳ１９に進められる。
【００９１】
［ステップＳ１６］リクエスト振り分け制御部１２１は、クラス判定部１２３に対して、サービスに対するユーザのクラスの判定を依頼する。そして、リクエスト振り分け制御部１２１は、クラス判定部１２３からクラスを示す情報を取得する。
【００９２】
［ステップＳ１７］リクエスト振り分け制御部１２１は、ネットワーク遅延算出部１２４に対して、ネットワーク遅延時間の算出を依頼する。そして、リクエスト振り分け制御部１２１は、ネットワーク遅延算出部１２４からネットワーク遅延時間を取得する。
【００９３】
［ステップＳ１８］リクエスト振り分け制御部１２１は、振り分け先決定部１２５に対して、振り分け先とするデータセンタとサーバとの決定を依頼する。そして、リクエスト振り分け制御部１２１は、振り分け先決定部１２５から、データセンタおよびサーバの名称を取得する。
【００９４】
［ステップＳ１９］リクエスト振り分け制御部１２１は、振り分け先が実サーバか否かを判断する。ステップＳ１８において、実在するデータセンタの名称とサーバの名称とを取得した場合、振り分け先は実サーバである。ステップＳ１８において、データセンタの名称とサーバの名称として、空のデータを取得した場合（あるいは、不存在を示すメッセージ）、振り分け先は実サーバではない。振り分け先が実サーバの場合、処理がステップＳ２１に進められる。振り分け先が実サーバでない場合、処理がステップＳ２０に進められる。
【００９５】
［ステップＳ２０］リクエスト振り分け制御部１２１は、ソーリーメッセージ（サーバを振り当てられないことを示す）と再読込メッセージ（指定時間後に、リクエストを出力することを依頼するメッセージ）とを合わせたメッセージを、クライアントに送信し、処理を終了する。
【００９６】
［ステップＳ２１］リクエスト振り分け制御部１２１は、ユーザに対するサーバの振り分けが、再振り分けか否かを判断する。ステップＳ１４において、振り分け先設定済みと判断した場合、再振り分けである。再振り分けの場合、処理がステップＳ２２に進められる。再振り分けではない場合、処理がステップＳ２４に進められる。
【００９７】
［ステップＳ２２］リクエスト振り分け制御部１２１は、移動元のサーバに登録されていた該当ユーザ（リクエストを出力したユーザ）に関連する全ての情報を、移動先のサーバに移動する。
【００９８】
［ステップＳ２３］リクエスト振り分け制御部１２１は、サービス管理ＤＢ１１０内の情報を、ユーザの割当先の変更に応じて更新する。具体的には、リクエスト振り分け制御部１２１は、ユーザ情報表１１２の該当ユーザに対応する利用センタ、利用サーバを更新、および推奨センタの各欄の情報を更新する。また、リクエスト振り分け制御部１２１は、ユーザの移動元のデータセンタと、移動先のデータセンタとのセンタ内負荷分散装置に登録されているユーザの情報を更新する。その後、処理がステップＳ２５に進められる。
【００９９】
［ステップＳ２４］リクエスト振り分け制御部１２１は、振り分け先となったデータセンタ内のサーバおよびセンタ内負荷分散装置の設定を行う。
［ステップＳ２５］リクエスト振り分け制御部１２１は、クライアントに対して、振り分け先となったデータセンタ宛にリクエストを送信することを指定したリダイレクトメッセージを送信する。
【０１００】
このようにして、リクエストがクライアントから送られると、広域負荷分散装置１００により振り分け先が決定される。このとき、振り分け先が変化していれば、広域負荷分散装置１００により、サーバ間で情報の移動やセンタ内負荷分散装置の情報変更が指示される。そして、振り分け先が決定したら、広域負荷分散装置１００により、クライアントに対して、振り分け先のデータセンタを指定したリダイレクトメッセージが送信される。なお、振り分け先が決定できない場合、広域負荷分散装置１００により、指定時間後の再読込を指示するメッセージがクライアントに返される。
【０１０１】
次に、ユーザ識別処理の詳細を説明する。
図１０は、ユーザ識別処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【０１０２】
［ステップＳ３１］ユーザ識別部１２２は、リクエスト振り分け制御部１２１からの要求に応じて、クライアントから送られたリクエストを解析し、リクエストに含まれるユーザの識別情報を抽出する。ユーザの識別情報は、例えば、ＨＴＴＰによる要求であれば、クッキーやリクエスト行内にパラメータとして設定される文字列によってリクエストに含められる。
【０１０３】
［ステップＳ３２］ユーザ識別部１２２は、ユーザ情報表１１２の識別子の欄の各識別子と、リクエストから抽出した識別子とを照合する。そして、ユーザ識別部１２２は、識別子が一致したレコードのユーザの欄の情報（ユーザ名）を、リクエスト振り分け制御部１２１に渡す。
【０１０４】
次に、ユーザのクラスの判定処理の詳細を説明する。
図１１は、クラス判定処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【０１０５】
［ステップＳ４１］クラス判定部１２３は、リクエスト振り分け制御部１２１からの要求に応じて、ユーザ情報表１１２から該当ユーザのクラスを抽出する。具体的には、クラス判定部１２３は、ユーザ識別部で取得されたユーザ名に該当するレコードをユーザ情報表１１２から検索し、そのレコードの利用サービスの欄からサービスの名称を取得し、サービスクラスの欄からクラスの名称を取得する。
【０１０６】
［ステップＳ４２］クラス判定部１２３は、サービス情報表１１１から、ステップＳ４１で抽出したサービスおよびクラスに対応付けられた各種情報（処理遅延時間等）を抽出する。そして、クラス判定部１２３は、ステップＳ４１，Ｓ４２で抽出した情報を、リクエスト振り分け制御部１２１に渡す。
【０１０７】
このようにして、ユーザに割り当てるクラスと、そのクラスに関する情報とが取得される。なお、ユーザ情報表１１２の情報がクラス未割当となっている場合は、サービス情報表１１１からは、デフォルトと指定されたクラスの情報が読み出される。
【０１０８】
次に、ネットワーク遅延算出処理について詳細に説明する。
図１２は、ネットワーク遅延算出処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１０９】
［ステップＳ５１］ネットワーク遅延算出部１２４は、リクエスト振り分け制御部１２１からの要求に応じて、リクエストからリクエスト送信元のＩＰアドレスを取得する。すなわち、クライアントのＩＰアドレスが取得される。
【０１１０】
［ステップＳ５２］ネットワーク遅延算出部１２４は、ネットワーク遅延算出表１１４の送信元ＩＰと範囲（マスク）の欄を参照し、クライアントを収容するサーバに対応するレコードを特定する。具体的には、ネットワーク遅延算出部１２４は、ネットワーク遅延算出表１１４の送信元ＩＰのネットワークアドレス部分を範囲（マスク）に設定されているサブネットマスクで特定する。そして、ネットワーク遅延算出部１２４は、各サーバのネットワークアドレスと、クライアントのＩＰアドレスの対応する部分とを比較する。そして、ネットワーク遅延算出部１２４は、ネットワークアドレスが一致するサーバを、クライアントを収容するサーバとして特定する。
【０１１１】
［ステップＳ５３］ネットワーク遅延算出部１２４は、ネットワーク遅延算出表１１４から、リクエストを送信したクラインを収容するサーバから、各データセンタまでのネットワーク遅延時間を取得する。そして、ネットワーク遅延算出部１２４は、取得したネットワーク遅延時間を、リクエスト振り分け制御部１２１に渡す。
【０１１２】
このように、アクセスしてきたクライアントの送信元ＩＰアドレスに基づいて、クライアントと各センタ間の通信遅延を求めることができる。
次に、振り分け先決定処理を詳細に説明する。
【０１１３】
図１３は、振り分け先決定処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］振り分け先決定部１２５は、リクエスト振り分け制御部１２１からの要求に応じて、データセンタ毎の総遅延値を計算する。総遅延値は、ネットワーク遅延時間と、処理遅延時間との加算値である。
【０１１４】
［ステップＳ６２］振り分け先決定部１２５は、総遅延値に基づいて、処理を振り分けるべきデータセンタおよびサーバの選択処理を行う。このときの選択処理は、ユーザのクラスに応じた許容遅延時間を保証したデータセンタおよびサーバの選択処理が行われる。具体的には、振り分け先決定部１２５は、サーバ選択部１２６に対してサーバの選択を依頼する。
【０１１５】
［ステップＳ６３］振り分け先決定部１２５は、振り分け先のデータセンタおよびサーバの確保に成功したか否かを判断する。成功した場合、処理がステップＳ６４に進められる。失敗した場合、処理がステップＳ６７に進められる。
【０１１６】
［ステップＳ６４］振り分け先決定部１２５は、ユーザの移動があるか否かを判断する。ユーザの移動がある場合とは、データセンタおよびサーバに対して優先度の高いユーザを振り分けることで、優先度の低いユーザに振り分ける資源が枯渇する場合である。この場合、優先度の低いユーザを、他のデータセンタおよびサーバに移動させる必要が生じる。
【０１１７】
ユーザの移動がある場合、処理がステップＳ６５に進められる。ユーザの移動がない場合、処理がステップＳ６６に進められる。
［ステップＳ６５］振り分け先決定部１２５は、ユーザ移動処理を、ユーザ移動部１２７に依頼する。
【０１１８】
［ステップＳ６６］振り分け先決定部１２５は、ステップＳ６２で選択されたデータセンタおよびサーバを、振り分け先となるデータセンタおよびサーバとして決定する。その後、処理が終了する。
【０１１９】
［ステップＳ６７］振り分け先決定部１２５は、管理サーバ５０に対して、サーバ追加指示を出す。そして、振り分け先決定部１２５は、管理サーバ５０からサーバ追加完了の応答を待たずに、処理をステップＳ６８に進める。
【０１２０】
［ステップＳ６８］振り分け先決定部１２５は、処理を振り分けるべきデータセンタおよびサーバの選択処理を行う。このときの選択処理は、ユーザのクラスに応じた許容遅延時間を保証せずに行われる。具体的には、振り分け先決定部１２５は、サーバ選択部１２６に対してサーバの選択を依頼する。
【０１２１】
［ステップＳ６９］振り分け先決定部１２５は、振り分け先のデータセンタおよびサーバの確保に成功したか否かを判断する。成功した場合、処理がステップＳ７０に進められる。失敗した場合、処理がステップＳ７３に進められる。
【０１２２】
［ステップＳ７０］振り分け先決定部１２５は、ユーザの移動があるか否かを判断する。ユーザの移動がある場合、処理がステップＳ７１に進められる。ユーザの移動がない場合、処理がステップＳ７２に進められる。
【０１２３】
［ステップＳ７１］振り分け先決定部１２５は、ユーザ移動処理を、ユーザ移動部１２７に依頼する。
［ステップＳ７２］振り分け先決定部１２５は、ステップＳ６８で選択されたデータセンタ及びサーバを、振り分け先となるデータセンタおよびサーバとして決定する。このとき、振り分け先決定部１２５は、ステップＳ６２で選択されたデータセンタを、推奨センタとしてユーザ情報表に登録する。その後、処理が終了する。
【０１２４】
［ステップＳ７３］振り分け先決定部１２５は、ステップＳ６９において確保に失敗と判断された場合、ユーザをソーリーサーバ（ソーリーメッセージを応答する際に定義する仮想のサーバ）に振り分ける。
【０１２５】
このように、クラス情報およびユーザ情報の遅延値を元にそのユーザからみた総処理遅延値に基づいて、遅延が保証値以下でかつ容量確保が可能なセンタが探索される。そして、条件に合うデータセンタが見つかればそのデータセンタが、振り分け先に決定される。
【０１２６】
見つからなかった場合は、ユーザに対し充分な品質のサービスが提供できない状態と判断し、サーバをオンデマンドで追加し、それによって充分な品質での提供が試みられる。そのとき、サーバの追加処理にはある程度時間が必要なため、追加完了までの間に処理に利用するセンタが探索され、見つかればそのセンタに一時的にユーザの割当が行われる（以後の再配置で推奨サーバに移動される）。資源不足によりこの段階でサーバが割り当てられない場合にはソーリー応答を返すよう設定する。
【０１２７】
次に、サーバ追加指示に応じた管理サーバ５０でのサーバ追加処理ついて説明する。
図１４は、サーバ追加処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１２８】
［ステップＳ８１］管理サーバ５０は、広域負荷分散装置１００からのサーバ追加指示を受け取ると、サーバ構成変更処理を実行中か否かを判断する。サーバ構成変更処理を実行中であれば、その処理により不足しているサーバの追加が行われるため、管理サーバ５０からの要求に応じた処理は終了する。サーバ構成変更処理が実行中でなければ、処理がステップＳ８２に進められる。
【０１２９】
［ステップＳ８２］管理サーバ５０は、広域負荷分散装置１００が有するユーザ情報表１１２を参照し、各ユーザの最適なデータセンタ（推奨センタ）を取得し、データセンタそれぞれについて、そのデータセンタを推奨センタとするユーザに割り当てる資源の総容量（最適値）を集計する。
【０１３０】
［ステップＳ８３］管理サーバ５０は、広域負荷分散装置１００が有するサービス／ユーザ割当表１１３を参照し、データセンタそれぞれについて、そのデータセンタに割当済の資源量（割当済容量）をデータセンタ毎に集計する。割当済資源量とは、そのデータセンタに配置されたサーバの割当済の性能の合計値である。
【０１３１】
［ステップＳ８４］管理サーバ５０は、データセンタ毎に、最適値と割当済容量との差分を算出する。
［ステップＳ８５］管理サーバ５０は、全データセンタに対してステップＳ８６〜Ｓ８８の処理を行ったか否かを判断する。全データセンタに対する処理が完了していれば、処理がステップＳ９０に進められる。未処理のデータセンタがあれば、処理がステップＳ８６に進められる。
【０１３２】
［ステップＳ８６］管理サーバ５０は、最適値と割当済容量との差分が大きい順に、データセンタを選択する。
［ステップＳ８７］管理サーバ５０は、サービス／ユーザ割当表を参照し、選択したデータセンタの割当済容量が最大割当量以上か否かを判断する。すなわち、選択されたデータセンタを推奨センタとする全てのユーザを割り当てられるだけの資源が、割当済となっているか否かが判断される。割当済容量が最大割当量以上であれば、処理がステップＳ９０に進められる。割当済容量が最大割当量に達していなければ、処理がステップＳ８８に進められる。
【０１３３】
［ステップＳ８８］管理サーバ５０は、選択したデータセンタに空きサーバ（サービス／ユーザ割当表１１３における割当済の値が総性能値に達していないサーバ）があるか否かを判断する。空きサーバがあれば、処理がステップＳ８９に進められる。空きサーバがなければ、処理がステップＳ８５に進められる。
【０１３４】
［ステップＳ８９］管理サーバ５０は、選択したデータセンタに空きサーバを１台追加する。すなわち、該当するデータセンタにおける割当済の資源量が増やされる。その後、処理がステップＳ８３に進められ、割当済容量が再計算される。
【０１３５】
［ステップＳ９０］管理サーバ５０は、サーバ実割当処理を行う。
［ステップＳ９１］管理サーバ５０は、全ユーザの再配置処理を行う。その後、処理が終了する。
【０１３６】
このように、サーバ追加・削除処理が実行中でないことを確認後、現在利用中の全ユーザそれぞれに対し最適なセンタが調査され、センタ毎に最適状態で必要な割当量が算出される。また、センタ毎に現在割り当てられている資源量が算出される。そして、増設しなければならない資源量を充足するまで、最適値に対し割当値が少ないセンタから優先してサーバ増設候補として選出される。その後実際にサーバ割当と全ユーザの再配置とが行われる。
【０１３７】
次に、遅延保証を行う場合のセンタ／サーバ選択処理（その１）について詳細に説明する。
図１５は、センタ／サーバ選択処理（その１）の手順を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１３８】
［ステップＳ１０１］サーバ選択部１２６は、全てのデータセンタに関して、ステップＳ１０２〜Ｓ１０４の処理が完了している否かを判断する。全データセンタに対して処理が行われた場合、処理がステップＳ１０７に進められる。未処理のデータセンタがある場合、処理がステップＳ１０２に進められる。
【０１３９】
［ステップＳ１０２］サーバ選択部１２６は、遅延時間が少ないデータセンタから順に、データセンタを選択する。
［ステップＳ１０３］サーバ選択部１２６は、選択したデータセンタの遅延時間が保証値以下か否かを判断する。遅延時間が保証値以下（総遅延時間が、許容可遅延時間以下）であれば、処理がステップＳ１０４に進められる。遅延時間が保証値より大きければ、処理がステップＳ１０１に進められる。
【０１４０】
［ステップＳ１０４］サーバ選択部１２６は、未使用の資源の容量と、および現在振り分けた対象としているユーザよりも優先度が低いクラスのユーザに割り当てられた資源の容量との加算値を計算する。
【０１４１】
［ステップＳ１０５］サーバ選択部１２６は、ステップＳ１０４で計算した値が、リクエストに応じてユーザに割り当てるべき資源の容量以上あるか否かにより、必要容量を確保可能か否かを判断する。必要容量を確保可能であれば、処理がステップＳ１０６に進められる。必要容量が確保できなければ、処理がステップＳ１０１に進められ、他のデータセンタについて検討される。
【０１４２】
［ステップＳ１０６］サーバ選択部１２６は、選択されたデータセンタ内の空きサーバを、ユーザに対する資源の振り分け対象として選択する。そして、サーバ選択部１２６は、選択したデータセンタおよびサーバの情報を、振り分け先決定部１２５（ユーザ移動処理中であれば、ユーザ移動部１２７）に渡す。この際、サーバ選択部１２６は、低クラスユーザの資源を転用が必要であれば、それらのユーザを移動予定として移動ユーザリストに登録する。その後、処理が終了する。
【０１４３】
［ステップＳ１０７］サーバ選択部１２６は、全てのデータセンタについて検討した結果、必要容量を確保可能なデータセンタが検出できなかった場合、確保失敗のメッセージを、振り分け先決定部１２５（ユーザ移動処理中であれば、ユーザ移動部１２７）に渡す。
【０１４４】
このように、ユーザから見た遅延値が保証値以下であり、未使用および割当ユーザよりも低クラスのユーザが利用する資源によって、割当ユーザに対しサービスが提供可能であるセンタが探索される。そして、該当するデータセンタが見つかった場合はそのデータセンタ内のサーバが振り分け対象として選択される。
【０１４５】
次に、遅延保証を行わない場合のセンタ／サーバ選択処理（その２）について詳細に説明する。
図１６は、センタ／サーバ選択処理（その２）の手順を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
【０１４６】
［ステップＳ１１１］サーバ選択部１２６は、全てのデータセンタに関して、ステップＳ１１２〜Ｓ１１４の処理が完了している否かを判断する。全データセンタに対して処理がおこなわれた場合、処理がステップＳ１１６に進められる。未処理のデータセンタがある場合、処理がステップＳ１１２に進められる。
【０１４７】
［ステップＳ１１２］サーバ選択部１２６は、遅延時間が少ないデータセンタから順に、データセンタを選択する。
［ステップＳ１１３］サーバ選択部１２６は、未使用の資源の容量と、現在振り分けた対象としているユーザよりも優先度が低いクラスのユーザに割り当てられた資源の容量との加算値を計算する。
【０１４８】
［ステップＳ１１４］サーバ選択部１２６は、ステップＳ１１３で計算した値が、リクエストに応じてユーザに割り当てるべき資源の容量以上であるか否かにより、必要容量を確保可能か否かを判断する。必要容量を確保可能であれば、処理がステップＳ１１５に進められる。必要容量が確保できなければ、処理がステップＳ１１１に進められ、他のデータセンタについて検討される。
【０１４９】
［ステップＳ１１５］サーバ選択部１２６は、選択されたデータセンタ内の空きサーバを、ユーザに対する資源の振り分け対象として選択する。そして、サーバ選択部１２６は、選択したデータセンタおよびサーバの情報を、振り分け先決定部１２５（ユーザ移動処理中であれば、ユーザ移動部１２７）に渡す。この際、サーバ選択部１２６は、低クラスユーザの資源を転用が必要であれば、それらのユーザを移動予定として移動ユーザリストに登録する。その後、処理が終了する。
【０１５０】
［ステップＳ１１６］サーバ選択部１２６は、全てのデータセンタについて検討した結果、必要容量を確保可能なデータセンタが検出できなかった場合、確保失敗のメッセージを、振り分け先決定部１２５（ユーザ移動処理中であれば、ユーザ移動部１２７）に渡す。
【０１５１】
このように、遅延保証をおこなわない場合、サービス品質が保証値外であってもサービス提供可能なセンタ・サーバが選択される。
次に、ユーザ移動処理について説明する。
【０１５２】
図１７は、ユーザ移動処理の手順を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］ユーザ移動部１２７は、振り分け先決定部１２５からの要求に応じて、移動が必要なユーザでまだ移動処理を行っていないユーザがあるか否かを判断する。移動が必要なユーザとは、移動ユーザリストに移動予定として登録されたユーザである。移動が必要なユーザがある場合、処理がステップＳ１２２に進められる。移動が必要なユーザが無い場合、処理が終了する。
【０１５３】
［ステップＳ１２２］ユーザ移動部１２７は、移動が必要なユーザの中で、最も優先度の高いレベルのユーザを選択する。
［ステップＳ１２３］ユーザ移動部１２７は、遅延保証をしたセンタ／サーバ選択処理をサーバ選択部１２６に依頼する。
【０１５４】
［ステップＳ１２４］ユーザ移動部１２７は、ステップＳ１２３の処理によって、データセンタおよびサーバの確保に成功したか否かを判断する。データセンタおよびサーバが確保できた場合、処理がステップＳ１２５に進められる。確保できなかった場合、処理がステップＳ１２６に進められる。
【０１５５】
［ステップＳ１２５］ユーザ移動部１２７は、他のユーザの移動があるか否かを判断する。他のユーザの移動を伴う場合、処理がステップＳ１２９に進められる。他のユーザの移動を伴わない場合、処理がステップＳ１３０に進められる。
【０１５６】
［ステップＳ１２６］ユーザ移動部１２７は、遅延保証したデータセンタおよびサーバが確保できなかった場合、遅延保証なしのセンタ／サーバ選択処理を、サーバ選択部１２６に依頼する。
【０１５７】
「ステップＳ１２７」ユーザ移動部１２７は、ステップＳ１２６の処理によって、データセンタおよびサーバの確保に成功したか否かを判断する。データセンタおよびサーバが確保できた場合、処理がステップＳ１２８に進められる。確保できなかった場合、処理がステップＳ１３３に進められる。
【０１５８】
［ステップＳ１２８］ユーザ移動部１２７は、他のユーザの移動があるか否かを判断する。他のユーザの移動を伴う場合、処理がステップＳ１２９に進められる。他のユーザの移動を伴わない場合、処理がステップＳ１３０に進められる。
【０１５９】
［ステップＳ１２９］ユーザ移動部１２７は、他のユーザを移動させる必要がある場合、そのユーザを移動ユーザリストに追加登録する。
［ステップＳ１３０］ユーザ移動部１２７は、移動先のセンタ内負荷分散装置に、移動させるユーザの情報を登録する。
【０１６０】
［ステップＳ１３１］ユーザ移動部１２７は、移動元のセンタ内負荷分散装置に、移動させるユーザが他のデータセンタに移動することを登録する。
［ステップＳ１３２］ユーザ移動部１２７は、移動元のサーバと移動先のサーバとに指示を出し、移動元のサーバから移動先のサーバへ、移動すべきユーザに関連する情報（サービスを引き継ぐために必要な情報）を転送させる。その際、移動元のサーバに対して、次回のユーザが使用するクライアントからのリクエストに対し、広域負荷分散装置１００への再アクセスを指示するメッセージを返すように設定する。すると、そのクライアントからのアクセスが広域負荷分散装置１００に転送され、移動先となるデータセンタにリクエストが振り分けられる。その後、処理がステップＳ１３５に進められる。
【０１６１】
［ステップＳ１３３］ユーザ移動部１２７は、移動すべきユーザが現在割り振られているデータセンタのセンタ内負荷分散装置に対して、ソーリー返答を該当ユーザの使用するクライントに送信するように指示を出す。
【０１６２】
［ステップＳ１３４］ユーザ移動部１２７は、移動すべきユーザが現在割り振られているサーバに、そのユーザの情報を保存するように指示を出す。その後、処理がステップＳ１３５に進められる。
【０１６３】
［ステップＳ１３５］ユーザ移動部１２７は、移動先の決定済のユーザをリストから削除する。その後、処理がステップＳ１２１に進められる。
このようにして、移動が必要なユーザに関して、ユーザクラスの高い順にサーバの移動処理が行われる。このとき、遅延時間を保証可能なサーバが選択できれば、そのサーバが優先的に選択される。一方、遅延時間を保証可能なサーバがなければ、遅延保証値外でも資源確保が可能なセンタが選択される。どちらも選択できなければソーリー応答の返送指示が行われる。
【０１６４】
ユーザを新しいセンタに移動するために、移動元のサーバには、次回のユーザからのリクエストに対し、広域負荷分散装置１００への再アクセスを指示するメッセージを返すよう設定される。さらに、移動元のサーバに保存されていたユーザ情報が、移動先のサーバに移動される。また、移動元と移動先のセンタ内負荷分散装置に対しても、移動するユーザの情報の更新が行われる。これらのユーザ処理により再度別のユーザが移動となった場合には、移動させられるユーザが移動先ユーザリストに追加される。そして、全ユーザの移動先が決定するまで、図１７の処理が繰り返される。
【０１６５】
次に、全ユーザ再配置処理を詳細に説明する。
図１８は、全ユーザ再配置処理の手順を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１６６】
［ステップＳ１４１］ユーザ移動部１２７は、ユーザ割当テーブルを作成する。ユーザ割当テーブルは、各ユーザの割当先となるデータセンタおよびサーバを登録するテーブルである。
【０１６７】
［ステップＳ１４２］ユーザ移動部１２７は、全てのユーザについて、ステップＳ１４３〜Ｓ１５０の処理が完了したか否かを判断する。全てのユーザについて処理が完了してれば、処理がステップＳ１５１に進められる。未処理のユーザが存在していれば、処理がステップＳ１４３に進められる。
【０１６８】
［ステップＳ１４３］ユーザ移動部１２７は、優先度の高い順にユーザを選択する。
［ステップＳ１４４］ユーザ移動部１２７は、遅延時間を保証したセンタ／サーバ選択処理（その１）をサーバ選択部１２６に依頼する。
【０１６９】
［ステップＳ１４５］ユーザ移動部１２７は、ステップＳ１４４の処理によって、データセンタおよびサーバの確保に成功したか否かを判断する。確保に成功した場合、処理がステップＳ１５０に進められる。確保に失敗した場合、処理がステップＳ１４６に進められる。
【０１７０】
［ステップＳ１４６］ユーザ移動部１２７は、データセンタおよびサーバの確保に失敗した場合、要再追加フラグをＯＮに設定する。
［ステップＳ１４７］ユーザ移動部１２７は、遅延時間を保証しないセンタ／サーバ選択処理（その２）をサーバ選択部１２６に依頼する。
【０１７１】
［ステップＳ１４８］ユーザ移動部１２７は、ステップＳ１４７の処理によって、データセンタおよびサーバの確保に成功したか否かを判断する。確保に成功した場合、処理がステップＳ１５０に進められる。確保に失敗した場合、処理がステップＳ１４９に進められる。
【０１７２】
［ステップＳ１４９］ユーザ移動部１２７は、ユーザ割当テーブルに対して、選択したユーザの割当先としてソーリーサーバ（割当に失敗したことを示す）を登録する。その後、処理がステップＳ１４２に進められ、他のユーザに対する処理が行われる。
【０１７３】
［ステップＳ１５０］ユーザ移動部１２７は、ユーザ割当テーブルに対して、選択したユーザの割当先として、選択されたデータセンタおよびサーバを登録する。その後、処理がステップＳ１４２に進められ、他のユーザに対する処理が行われる。
【０１７４】
［ステップＳ１５１］ユーザ移動部１２７は、全てのユーザに対して、データセンタおよびサーバの割当処理が完了したら、要再追加フラグがＯＮか否かを判定する。要再追加フラグがＯＮの場合、処理がステップＳ１５２に進められる。要再追加フラグがＯＦＦ（初期状態）の場合、処理がステップＳ１５３に進められる。
【０１７５】
［ステップＳ１５２］ユーザ移動部１２７は、管理サーバ５０に対してサーバ追加指示を出す。
［ステップＳ１５３］ユーザ移動部１２７は、各ユーザに対して現在割り当てられているデータセンタおよびサーバ（現割当）と、ステップＳ１４２〜Ｓ１５０の処理で各ユーザに対して選択されたデータセンタおよびサーバ（新割当）との差分（現割当と新割当とが異なるユーザのリスト）を作成する。
【０１７６】
［ステップＳ１５４］ユーザ移動部１２７は、差分で検出された全てのユーザに対して移動処理が完了したか否かを判断する。移動処理が完了した場合、処理が終了する。移動していないユーザがある場合、処理がステップＳ１５５に進められる。
【０１７７】
［ステップＳ１５５］ユーザ移動部１２７は、移動ユーザを優先度の低い順に選択する。
［ステップＳ１５６］ユーザ移動部１２７は、ユーザ移動処理を実行する。その後、処理がステップＳ１５４に進められる。
【０１７８】
このようにして、全ユーザの割当の最適化が行われる。すなわち、全ユーザが、高優先度のユーザから順に、適したサーバに割り当てられる。この際に遅延保証値を守れないユーザが存在した場合、サーバ増設処理が行われる。
【０１７９】
次に、管理サーバ５０で実行される過不足容量判定処理について説明する。過不足容量判定処理は、定期的に実行される処理であり、処理能力の過不足に応じてサーバの追加または削除を自動的に行う処理である。
【０１８０】
図１９は、過不足容量判定処理の手順を示すフローチャートの前半である。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ１６１］管理サーバ５０は、サーバ構成変更中か否かを判断する。サーバ構成変更中でなければ、処理がステップＳ１６２に進められる。サーバ構成変更中であれば、処理が終了する。
【０１８１】
［ステップＳ１６２］管理サーバ５０は、ユーザ利用中の資源の合計（利用中容量）を計算する。なお、利用中の資源は、サービス／ユーザ割当表１１３の利用済の欄の値によって判断できる。
【０１８２】
［ステップＳ１６３］管理サーバ５０は、サービス提供用に割り当てられているサーバ資源（サーバ割当量）の合計を計算する。なお、割り当てられたサーバ資源は、サービス／ユーザ割当表１１３の割当済の欄の値によって判断できる。
【０１８３】
［ステップＳ１６４］管理サーバ５０は、利用中容量÷割当量の値が０．５以下（利用割合が５０％以下）か否かを判断する。０．５以下であれば、処理がステップＳ１６５に進められる。０．５を超えていれば、処理がステップＳ１８１（図２０に示す）に進められる。
【０１８４】
［ステップＳ１６５］管理サーバ５０は、新しい割当容量を計算する。これは、必要な資源量の見積処理である。この処理は現利用量の５０％にする等の単純な方式や、負荷変動から近未来に必要な資源量を予測する方法等が考えられる。
【０１８５】
［ステップＳ１６６］管理サーバ５０は、広域負荷分散装置１００が有するユーザ情報表１１２を参照し、各ユーザの最適なデータセンタ（推奨センタ）を取得し、データセンタそれぞれについて、そのデータセンタを推奨センタとするユーザに割り当てる資源の総容量（最適値）を集計する。
【０１８６】
［ステップＳ１６７］管理サーバ５０は、広域負荷分散装置１００が有するサービス／ユーザ割当表１１３を参照し、データセンタそれぞれについて、そのデータセンタに割当済の資源量（割当済容量）をデータセンタ毎に集計する。
【０１８７】
［ステップＳ１６８］管理サーバ５０は、データセンタ毎に、最適値と割当済容量との差分を算出する。
［ステップＳ１６９］管理サーバ５０は、全データセンタに対してステップＳ１７０〜Ｓ１７２の処理を行ったか否かを判断する。全データセンタに対する処理が完了していれば、処理がステップＳ１７３に進められる。未処理のデータセンタがあれば、処理がステップＳ１７０に進められる。
【０１８８】
［ステップＳ１７０］管理サーバ５０は、最適値と割当済容量との差分が小さい順に、データセンタを選択する。
［ステップＳ１７１］管理サーバ５０は、サービス／ユーザ割当表１１３を参照し、選択したデータセンタの割当済容量が、最低割当量以下か否かを判断する。最低割当量以下であれば、処理がステップＳ１７３に進められる。最低割当量より大きければ、処理がステップＳ１７２に進められる。
【０１８９】
［ステップＳ１７２］管理サーバ５０は、選択したデータセンタからサーバを１台削除する設定を行う。その後、処理がステップＳ１６９に進められる。
［ステップＳ１７３］管理サーバ５０は、広域負荷分散装置１００に対して、全ユーザの再配置処理を依頼する。
【０１９０】
［ステップＳ１７４］管理サーバ５０は、全ユーザの再配置完了後、サーバ実割当解除処理を行う。その後、処理が終了する。
図２０は、過不足容量判定処理の手順を示すフローチャートの後半である。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１９１】
［ステップＳ１８１］管理サーバ５０は、利用中容量÷割当量の値が０．９以上（利用割合が９０％以上）か否かを判断する。０．９以上であれば、処理がステップＳ１８２に進められる。０．９未満であれば、処理が終了する。
【０１９２】
［ステップＳ１８２］管理サーバ５０は、新しい割当容量を計算する。この処理では、必要な資源量の見積が行われる。見積処理としては、例えば、現在の利用量の倍に増やす等の単純な方式や、負荷変動から近未来に必要な資源量を予測する方法等が考えられる。
【０１９３】
［ステップＳ１８３］管理サーバ５０は、広域負荷分散装置１００が有するユーザ情報表１１２を参照し、各ユーザの最適なデータセンタ（推奨センタ）を取得し、データセンタそれぞれについて、そのデータセンタを推奨センタとするユーザに割り当てる資源の総容量（最適値）を集計する。
【０１９４】
［ステップＳ１８４］管理サーバ５０は、広域負荷分散装置１００が有するサービス／ユーザ割当表１１３を参照し、データセンタそれぞれについて、そのデータセンタに割当済の資源量（割当済容量）をデータセンタ毎に集計する。
【０１９５】
［ステップＳ１８５］管理サーバ５０は、データセンタ毎に、最適値と割当済容量との差分を算出する。
［ステップＳ１８６］管理サーバ５０は、全データセンタに対してステップＳ１８７〜Ｓ１９０の処理を行ったか否かを判断する。全データセンタに対する処理が完了していれば、処理がステップＳ１９１に進められる。未処理のデータセンタがあれば、処理がステップＳ１８７に進められる。
【０１９６】
［ステップＳ１８７］管理サーバ５０は、最適値と割当済容量との差分が大きい順に、データセンタを選択する。
［ステップＳ１８８］管理サーバ５０は、サービス／ユーザ割当表を参照し、選択したデータセンタの割当済容量が、最大割当量以上か否かを判断する。すなわち、選択されたデータセンタを推奨センタとする全てのユーザを割り当てられるだけの資源が、割当済となっているか否かが判断される。割当済容量が最大割当量以上であれば、処理がステップＳ１９１に進められる。割当済容量が最大割当量に達していなければ、処理がステップＳ１８９に進められる。
【０１９７】
［ステップＳ１８９］管理サーバ５０は、選択したデータセンタに空きサーバ（サービス／ユーザ割当表１１３における割当済の値が０のサーバ）があるか否かを判断する。空きサーバがあれば、処理がステップＳ１９０に進められる。空きサーバがなければ、処理がステップＳ１８６に進められる。
【０１９８】
［ステップＳ１９０］管理サーバ５０は、選択したデータセンタに空きサーバを１台追加する。すなわち、該当するデータセンタにおける割当済の資源量が増やされる。その後、処理がステップＳ１８４に進められ、割当済容量が再計算される。
【０１９９】
［ステップＳ１９１］管理サーバ５０は、サーバ実割当処理を行う。
［ステップＳ１９２］管理サーバ５０は、全ユーザの再配置処理を行う。その後、処理が終了する。
【０２００】
このようなサービス容量の過不足確認処理が定期的に行われる。例えば、この処理は数秒から数分おきに実行される。
過不足確認処理では、まずサーバ増設・削減中でないことが確認され、その後ユーザが利用中の総容量とサーバとして割り当てられている総容量が算出される。それらを比較した結果、利用している割合が５０％等一定値以下となったときは余剰サーバの割合が高いと判断しサーバの削減処理が行われる。
【０２０１】
サーバ削減処理ではまず必要な資源量の見積が行われる。その後センタ毎に、そのセンタが最適なユーザ群に必要な資源量と、そのセンタに割当済みの資源量が算出される。そして割合として余剰資源が多いセンタからサーバ削除の対象としてサーバが選択される。削除対象のサーバが決定したら残るサーバ群に対して全ユーザの再割当が行われる。そうすることで削除対象のサーバを利用するユーザは稼動しつづけるサーバに移動することとなる。その後利用するユーザがいなくなったサーバはオンデマンド制御でサービスへの割当対象から外される。
【０２０２】
また、利用している割合が９０％等一定値以上になったときは、サーバ資源が不足しつつあると判断しサーバの増設処理が行われる。その後センタ毎に、そのセンタが最適なユーザ群に必要な資源量と、そのセンタに割当済みの資源量が算出される。そして割合として割当資源が少ないセンタからサーバ追加の対象としてサーバが選択される。追加対象のサーバが決定したらサーバのオンデマンド割当処理が行われる。割当処理完了後はユーザ割当再最適化処理が行われる。
【０２０３】
次に、センタ内負荷分散装置の処理について説明する。
図２１は、センタ内負荷分散装置の処理手順を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
【０２０４】
［ステップＳ２０１］センタ内負荷分散装置は、クライアントからのリクエストを受信する。
［ステップＳ２０２］センタ内負荷分散装置は、ユーザ識別処理を行う。ユーザ識別処理の詳細は、図１０に示した広域負荷分散装置１００におけるユーザ識別処理と同様である。
【０２０５】
［ステップＳ２０３］センタ内負荷分散装置は、リクエストを出力したユーザのユーザ情報を保持しているか（該当ユーザがサービス対象として設定されているか）否かを判断する。ユーザ情報を保持していれば、処理がステップＳ２０４に進められる。ユーザ情報を保持していなければ、処理がステップＳ２０７に進められる。
【０２０６】
［ステップＳ２０４］センタ内負荷分散装置は、振り分け先が設定済みか否かを判断する。振り分け先が設定済みであれば、処理がステップＳ２０５に進められる。振り分け先が設定済みでなければ、処理がステップＳ２０７に進められる。
【０２０７】
［ステップＳ２０５］センタ内負荷分散装置は、振り分け先として他のデータセンタへの移動が設定されているか否かを判断する。他のデータセンタへ移動させる場合、処理がステップＳ２０７に進められる。他のデータセンタへ移動させない場合、処理がステップＳ２０６に進められる。
【０２０８】
［ステップＳ２０６］センタ内負荷分散装置は、同じデータセンタ内のサーバへ、リクエストのパケットを転送する。その後、処理が終了する。
［ステップＳ２０７］センタ内負荷分散装置は、広域負荷分散装置１００へ再アクセスさせるためのリダイレクトメッセージをクライアントに送信する。その後、処理が終了する。
【０２０９】
このように、センタ内負荷分散装置は、ユーザからのリクエストを受け取ったとき、そのユーザの情報の確認を行う。ユーザ情報がサーバ内に存在しない、もしくは他サーバに移動させるよう設定されている場合は、広域負荷分散装置１００へのリダイレクトを指示する。また、センタ内負荷分散装置は、ユーザからのリクエストを受け取ったとき、そのユーザの情報および振り分け先サーバの設定が行われていればそのサーバにリクエストの中継を行う。ユーザ情報が存在しない場合には広域負荷分散装置１００にリダイレクトを指示する。これにより、広域負荷分散装置１００によるユーザクラス判定およびサーバ割当処理が行われる。
【０２１０】
次に、サーバで行われる処理を詳細に説明する。
図２２は、サーバの処理手順を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。
【０２１１】
［ステップＳ２１１］サーバは、クライアントからのリクエストを受信する。
［ステップＳ２１２］サーバは、ユーザ識別処理を行う。ユーザ識別処理の詳細は、図１０に示した広域負荷分散装置１００におけるユーザ識別処理と同様である。
【０２１２】
［ステップＳ２１３］サーバは、リクエストに応じた処理を実行し、サービスを提供する。そして、サーバは、処理結果をクライアントに返送する。
次に、クライアントの動作について説明する。
【０２１３】
図２３は、クライアントの処理手順を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］クライアントは、広域負荷分散装置１００のＩＰアドレスをアクセス先のサーバとして設定する。
【０２１４】
［ステップＳ２２２］クライアントは、アクセス先として設定されたサーバへリクエストを送信する。
［ステップＳ２２３］クライアントは、リクエストに対する応答を受信する。
【０２１５】
［ステップＳ２２４］クライアントは、応答がリダイレクト指示か否かを判断する。リダイレクト指示であれば、処理がステップＳ２２５に進められる。リダイレクト指示でなければ、処理がステップＳ２２６に進められる。
【０２１６】
［ステップＳ２２５］クライアントは、アクセス先を、リダイレクトで指示されれたサーバ（データセンタの代表のＩＰアドレス）に変更する。
［ステップＳ２２６］クライアントは、応答で返された情報を利用した処理（例えば、取得した情報の画面表示）を行う。
【０２１７】
［ステップＳ２２７］クライアントは、サービス利用を終了するか否かを判断する。例えば、ユーザによってサービス利用終了の操作入力がおこなわれた場合、サービス利用終了と判断する。サービス利用終了の場合、処理が終了する。サービス利用終了ではない場合、処理がステップＳ２２２に進められる。
【０２１８】
このように、クライアントはまずサービス利用にあたり広域負荷分散装置１００に対して初期リクエストの送信を行う。ここでクライアントは、広域負荷分散装置１００も通常のサーバと同一視している。広域負荷分散装置１００からは、リダイレクトを指示した応答が返される。そこで、クライアントは、自身のアクセス先サーバを指示されたサーバに変更し同一リクエストの再送を行う。これ以降、クライアントは、応答としてリダイレクトが来た場合はサーバの変更とリクエスト再送、通常の応答が来ればサービス利用を行う。
【０２１９】
次に、サーバ増設・縮退処理について、図２４〜図２６を参照して説明する。なお、これらの処理はオンデマンド運用におけるサーバ増設・縮退の一手法を説明するものであり、他の方式によってオンデマンド配備を行うこともできる。
【０２２０】
図２４は、サーバ実割当処理の手順を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
［ステップＳ２３１］管理サーバ５０は、全てのサーバに対して、ステップＳ２３２〜Ｓ２３４の処理を行ったか否かを判断する。全てのサーバに対して処理が完了していれば、処理がステップＳ２３５に進められる。未処理のサーバがあれば、処理がステップＳ２３２に進められる。
【０２２１】
［ステップＳ２３２］管理サーバ５０は、増設対象のサーバを選択する。
［ステップＳ２３３］管理サーバ５０は、選択したサーバが稼働中か否かを判断する。稼働中であれば、処理がステップＳ２３４に進められる。稼働中でなければ、処理がステップＳ２３１に進められる。
【０２２２】
［ステップＳ２３４］管理サーバ５０は、選択したサーバの縮退処理（サーバ実割当解除処理）を行う。その後、処理がステップＳ２３１に進められる。
［ステップＳ２３５］管理サーバ５０は、処理対象となるデータセンタ内の何れかのサーバに必要なシステムイメージがあるか否かを判断する。ここで、システムイメージとは、サーバ上にサービス環境を構築するために必要な全てのデータ（ＯＳやアプリケーションのプログラムや、環境設定等の管理情報を含む）を１つの纏まりとしたものである。システムイメージがあれば、処理がステップＳ２３７に進められる。システムイメージがなければ、処理がステップＳ２３６に進められる。
【０２２３】
［ステップＳ２３６］管理サーバ５０は、システムイメージがないデータセンタに対して、他のデータセンタからシステムイメージを転送させる。
［ステップＳ２３７］管理サーバ５０は、データセンタ内のシステムイメージを保持しているサーバにおいて、システムイメージのコピーを作成させる。
【０２２４】
［ステップＳ２３８］管理サーバ５０は、全てのサーバに対して、ステップＳ２３９〜Ｓ２４１の処理を行ったか否かを判断する。全てのサーバに対して処理が完了していれば、処理がステップＳ２４２に進められる。未処理のサーバがあれば、処理がステップＳ２３９に進められる。
【０２２５】
［ステップＳ２３９］管理サーバ５０は、増設対象のサーバを選択する。
［ステップＳ２４０］管理サーバ５０は、コピーしたシステムイメージのサーバ固有情報を更新する。
【０２２６】
［ステップＳ２４１］管理サーバ５０は、選択したサーバに対して、コピーしたシステムイメージからの起動を指示する。その後、処理がステップＳ２３８に進められる。
［ステップＳ２４２］管理サーバ５０は、サーバ起動完了確認処理を開始する。その後、処理が終了する。
【０２２７】
このように、処理対象のサーバが稼動中であれば、それらのサーバに対し終了（サーバ縮退処理）が指示される。続いて割当対象のセンタ内に既に起動させるサービスのシステムイメージが存在しているかが確認され、存在しない場合は他のデータセンタから処理対象のデータセンタ内にファイルシステムがコピーされる。さらにデータセンタ内で稼動させるサーバ用の利用システムイメージのコピーが作成され、各々の実サーバと関連付けが行われる（サーバ固有情報の設定）。そして、サーバに対し、コピーしたシステムイメージからシステムを起動するよう指示が出される。これにより、所定のサービスを提供可能なサーバが、データセンタ内に追加される。
【０２２８】
次に、起動完了確認処理を詳細に説明する。
図２５は、サーバ起動完了確認処理の手順を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。
【０２２９】
［ステップＳ２５１］管理サーバ５０は、起動確認対象となるサーバの状態を示す情報として、「起動中」を設定する。
［ステップＳ２５２］管理サーバ５０は、起動確認対象の全てのサーバに対して、ステップＳ２５３〜Ｓ２５７の処理を行ったか否かを判断する。全てのサーバに対して処理が完了していれば、処理がステップＳ２５８に進められる。未処理のサーバがあれば、処理がステップＳ２５３に進められる。
【０２３０】
［ステップＳ２５３］管理サーバ５０は、起動中のサーバを選択する。
［ステップＳ２５４］管理サーバ５０は、選択したサーバを監視し、起動が完了したか否かを判断する。完了した場合、処理がステップＳ２５５に進められる。完了しない場合、処理がステップＳ２５６に進められる。
【０２３１】
［ステップＳ２５５］管理サーバ５０は、選択したサーバの状態を「起動完了」に設定し、処理をステップＳ２５２に進める。
［ステップＳ２５６］管理サーバ５０は、選択したサーバが起動に失敗したか否かを判断する。起動に失敗した場合、処理がステップＳ２５７に進められる。まだ起動中の場合、処理がステップＳ２５２に進められる。
【０２３２】
［ステップＳ２５７］管理サーバ５０は、選択したサーバの状態を「起動失敗」に設定し、処理をステップＳ２５２に進める。
［ステップＳ２５８］管理サーバ５０は、起動確認対象の全てのサーバについて起動が完了したか否かを判断する。全てのサーバの起動が完了した場合、処理がステップＳ２６２に進められる。起動失敗のサーバがあれば、処理がステップＳ２５９に進められる。
【０２３３】
［ステップＳ２５９］管理サーバ５０は、処理を開始してからの総待ち時間が所定の限度以内か否かを判断する。限度以内であれば、処理がステップＳ２６０に進められる。限度を超えていれば、処理がステップＳ２６１に進められる。
【０２３４】
［ステップＳ２６０］管理サーバ５０は、一定時間待って、処理をステップＳ２５２に進める。
［ステップＳ２６１］管理サーバ５０は、未起動のサーバの状態を「起動失敗」に設定する。
【０２３５】
［ステップＳ２６２］管理サーバ５０は、起動に成功したサーバのリストを作成する。その後、処理が終了する。
このようにして、サーバが起動完了したかが調査される。そのとき、起動完了または起動失敗との判断がされないサーバがあった場合、所定の時間経過するまで繰り返し調査が行われる。そして、全サーバの起動が完了するか起動失敗と判断されるか、一定時間以上経過したとき、起動に成功したサーバの情報が生成される。
【０２３６】
次に、サーバ実割当解除処理について説明する。
図２６は、サーバ実割当解除処理の手順を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
【０２３７】
［ステップＳ２７１］管理サーバ５０は、縮退対象の全サーバに対して、ステップＳ２７２〜Ｓ２７３の処理が完了したか否かを判断する。全サーバに対して処理が完了していれば、処理がステップＳ２７４に進められる。未処理のサーバがあれば、処理がステップＳ２７２に進められる。
【０２３８】
［ステップＳ２７２］管理サーバ５０は、縮退対象のサーバを選択する。
［ステップＳ２７３］管理サーバ５０は、選択したサーバに対して停止を指示する。その後、処理がステップＳ２７１に進められる。
【０２３９】
［ステップＳ２７４］管理サーバ５０は、縮退対象のサーバを、停止中に設定する。
［ステップＳ２７５］管理サーバ５０は、停止中と設定された全サーバに対して、ステップＳ２７６〜Ｓ２７８の処理が完了したか否かを判断する。全サーバに対して処理が完了していれば、処理がステップＳ２７９に進められる。未処理のサーバあれば、処理がステップＳ２７６に進められる。
【０２４０】
［ステップＳ２７６］管理サーバ５０は、停止中のサーバを選択する。
［ステップＳ２７７］管理サーバ５０は、選択したサーバの停止が完了したか否かを判断する。停止が完了した場合、処理がステップＳ２７８に進められる。停止が完了していない場合、処理がステップＳ２７５に進められる。
【０２４１】
［ステップＳ２７８］管理サーバ５０は、選択したサーバの状態を「停止完了」に設定し、処理をステップＳ２７５に進める。
［ステップＳ２７９］管理サーバ５０は、縮退対象の全てのサーバに対して停止の有無の調査が終了したら、縮退対象の全サーバが「停止完了」の状態になったか否かを判断する。全ての「停止完了」となった場合、処理がステップＳ２８３に進められる。「停止完了」でないサーバがある場合、処理がステップＳ２８０に進められる。
【０２４２】
［ステップＳ２８０］管理サーバ５０は、待ち時間が所定の限度（例えば１０分）以内か否かを判断する。限度以内であれば、処理がステップＳ２８１に進められる。限度を超えている場合、処理がステップＳ２８２に進められる。
【０２４３】
［ステップＳ２８１］管理サーバ５０は、待ち時間が限度以内であれば、一定時間（例えば１０秒）待った後、処理をステップＳ２７５に進める。
［ステップＳ２８２］管理サーバ５０は、待ち時間が限度を超えた場合、停止していないサーバの状態を「停止失敗」に設定する。
【０２４４】
［ステップＳ２８３］管理サーバ５０は、状態が「停止完了」となっている停止成功サーバのリストを作成し、処理を終了する。
このようにして、サーバ実割当解除処理では、処理対象の全サーバに対しサーバ停止の指示が出される。停止処理の中には、サービス処理の終了や必要なデータの固定サーバへの転送、システムのシャットダウン等の処理が含まれる。サーバ停止の指示を出した後、全サーバが停止するか、あるいは一定時間経過するまで待って、停止に成功したサーバの情報が生成される。
【０２４５】
以上のようにして、各ユーザに対してユーザクラスで指定されたサービス品質が維持できるようになる。その結果、ユーザに対し常に充分な品質のサービスを提供できるようになる。また、それによってサービス提供側には付加価値の高いサービスを提供できる。
【０２４６】
しかも、サービスの種別毎にサービス品質保証値（クライアントに保証する処理遅延時間の最大値）を変更することができる。また、ユーザ毎に優先度を設定し、サービス品質保証値を変更することもできる。さらに、クライアントとセンタの位置関係の違いに応じて、サービスを稼動させるセンタの選択および再割当およびクライアントのリクエストを誘導するセンタの選択および再割当を行うことができる。これにより、従来にない柔軟なサービス運用とサービス品質保証が行われる。
【０２４７】
以下、上記の実施の形態による全体の処理の流れを、具体例を用いて説明する。
以下の具体例では、インターネット上で提供されるＥコマースサイトによって、電子商取引サービスを提供するものとする。この例では、カタログ情報や購入手続き等についてはオンデマンドで運用されるデータセンタ２００，３００，４００内のサーバ上で提供・処理が行われる。また、購入情報や決済等の管理・処理は、バックエンドサーバ６０で行われる。
【０２４８】
また、クライアント上で利用されるサービス利用のためのソフトとしては、一般的なＷｅｂブラウザが利用される。このとき、サービス利用者としても一般ユーザが対象となるため、クライアントに対する専用アプリケーションの導入等を求めるのは困難である。従って、以下の具体例では一般的なＷｅｂブラウザが標準的に持つ機能を利用してセンタ間の移動等の処理を実現するものとする。
【０２４９】
以下、クライアントからのリクエスト処理の流れについて説明する。
１．基本的な処理の流れ
図２に示すような典型的なネットワーク構成において、ユーザが、クライアント群４１〜４３の何れかに含まれるクライアントを操作し、Ｗｅｂブラウザに対して処理要求の指示を入力する。すると、クライアントのＷｅｂブラウザが、広域負荷分散装置１００に対してリクエストを送信する。
【０２５０】
例えば、公開するサービスのＵＲＬ（http://www.xxx.com/等）に含まれるホスト名（www.xxx.com）に対応するＩＰアドレスとして、広域負荷分散装置１００のＩＰアドレスをＤＮＳ（Domain Name System）に登録することが考えられる。この例ではユーザが利用するＷｅｂブラウザはユーザ識別情報を持っていない。従って送信されるリクエストにユーザ情報は含まれない。
【０２５１】
クライアントのＷｅｂブラウザからのリクエストを受け取った広域負荷分散装置１００は、ユーザからのリクエスト内容の解析を行う。ユーザから送信されたリクエストがどのサービス宛のものであり、ユーザ情報が含まれているか、どのユーザか、の識別を行う。この例ではユーザからのリクエストにはユーザ情報は含まれていないため、広域負荷分散装置１００はユーザ識別に失敗し、デフォルト状態なるクラスに設定される。
【０２５２】
ここで、広域負荷分散装置１００は、Ｗｅｂブラウザからのリクエストを介して、提供すべきサービスの種別を判断する。１台の広域負荷分散装置１００を単一のサービス種別に対してのみ利用している場合は、広域負荷分散装置１００は、全リクエストを特定のサービス宛のものと判断する。
【０２５３】
一方、複数のサービスで広域負荷分散装置１００を共用する場合には、広域負荷分散装置１００にサービス種別毎の複数のＩＰアドレスを割り当て、リクエストの宛先として指定されたＩＰアドレスによってサービス種別を識別することができる。また、サービス毎に利用するＴＣＰポート番号を変更し、ポート番号でサービス種別を識別することもできる。さらに、サービス種別毎にＵＲＬ等の識別情報を割り当て、リクエストヘッダに含まれるＨｏｓｔ行で示されるＦＱＤＮ（Fully Qualified Domain Name）情報を参照することで、サービス種別を判別することもできる。
【０２５４】
広域負荷分散装置１００はユーザのクラスおよびサービス種別に基づいて、そのユーザに割り当てるデータセンタおよびサーバを決定する。また、広域負荷分散装置１００は新規ユーザに対してユニークな識別情報を発行し、その情報を自身および利用するセンタのセンタ内負荷分散装置および利用するサーバに対し登録する。
【０２５５】
その後、広域負荷分散装置１００はユーザ識別情報と転送先となるデータセンタのセンタ内負荷分散装置とを指定したリダイレクトメッセージをＷｅｂブラウザに返答する。返答を受け取ったＷｅｂブラウザは、リダイレクトメッセージが指定するセンタ内負荷分散装置に再度リクエストを送信する。このとき、Ｗｅｂブラウザは、広域負荷分散装置１００から受け取ったユーザ情報を同時に送信する。リダイレクトの方法としては、ＨＴＴＰで規定されるサーバ転送の方法が利用できる。具体的には応答として"301 Moved Permanently"等によって新しいサーバを返す方法や、メタタグによるページ更新("<META HTTP-EQUIV="Refresh" CONTENT="0;URL">")による方法等がある。
【０２５６】
ユーザからのリクエストを受け取ったセンタ内負荷分散装置は、広域負荷分散装置１００と同様にリクエストの解析を行う。そしてユーザ識別情報に基づき実処理サーバの特定を行い、リクエストをそのサーバに転送する。この部分の転送はセンタ内負荷分散装置がパケットレベルでリクエストと応答を中継することを想定している。
【０２５７】
リクエストを受信したサーバは応答を作成し、Ｗｅｂブラウザに返送する。これ以降はＷｅｂブラウザ−センタ内負荷分散装置−サーバの間で通常のＷｅｂサービスと同等の処理が開始される。
【０２５８】
２．ユーザ識別情報、ユーザクラス情報の更新
前項の処理によってサービスが開始されるが、この状態ではまだユーザは望ましいクラスに分類されていない。このためユーザに対し正しいクラス情報を付与する必要がある。このためには、まず何らかの方法でユーザ認証を行う。ユーザ認証処理は、通常のＷｅｂサービスで行われるログイン処理と同等のものである。認証に成功した場合には、そのユーザを適切なクラスに移動させる必要がある。例えば、各サーバは、広域負荷分散装置１００に対しユーザ識別情報と対応する正しいクラスを設定する。その際に、再割当を行うように設定を行う。そしてユーザに対しては広域負荷分散装置１００に再度アクセスするようにリダイレクトメッセージを返送する。広域負荷分散装置１００はユーザからのリクエストに対し、クラス情報に基づいて再度割当処理を行う。そして、広域負荷分散装置１００は、旧サーバから新サーバへ情報の移動および広域負荷分散装置１００とセンタ内負荷分散装置との有する管理情報の更新を行う。
【０２５９】
３．優先クラスユーザによる他ユーザの移動
優先度の高いクラスのユーザ（高クラスユーザ）からのリクエストは、優先度が低いクラスのユーザ（低クラスユーザ）のリクエストよりも優先して処理する必要がある。そのため、高クラスユーザは、他に同等もしくはより高クラスユーザが存在しない限り最適なセンタに割当が行われる。また、その際には低クラスユーザの他のセンタへの移動やサービス中断がおき得る。中断した低クラスユーザ向けのサービスはサーバ追加後に再開される。なお、実際には事前予測をしながらサーバが追加されるため、サービス中断が発生するのは致命的な予測ミスが発生した場合に限られる。
【０２６０】
ここで、新しく高クラスユーザがリクエストを送信してきた場合の例を示す。ユーザは通常と同様に広域負荷分散装置１００に対してリクエストを送信する(簡略化のためこの時点でユーザクラスは設定されているものとする)。広域負荷分散装置１００はリクエストからクラスを判定し、サーバを割り当てようとする。この際にそのユーザに最適なデータセンタに必要な空き容量があれば、通常と同様の振り分け処理が行われる。ところが、最適なセンタの未使用容量が足りず、かつそのデータセンタを利用する低クラスユーザが存在する場合には、低クラスユーザを他のデータセンタに移動させた上でそのセンタにユーザを割り当てる処理が行われる。
【０２６１】
具体的には空き容量として未使用＋低クラスユーザ利用量が利用され、割り当てるデータセンタが決定される。その際に必要な容量を低クラスユーザの利用枠から確保する必要があれば、容量確保のために移動させる低クラスユーザが選択され、それに対して同様の割当判定が再度行われる。この際にさらに他ユーザを移動させた場合には、最終的に未割当ユーザがいなくなるかもしくは空き容量が無くなるまで移動が繰り返される。そして利用するサーバが変更になる全ユーザに対し、サーバ間でのユーザ固有情報の移動および広域負荷分散装置１００・センタ内負荷分散装置の設定変更が行われ、ユーザに対して再度広域負荷分散装置１００に転送されるようリダイレクトメッセージの送信が行われる。
【０２６２】
４．ユーザ増加によるサーバ台数の増加
以下、ユーザ増大に伴うサーバ容量拡大時の処理について説明する。
サーバ能力拡大が発生する要因は大きくふたつある。ひとつは観測された負荷変動と負荷予測に基づいて容量不足になる前に容量を増大させる場合、もうひとつは急激な負荷上昇やサーバ障害等により割当可能な未使用容量が無くなった場合である（後者は可能な限り発生しないように前者で制御する）。
【０２６３】
容量が不足しているかの判定は、簡単な方法としては総容量に対して使用済み容量が９０％を超えた場合等、割合で判定する方法がある。また負荷予測を行い、近い将来に不足する可能性が高いか否かで判断することも考えられる。
【０２６４】
総容量不足が検出された場合、広域負荷分散装置１００は、現在必要な容量の計算を行う。最も簡単な実装としては現在の利用量の３０％増しを、現在必要な容量とする方法がある。また他にも過去の負荷変動から線形近似およびサーバ追加に必要な時間から将来予測を行う方法も考えられる。
【０２６５】
続いて広域負荷分散装置１００は、現在の全ユーザが推奨センタへ配置された場合に各データセンタに必要となる容量の計算、および現在各センタに割り当てられているサーバの総容量の計算を行う。そして、広域負荷分散装置１００からの指示を受けた管理サーバ５０は、必要量に対し割当量が少ない（不足する資源量が多い）データセンタからサーバの追加割当を行っていく。
【０２６６】
割当処理完了後、広域負荷分散装置１００は、新しいセンタ配置を元に全ユーザの再配置を行う。この処理は、優先度の高いユーザから順に利用可能なセンタを選択していくとこで行われる。この際、同一センタを利用しつづけるユーザに対しては同じサーバを割り当てつづけることで移動対象ユーザを少なくすることができる。
【０２６７】
５．ユーザ減少によるサーバ台数の削減
ユーザが減少することで割り当てられたサーバ量が過剰と判断される場合には、余剰容量を減らすためサーバの開放が行われる。容量が過剰かの判定は、簡単なものとしては割当済み容量に対し利用中の容量が５０％未満である等、割合で判断する方法がある。また負荷予測によって当面必要な容量に比べて過剰か否かで判断する方法もある。
【０２６８】
過剰容量と判断された場合、現在必要な容量の計算が行われる。簡単な方法としては現在の利用量の３０％増し等で決定する方法がある。
続いて新サーバ構成に合わせて、広域負荷分散装置１００は、ユーザの再配置を行う。この手順はサーバ削減後の状態を前提に割り振り直されること以外サーバ増設のときと基本的に同一である。ユーザの割り振り直し完了後、広域負荷分散装置１００の依頼を受けた管理サーバ５０は、余剰サーバとして選ばれたサーバの停止処理を行う。
【０２６９】
このように、ユーザのデータセンタへの割り振りを動的に決定し、適宜全ユーザの再割り振りを行うことで、ユーザに対する高品質のサービスを継続して提供することができる。
【０２７０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、各負荷分散装置や管理サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２７１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２７２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２７３】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０２７４】
（付記１）  複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散プログラムにおいて、
コンピュータに、
クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断する遅延時間判断手段、
前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する振り分け先決定手段、
前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させるサービス振り分け手段、
として機能させることを特徴とする負荷分散プログラム。
【０２７５】
（付記２）  前記遅延時間判断手段は、前記リクエストの送信元アドレスに基づいて前記クライアントが接続されたクライアント接続サーバを特定し、特定されたクライアント接続サーバの位置に基づいて、前記クライアントと各データセンタとの間の処理遅延時間を判断することを特徴とする付記１記載の負荷分散プログラム。
【０２７６】
（付記３）  前記遅延時間判断手段は、前記クライアントに対してインターネットへの接続サービスを提供するクライアント接続サーバと前記データセンタとの間の通信遅延時間が予め設定された遅延時間管理テーブルを参照して、前記クライアントと各データセンタとの間の処理遅延時間を判断することを特徴とする付記２記載の負荷分散プログラム。
【０２７７】
（付記４）  前記サービス振り分け手段は、前記推奨センタの処理能力に前記リクエストに応じた処理を実行するための余剰資源が無い場合、前記推奨センタの処理能力を増強させることを特徴とする付記１記載の負荷分散プログラム。
【０２７８】
（付記５）  前記サービス振り分け手段は、前記推奨センタの処理能力の増強作業が完了するまで、前記リクエストを出力した前記クライアントへのサービスを一時的に他のデータセンタに実行させることを特徴とする付記４記載の負荷分散プログラム。
【０２７９】
（付記６）  前記振り分け先決定手段は、許容できる処理遅延時間の最大値が許容可遅延時間として予め設定されており、前記許容可遅延時間が保証され、且つ前記リクエストに応じた処理するための余剰資源があるデータセンタを前記推奨センタとすることを特徴とする付記１記載の負荷分散プログラム。
【０２８０】
（付記７）  前記振り分け先決定手段は、サービスで保証する品質を示すサービスクラス毎に前記許容可遅延時間が設定されており、前記クライアントを使用するユーザが属するサービスクラスに基づいて、前記リクエストを振り分ける際の前記許容可遅延時間を決定することを特徴とする付記６記載の負荷分散プログラム。
【０２８１】
（付記８）  前記振り分け先決定手段は、サービスで保証する品質を示すサービスクラス毎に優先度が設定されており、前記推奨センタにおいて前記リクエストに応じた処理を実行するための余剰資源がない場合、前記クライアントを使用するユーザの属するクラスよりも優先度が低いクラスのユーザへのサービスを停止させて、資源を確保することを特徴とする付記１記載の負荷分散プログラム。
【０２８２】
（付記９）  前記振り分け先決定手段は、所定のタイミングで、前記データセンタそれぞれでサービスの提供を受けている全ユーザの前記データセンタへの再振り分けを実施することを特徴とする付記１記載の負荷分散プログラム。
【０２８３】
（付記１０）  コンピュータにより、複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散方法において、
遅延時間判断手段が、クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断し、
振り分け先決定手段が、前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択し、
サービス振り分け手段が、前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させる、
ことを特徴とする負荷分散方法。
【０２８４】
（付記１１）  複数のデータセンタに対してクライアントからの要求を動的に振り分ける負荷分散装置において、
クライアントから送られたリクエストを解析し、前記クライアントのネットワーク上の位置を識別し、前記クライアントの位置とネットワーク上の各データセンタの位置との通信経路に基づいて、前記クライアントが前記データセンタから応答を受け取るまでの処理遅延時間を前記データセンタ毎に判断する遅延時間判断手段と、
前記遅延時間判断手段で判断された処理遅延時間に基づいて、前記クライアントに対して少ない処理遅延時間でサービスを提供可能なデータセンタを優先して、推奨センタとして選択する振り分け先決定手段と、
前記リクエストを出力した前記クライアントへのサービスを、前記推奨センタ内のサーバに実行させるサービス振り分け手段と、
を有することを特徴とする負荷分散装置。
【図面の簡単な説明】
【０２８５】
【図１】本実施の形態の概略を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】広域負荷分散装置のハードウェア構成例を示す図である。
【図４】広域負荷分散装置の機能を示すブロック図である。
【図５】サービス情報表のデータ構造例を示す図である。
【図６】ユーザ情報表のデータ構造例を示す図である。
【図７】サービス／ユーザ割当表のデータ構造例を示す図である。
【図８】ネットワーク遅延算出表のデータ構造例を示す図である。
【図９】広域負荷分散装置の処理手順を示すフローチャートである。
【図１０】ユーザ識別処理の手順を示すフローチャートである。
【図１１】クラス判定処理の手順を示すフローチャートである。
【図１２】ネットワーク遅延算出処理の手順を示すフローチャートである。
【図１３】振り分け先決定処理の手順を示すフローチャートである。
【図１４】サーバ追加処理の手順を示すフローチャートである。
【図１５】センタ／サーバ選択処理（その１）の手順を示すフローチャートである。
【図１６】センタ／サーバ選択処理（その２）の手順を示すフローチャートである。
【図１７】ユーザ移動処理の手順を示すフローチャートである。
【図１８】全ユーザ再配置処理の手順を示すフローチャートである。
【図１９】過不足容量判定処理の手順を示すフローチャートの前半である。
【図２０】過不足容量判定処理の手順を示すフローチャートの後半である。
【図２１】センタ内負荷分散装置の処理手順を示すフローチャートである。
【図２２】サーバの処理手順を示すフローチャートである。
【図２３】クライアントの処理手順を示すフローチャートである。
【図２４】サーバ実割当処理の手順を示すフローチャートである。
【図２５】サーバ起動完了確認処理の手順を示すフローチャートである。
【図２６】サーバ実割当解除処理の手順を示すフローチャートである。
【符号の説明】
【０２８６】
１  負荷分散装置
１ａ  遅延時間判断手段
１ｂ  振り分け先決定手段
１ｃ  サービス振り分け手段
２ａ〜２ｃ  ネットワーク
３ａ〜３ｃ  クライアント
４ａ〜４ｃ  データセンタ
【図１】
2006332825.tif 000003
【図２】
2006332825.tif 000004
【図３】
2006332825.tif 000005
【図４】
2006332825.tif 000006
【図５】
2006332825.tif 000007
【図６】
2006332825.tif 000008
【図７】
2006332825.tif 000009
【図８】
2006332825.tif 000010
【図９】
2006332825.tif 000011
【図１０】
2006332825.tif 000012
【図１１】
2006332825.tif 000013
【図１２】
2006332825.tif 000014
【図１３】
2006332825.tif 000015
【図１４】
2006332825.tif 000016
【図１５】
2006332825.tif 000017
【図１６】
2006332825.tif 000018
【図１７】
2006332825.tif 000019
【図１８】
2006332825.tif 000020
【図１９】
2006332825.tif 000021
【図２０】
2006332825.tif 000022
【図２１】
2006332825.tif 000023
【図２２】
2006332825.tif 000024
【図２３】
2006332825.tif 000025
【図２４】
2006332825.tif 000026
【図２５】
2006332825.tif 000027
【図２６】
2006332825.tif 000028