特許第5978313号(P5978313)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルカテル−ルーセントの特許一覧

特許5978313エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置
<>
  • 特許5978313-エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置 図000002
  • 特許5978313-エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置 図000003
  • 特許5978313-エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置 図000004
  • 特許5978313-エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置 図000005
  • 特許5978313-エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5978313
(24)【登録日】2016年7月29日
(45)【発行日】2016年8月24日
(54)【発明の名称】エネルギー効率の良い分散型でエラスティックなロードバランシングのための方法および装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20160817BHJP
【FI】
   G06F9/46 465D
【請求項の数】9
【全頁数】17
(21)【出願番号】特願2014-549058(P2014-549058)
(86)(22)【出願日】2012年11月19日
(65)【公表番号】特表2015-503781(P2015-503781A)
(43)【公表日】2015年2月2日
(86)【国際出願番号】US2012065753
(87)【国際公開番号】WO2013095833
(87)【国際公開日】20130627
【審査請求日】2014年8月19日
(31)【優先権主張番号】13/334,141
(32)【優先日】2011年12月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】391030332
【氏名又は名称】アルカテル−ルーセント
(74)【代理人】
【識別番号】110001173
【氏名又は名称】特許業務法人川口國際特許事務所
(72)【発明者】
【氏名】ソン,ハオユイ
(72)【発明者】
【氏名】ハオ,ファン
(72)【発明者】
【氏名】ラクシュマン,ティルネル・ブイ
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2003−030078(JP,A)
【文献】 特開平07−168790(JP,A)
【文献】 特開2011−118525(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
親サーバにおいてエネルギー効率が良くかつエラスティックなロードバランシングを提供するための方法であって、
データストレージに通信可能につなげられたプロセッサにおいて、1つまたは複数のクライアントによってインスタンス化された複数のサービス要求を受信するステップと、
データストレージと協働するプロセッサによって、サービス要求と、親サーバと複数の子サーバの間の複数の決定された遅延と、親サーバと複数の子サーバの決定された省エネルギーポテンシャルに基づいて、複数のサービス要求の少なくとも一部に対応する複数のサービス取扱い判断を決定するステップを含み、親サーバと複数の子サーバが、親サーバと複数の子サーバの間の複数の初期決定された遅延と、親サーバと複数の子サーバの初期決定された省エネルギーポテンシャルに基づいて、仮想負荷分散ツリーに配置され、さらに、
データストレージと協働するプロセッサによって、サービス取扱い判断のうち第1の判断に基づいて複数の子サーバの中の子サーバを選択し、第1のサービス取扱い判断に対応する第1のサービス要求に基づいて第1の伝達されたサービス要求を送信するステップと、
データストレージと協働するプロセッサによって、サービス取扱い判断のうち第2の判断に基づいて親サーバを選択し、第2のサービス取扱い判断に対応する第2のサービス要求を取り扱うステップと
データストレージと協働するプロセッサによって、第2のサービス要求に基づいて、親サーバのローディングを示す親負荷を決定するステップと、
第2のサービス要求の処理と関連づけられ及びデータストレージと協働するプロセッサとによって、親負荷およびサーバ負荷しきい値に基づいて複数の子サーバの中の第2の子サーバを先行して起動させるステップであって、先行して起動された子サーバは第2のサービス要求をサービスする必要がない、起動させるステップと、を含む、方法。
【請求項2】
第2のサービス要求を取り扱うステップが、第2のサービス要求のインスタンス化側クライアントに直接応答するステップを含む、請求項1に記載の方法。
【請求項3】
データストレージと協働するプロセッサによって、複数のサービス要求のうちの少なくとも1つに基づいて、親サーバのローディングを示す親負荷を決定するステップと、
データストレージと協働するプロセッサによって、親サーバの親である親−親サーバのローディングを示す親−親負荷を受信するステップと、
データストレージと協働するプロセッサによって、親負荷、親−親負荷および親−親負荷しきい値に基づいて親サーバの動作をスリープモードに切り換えるステップと
をさらに含む、請求項1に記載の方法。
【請求項4】
データストレージと協働するプロセッサによって、子サーバおよび第1のサービス要求に基づく少なくとも1つの関係する選択パラメータを登録するステップと、
データストレージと協働するプロセッサによって、複数のサービス要求のうちの第3のサービス要求および少なくとも1つの登録した関係する選択パラメータに基づいて子サーバを選択するステップと、
第3のサービス要求に基づいて第3の伝達されたサービス要求を送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項5】
データストレージと、
データストレージに通信可能につなげられたプロセッサであって、
1つまたは複数のクライアントによってインスタンス化された複数のサービス要求を受信し、
サービス要求と、親サーバと複数の子サーバの間の複数の決定された遅延と、親サーバと複数の子サーバの決定された省エネルギーポテンシャルに基づいて、複数のサービス要求の少なくとも一部に対応する複数のサービス取扱い判断を決定し、親サーバと複数の子サーバが、親サーバと複数の子サーバの間の複数の初期決定された遅延と、親サーバと複数の子サーバの初期決定された省エネルギーポテンシャルに基づいて、仮想負荷分散ツリーに配置され、
サービス取扱い判断のうち第1の判断に基づいて複数の子サーバの中の子サーバを選択し、第1のサービス取扱い判断に対応する第1のサービス要求に基づいて第1の伝達されたサービス要求を送信し、
サービス取扱い判断のうち第2の判断に基づいて親サーバを選択し、第2のサービス取扱い判断に対応する第2のサービス要求を取り扱
第2のサービス要求に基づいて、親サーバのローディングを示す親負荷を決定し、
親負荷およびサーバ負荷しきい値に基づいて複数の子サーバの中の第2の子サーバを先行して起動させ、先行して起動された第2の子サーバは第2のサービス要求をサービスする必要がない、
ように構成された、プロセッサと
を備えた、エネルギー効率が良くかつエラスティックなロードバランシング装置。
【請求項6】
プロセッサが、
複数のサービス要求のうちの少なくとも1つに基づいて親サーバのローディングを示す親負荷を決定し、
親サーバの親である親−親サーバのローディングを示す親−親負荷を受信し、
親負荷、親−親負荷および親−親負荷しきい値に基づいて親サーバの動作をスリープモードに切り換える、
ようにさらに構成される、請求項に記載の装置。
【請求項7】
プロセッサが、
子サーバおよび第1のサービス要求に基づく少なくとも1つの関係する選択パラメータを登録し、
複数のサービス要求のうちの第3のサービス要求および少なくとも1つの登録した関係する選択パラメータに基づいて子サーバを選択し、
第3のサービス要求に基づいて第3の伝達されたサービス要求を送信する、
ようにさらに構成される、請求項に記載の装置。
【請求項8】
子サーバの選択が、子サーバの子サーバ負荷の割合および親サーバの少なくとも1つの他の子サーバに対応する少なくとも1つの他の子サーバ負荷に基づく、請求項に記載の装置。
【請求項9】
子サーバの選択が、更に、1又は複数のパフォーマンス制約を満足させることができる複数の子サーバの中の最も高い負荷を有する複数の子サーバの中の子サーバに基づいている、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、全体としてサーバロードバランシングを提供するための方法および装置に関する。
【背景技術】
【0002】
この項では、本発明をより良く理解することを手助けする際に役立つことがある態様を紹介する。したがって、この項の記述は、この観点から読まれるべきであり、何が従来技術にあるかまたは何が従来技術にないかに関する承認された事実として理解されるべきではない。
【0003】
いくつかの知られたロードバランシングシステムでは、サービスは、高スループットおよび短い応答時間などの高い品質のサービスを提供するために複数のサーバをホストとすることがある。典型的なアーキテクチャは、フロントエンドロードバランサおよび一定数のバックエンドサーバを含むことができる。フロントエンドロードバランサは:ランダム、ラウンドロビン、または負荷に基づく分配、などの従来型の分配ポリシを使用して異なるサーバへ着信する要求を分散させる専用のハードウェアボックスであり得る。このモデルにおいては、全サーバノードはアクティブであり、サービス要求に対してサービスを返す準備ができている。
【0004】
他の知られたロードバランシングシステムでは、フロントエンドロードバランサは、サーバが低エネルギー状態にとどまるようなより多くの機会を作り出すために、負荷が最も高いサーバがパフォーマンス制約を満足することができる限りその負荷が最も高いサーバに新しい要求を送る。しかしながら、多数の異種のサーバの負荷を追跡するには、高度で高価なフロントエンドロードバランサが必要となるので、この解決策はスケーラブルではない。
【発明の概要】
【課題を解決するための手段】
【0005】
様々な実施形態は、エネルギー効率およびスケーラビリティを向上させるために負荷全体に適応し、負荷に伴う電力消費量をスケーリングするロードバランシング構成を提供する方法および装置を提供する。エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャは、ツリー構成として構造化された多層サーバの集合を含む。着信するサービス要求の取扱いは、多数のサーバの間で分散される。仮想負荷分散ツリー内の各サーバは、それ自体の負荷に基づいて着信するサービス要求を受け入れる。一旦、受信側サーバ上で所定のローディングに達すると、受信側サーバは、それ自体の子サーバのうちの1つまたは複数に着信する要求を渡す。
【0006】
一実施形態では、親サーバにおいてエネルギー効率が良くかつエラスティックなロードバランシングを提供するための方法が提供される。本方法は:1つまたは複数のクライアントによってインスタンス化された複数のサービス要求を受信するステップと、サービス要求に基づいて複数のサービス要求の少なくとも一部に対応する複数のサービス取扱い判断を決定するステップと、サービス取扱い判断のうち第1の判断に基づいて子サーバを選択し、第1のサービス取扱い判断に対応する第1のサービス要求に基づいて第1の伝達されたサービス要求を送信するステップと、サービス取扱い判断のうち第2の判断に基づいて親サーバを選択し、第2のサービス取扱い判断に対応する第2のサービス要求を取り扱うステップとを含む。
【0007】
いくつかの実施形態では、第2のサービス要求を取り扱うステップの行為は、第2のサービス要求のインスタンス化側クライアントに直接応答するステップを含む。
【0008】
いくつかの実施形態では、本方法は:複数のサービス要求のうちの少なくとも1つに基づいて親サーバのローディングを示す親負荷を決定するステップと、親負荷およびサーバ負荷しきい値に基づいて親サーバの少なくとも1つの子サーバを起動させるステップとをも含む。
【0009】
いくつかの実施形態では、本方法は:複数のサービス要求のうちの少なくとも1つに基づいて親サーバのローディングを示す親負荷を決定するステップと、親サーバの親である親−親サーバのローディングを示す親−親負荷を受信するステップと、親負荷、親−親負荷および親−親負荷しきい値に基づいて親サーバの動作をスリープモードに切り換えるステップとをさらに含む。
【0010】
いくつかの実施形態では、本方法は:子サーバおよび第1のサービス要求に基づく少なくとも1つの関係する選択パラメータを登録するステップと、複数のサービス要求のうちの第3のサービス要求および少なくとも1つの登録した関係する選択パラメータに基づいて子サーバを選択するステップと、第3のサービス要求に基づいて第3の伝達されたサービス要求を送信するステップとをさらに含む。
【0011】
第2の実施形態では、親サーバにおいてエネルギー効率が良くかつエラスティックなロードバランシングを提供するための装置が提供される。本装置は、データストレージと、データストレージに通信可能につなげられたプロセッサとを含む。プロセッサは:1つまたは複数のクライアントによってインスタンス化された複数のサービス要求を受信し、サービス要求に基づいて複数のサービス要求の少なくとも一部に対応する複数のサービス取扱い判断を決定し、サービス取扱い判断のうち第1の判断に基づいて子サーバを選択し、かつ第1のサービス取扱い判断に対応する第1のサービス要求に基づいて第1の伝達されたサービス要求を送信し、サービス取扱い判断のうち第2の判断に基づいて親サーバを選択し、かつ第2のサービス取扱い判断に対応する第2のサービス要求を取り扱うように構成される。
【0012】
いくつかの実施形態では、第2のサービス要求を取り扱うことは、プロセッサに:第2のサービス要求のインスタンス化側クライアントに直接応答させるようにさらに構成されることを含む。
【0013】
いくつかの実施形態では、プロセッサは:複数のサービス要求のうちの少なくとも1つに基づいて親サーバのローディングを示す親負荷を決定し、かつ親負荷およびサーバ負荷しきい値に基づいて親サーバの少なくとも1つの子サーバを起動させるようにさらに構成される。
【0014】
いくつかの実施形態では、プロセッサは:複数のサービス要求のうちの少なくとも1つに基づいて親サーバのローディングを示す親負荷を決定し、親サーバの親である親−親サーバのローディングを示す親−親負荷を受信し、親負荷、親−親負荷および親−親負荷しきい値に基づいて親サーバの動作をスリープモードに切り換えるようにさらに構成される。
【0015】
いくつかの実施形態では、10プロセッサは:子サーバおよび第1のサービス要求に基づく少なくとも1つの関係する選択パラメータを登録し、複数のサービス要求のうちの第3のサービス要求および少なくとも1つの登録した関係する選択パラメータに基づいて子サーバを選択し、第3のサービス要求に基づいて第3の伝達されたサービス要求を送信するようにさらに構成される。
【0016】
いくつかの実施形態では、子サーバの選択は、子サーバの子サーバ負荷の割合および親サーバの少なくとも1つの他の子サーバに対応する少なくとも1つの他の子サーバ負荷に基づく。
【0017】
第3の実施形態では、エネルギー効率が良くかつエラスティックなロードバランシングを提供するためのシステムが提供される。本システムは、ネットワークを介して通信可能につなげられ、仮想負荷分散ツリー内に論理的に配置された複数のサーバと、複数のサーバに通信可能につなげられたサービス要求ハンドラとを含む。サービス要求ハンドラは:1つまたは複数のクライアントによってインスタンス化された複数のサービス要求を受信し、サービス要求に基づいて複数のサービス要求の少なくとも一部に対応する複数のサービス取扱い判断を決定し、サービス取扱い判断の第1のものに基づいて子サーバを選択しかつ第1のサービス取扱い判断に対応する第1のサービス要求に基づいて第1の伝達されたサービス要求を送信し、サービス取扱い判断の第2のものに基づいて親サーバを選択しかつ第2のサービス取扱い判断に対応する第2のサービス要求を取り扱う、ように構成される。
【0018】
いくつかの実施形態では、仮想負荷分散ツリーは、ルートサーバおよび少なくとも2つのレベルのサーバを含む。
【0019】
いくつかの実施形態では、仮想負荷分散ツリーは、初期遅延の値および複数のサーバの少なくとも一部に関する省エネルギーポテンシャルに基づく。
【0020】
いくつかの実施形態では、仮想負荷分散ツリーは、予測したシステム負荷に基づく。
【0021】
いくつかの実施形態では、1つまたは複数のサーバは、仮想マシーンである。
【0022】
いくつかの実施形態では、本システムは:複数のサーバに通信可能につなげられたサービス要求マネージャも含む。サービス要求マネージャは、仮想負荷分散ツリーを動的にスケーリングするように構成される。
【0023】
いくつかの実施形態では、18サービス要求マネージャは:故障したサーバを回復させるようにさらに構成され、複数のサーバが、故障したサーバを含み、故障したサーバの回復が:故障したサーバの役割を引き受けるために選択されるサーバを選択し、複数のサーバが選択されるサーバを含み、故障したサーバの役割を引き受けるために新しいサーバをインスタンス化し、複数のサーバが新しいサーバを含み、1つまたは複数の回復サーバに故障したサーバの負荷を分散させ、複数のサーバが回復サーバを含む、ことのうちの少なくとも1つを含む。
【0024】
いくつかの実施形態では、本システムは、サービス要求マネージャに通信可能につなげられた共有リソースプールも含む。
【0025】
いくつかの実施形態では、サービス要求マネージャは、負荷に基づいて共有リソースプールと仮想負荷分散ツリーとの間でサーバを動的に割り当てる。
【0026】
様々な実施形態が、添付した図面に図示される。
【図面の簡単な説明】
【0027】
図1】エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110の実施形態を含むロードバランシングシステム100の図である。
図2図1のエネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110の実施形態の図である。
図3図1の中間バックアップ(backup−in−the−middle)フォワーダ120を使用して主バックアップサービスを提供するための方法の実施形態を図示する流れ図である。
図4図1のサーバ120のうちの1つを使用してサービス要求を取り扱うための方法の実施形態を図示する流れ図である。
図5図1のサーバ120のうちの1つの一実施形態のブロックを模式的に図示した図である。
【発明を実施するための形態】
【0028】
理解を容易にするために、同一の参照番号が、実質的に同じもしくは類似の構造および/または実質的に同じもしくは類似の機能を有する要素を明示するために使用されてきている。
【0029】
様々な実施形態は、エネルギー効率およびスケーラビリティを向上させるために負荷全体に適応し、負荷に伴う電力消費量をスケーリングするロードバランシング構成を提供する方法および装置を提供する。エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャは、ツリー構成として構造化された多層サーバの集合を含む。着信するサービス要求の取扱いは、多数のサーバの間で分散される。仮想負荷分散ツリー内の各サーバは、それ自体の負荷に基づいて着信するサービス要求を受け入れる。一旦、受信側サーバ上で所定のローディングに達すると、受信側サーバは、1つまたは複数のそれ自体の子サーバに着信する要求を渡す。
【0030】
都合の良いことに、このエラスティックなロードバランシングアーキテクチャは、システムが変動するシステム負荷を補正することを可能にする。第1に、サーバが所定の負荷に達するまで、サーバはそれ自体の子サーバに着信する要求を渡さないので、子サーバは、エネルギー使用量を削減するために低アクティビティの期間の間スリープ状態にされることがある、または共有リソースプールに再割り当てされることがある。第2に、このエラスティックなロードバランシングアーキテクチャは、不十分なサーバ能力に起因するサービスの拒絶インスタンスを減少させるために、高負荷期間の間には共有リソースプールからサーバへとシステムが子サーバを割り当てることを可能にする。第3に、サーバの間で着信するサービス要求の取扱いを分散させることは、高度化され高価なフロントエンドロードバランサの必要性をなくす。
【0031】
図1は、エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110の実施形態を含むロードバランシングシステム100を図示する。エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110は、多層サーバ120−a−120−g(包括的に、サーバ120)の集合を含む。サーバ120は、1つまたは複数のクライアント150−a−150−c(包括的に、クライアント150)からサービス要求を受信し、応答する。クライアント150からのサービス要求は、ネットワーク接続130を介してネットワーク140をわたってサーバ120に配信される。
【0032】
サーバ120は、要求を取り扱うであろうサーバ120へクライアントサービス要求をルーティングするためのインテリジェンスならびにクライアントサーバ要求に応答するためのリソースおよびロジックを含む。サーバ120は、少なくとも1つの親サーバ(例えば、サーバ120−a)および少なくとも1つの子サーバ(例えば、サーバ120−bと120−cはサーバ120−aの子サーバである)を有する仮想負荷分散ツリーに構築される。アーキテクチャは、任意の数のツリーレベルを有することができ、各ツリーレベルにおいてツリーの次数(すなわち、サーバのファンアウト)を変えることができる。ツリーは、アンバランスであってもよい。例えば、いくつかの親サーバは、2つの子サーバを有することができるが、他のものは、2つより多いことも少ないこともある子サーバを有することができ、および/またはツリーのいくつかのブランチは、より多くのまたは少ないツリーレベルを有することができる。
【0033】
本明細書において規定するように、ルートサーバは、仮想負荷分散ツリーの最上位レベルのところのサーバ(例えば、サーバ120−a)であり、親サーバは、少なくとも1つの子サーバにサービス要求を分配するサーバ(例えば、サーバ120−a、120−bおよび120−c)であり、子サーバは、親サーバからサービス要求を受信するサーバ(例えば、サーバ120−b−120−g)であり、リーフサーバは、いかなる子サーバをも持たないサーバ(例えば、サーバ120−d−120−g)である。
【0034】
サーバが、親サーバおよび子サーバの両方であり得ることが認識されるはずである。例えば、サーバ120−bは、サーバ120−aに対して子サーバであり、サーバ12−dおよび120−eに対して親サーバである。その上、サーバがリーフサーバおよび子サーバの両方であり得ることが認識されるはずである。
【0035】
ネットワーク接続130は:ワイアレス通信(例えば、LTE、GSM(登録商標)、CDMA、ブルートゥース)、フェムトセル通信(例えば、WiFi)、パケットネットワーク通信(例えば、IP)、ブロードバンド通信(例えば、DOCSISおよびDSL)、等、などの1つまたは複数の通信チャネルをわたってサービス要求を検索することまたは応答することをサポートすることができる。1つの接続として描かれているが、ネットワーク接続130は、サーバ120とネットワーク140との間の通信をサポートする任意の数の通信チャネルまたは通信チャネルの組合せであってもよいことが認識されるはずである。
【0036】
ネットワーク140は、サーバ120からクライアント150への通信を容易にするための任意の適切なネットワークであり得る。例えば、ネットワーク140は:(1つまたは複数の)ローカルエリアネットワーク(LAN)、(1つまたは複数の)ワイアレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、等のいずれかの組合せであってもよい。
【0037】
クライアント150は、エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110に宛てられた(1つまたは複数の)サービス要求を開始する(1つまたは複数の)クライアントマシーンの類型または多数のクライアントマシーンであり得る。例えば、クライアントは:サーバ、携帯電話機、タブレット、コンピュータ、携帯情報端末(PDA)、e−リーダ、ネットワークデバイス(例えば、スイッチまたはルータ)、等、であってもよい。
【0038】
いくつかの実施形態では、サーバ120は、初期遅延および省エネルギーポテンシャルなどのパラメータにしたがって仮想負荷分散ツリーに配置される。サーバ120の特定の仮想負荷分散ツリー配置の初期遅延および省エネルギーポテンシャルは、仮想負荷分散ツリーの配置および個々のサーバ能力などの多数の要因に基づいて制御されることがある。一般に、多数のサーバ「n」の仮想負荷分散ツリー設計に関して、レベルの数が増加するにつれて、サービス要求をルーティングすることは、複雑でなくなり、エネルギー効率が向上し、初期遅延が大きくなる。例えば、多数のサーバ「n」に関して、1つのルートノードおよび(n−1)個のリーフノードを有する平坦なツリーは、要求中継に起因する最小の遅延を有するが、最も大きな複雑さおよび最悪のエネルギー効率を有する。正反対に、サーバがチェーン(すなわち、各ツリーレベルが1の次数を有する状態の仮想負荷分散ツリー)として構築される場合には、ツリーは、単純でありかつエネルギー効率がよいが、最大の遅延を有する。サーバ120が異なるリソース能力を有する場合には、個々のサーバ能力は、ツリー設計に影響を及ぼすことがある。特に、サーバが取り扱うことができるサービス要求の能力に基づいて、サーバは、仮想負荷分散ツリー内に配置されることがある。
【0039】
いくつかの実施形態では、仮想負荷分散ツリーは、ルートサーバの下に少なくとも2つのレベルを含む。さらなる実施形態では、仮想負荷分散ツリーのあるレベル内のサーバの次数は、予測した負荷に基づいて設計されることがある。図2を参照すると、予測した負荷の日中の推移の例示的なプロットが示される。分かるように、9:00AMと8:00PMとの間の負荷は、120個までであると予測される一方で、9:00PMと8:00AMとの間の負荷は、30個よりも少ないと予測される。この例では、仮想負荷分散ツリーは、ツリーがルートサーバの下に2つのレベルを有するように配置されてもよい。第1のレベルは、30個よりも少ない負荷を取り扱うように設計されてもよい一方で、第2のレベルは、120個までの負荷を取り扱うように設計されてもよい。これは、仮想負荷分散ツリーの第2のレベル用により高い能力を有する個々のサーバを選択することによっておよび/または仮想負荷分散ツリーの第2のレベル用により高い次数(より多くのサーバ)を使用することによって行われてもよい。
【0040】
いくつかの実施形態では、サーバ120は、同種であってもよく、別の実施形態では、サーバ120は、異種であってもよい。サーバの複雑さを低く保つことによって、特別なハードウェアが必ずしも必要とされなくてもよいことが認識されるはずである。
【0041】
いくつかの実施形態では、サーバ120は、コスト効率の良いシステムを作り出すために完全に低コスト商品サーバから構成されることがある。サーバ120へクライアントサービス要求をルーティングするためのインテリジェンスが複数のサーバ120に分散されるので、中央負荷ディストリビュータとして作用する特別のハードウェアボックスについての必要性がないことが認識されるはずである。
【0042】
いくつかの実施形態では、2つ以上のサーバ120が、LANを介して相互接続されることがある。いくつかの実施形態では、2つ以上のサーバ120が、インターネットなどのWANをわたって接続されることがある。サーバ120の各々が同じ方法でまたは同じタイプの通信チャネルおよび/もしくはプロトコルを介してさえ接続されなければならないことはないことが認識されるはずである。
【0043】
いくつかの実施形態では、2つ以上のサーバ120は、仮想マシーンであってもよい。さらなる実施形態では、仮想マシーンサーバの一部は、同じ物理ハードウェア上に存在することができる。いくつかの実施形態では、1つまたは複数の仮想マシーンサーバは、異なるハードウェアリソースにわたって分散されたリソースを含むことができる。さらなる実施形態では、これらのハードウェアリソースの少なくとも第1の部分は、これらのハードウェアリソースの少なくとも第2の部分とは異なる地理的な場所に設置されることがある。
【0044】
いくつかの実施形態では、仮想負荷分散ツリーは、負荷に基づいて仮想負荷分散ツリーの配置を動的に大きくするもしくは縮小する(すなわち、サーバを追加するおよび削除する)ためにならびに/または修正するためにスケーリング可能であってもよい。負荷決定は、仮想負荷分散ツリーのシステムローディングおよび/または負荷分散ツリー内の1つまたは複数のサーバのローディングに基づくことがある。例えば、負荷決定は、親サーバで始まる仮想負荷分散ツリーのブランチに基づく、または仮想負荷分散ツリー内の1つのサーバのローディングに基づくことがある。
【0045】
さらなる実施形態では、仮想負荷分散ツリーに動的に追加されたおよびこれから削除されたサーバの少なくとも一部は、共有リソースプールに追加されるおよびこれから削除されることがある。共有リソースプールは、多数のアプリケーション/サービスの間で共有されるリソースおよび/またはサーバの集合であってもよい。別々の共有リソースプールマネージャは、従来型のリソース管理方法を使用してリソース/サーバの割り当てを管理することができる。さらなる実施形態では、リソースプールマネージャは、クラウドリソースに関するハイパーバイザ管理要求である。ハイパーバイザは、サーバ120のうちの1つからの要求に応じてリソースの集合(例えば、仮想マシーン)へのアクセスを提供することができる。
【0046】
いくつかの実施形態では、サーバ120は、エネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110サービス要求マネージャ(図示せず)を使用して仮想負荷分散ツリー内に配置される。サービス要求マネージャは、1つもしくは複数のサーバ120(例えば、ルートサーバ120−a)上におよび/またはサーバ120の外部の1つもしくは複数の別々のサーバ上に存在することができる。サービス要求マネージャは、サーバ間の関係を作り出すためにサーバ120へと仮想負荷分散ツリーパラメータを伝達することができる。仮想負荷分散ツリーパラメータは:サーバがいつ要求を取り扱うべきであるかを特定するために役立つパラメータ、サーバがそれ自体の子サーバの1つに要求をいつ送信すべきかを特定するために役立つパラメータ、(例えば、スケーリング可能な仮想負荷分散ツリー内で)新しい子サーバをいつ増やすかを特定するために役立つパラメータ、低エネルギーモードにある子サーバがいつ起動させられるべきかを特定するために役立つパラメータ、等、などの任意の適切なパラメータを含むことができる。
【0047】
いくつかの実施形態では、サービス要求マネージャは、仮想ダイナミック負荷ツリーを動的に管理する。特に、サービス要求マネージャは、本明細書において説明したように仮想負荷分散ツリーのスケーリングを管理するまたはサーバの故障回復を管理することができる。例えば、サーバ120の1つが故障した場合には、その故障したサーバは、ネットワークから除外されてもよい。さらにその上、もう1つのサーバが、故障したサーバの役割を引き受けるように選ばれる/インスタンス化されることがある、または故障したサーバの負荷が、生き残っているサーバに分配されることがある。このようなアーキテクチャは、リンクおよびノードボトルネックを回避することが可能であり、ネットワーク欠陥からの回復が早いことがあることが認識されるはずである。サービス要求マネージャが従来型のネットワーク(例えば、ネットワーク360)をわたってサーバ120と通信することができることも認識されるはずである。
【0048】
図4は、サーバ120の1つを使用してサービス要求を取り扱うための方法の実施形態を図示する流れ図を描く。図1を参照すると、サーバは、親サーバからまたは直接クライアント150の1つからのいずれかでサービス要求を受信する(例えば、方法400のステップ410)。子が要求を取り扱うべきであると受信側サーバが決定する場合には(例えば、方法400のステップ420)、受信側サーバは、要求を取り扱う子を選択し(例えば、方法400のステップ430)、選択した子へ要求を送信し(例えば、方法400のステップ440)、そして任意選択で、将来の要求を容易にするために要求を登録する(例えば、方法400のステップ450)。受信側サーバがそれ自身で要求を取り扱うべきであると決定する場合には(例えば、方法400のステップ420)、受信側サーバは、要求を取り扱い(例えば、方法400のステップ460)、任意選択で、将来の要求を容易にするために要求を登録し(例えば、方法400のステップ470)、そして次に、任意選択で、将来のサービス要求を子サーバが取り扱うように準備するために子サーバを起動させるかどうかを決定する(方法400のステップ480および490)。
【0049】
方法400において、ステップ410は、親サーバからまたは直接クライアント150の1つからのいずれかでサービス要求を受信する受信側サーバを含む。図1を参照すると、クライアント150の1つからのサービス要求は、最初にルートサーバによって受信される。ルートサーバは、次に伝達決定に基づいて仮想負荷分散ツリーを介してサービス要求を伝達する。ルートサーバおよび伝達されたサービス要求を受信する仮想負荷分散ツリー内の各親サーバは、同じく振る舞うことが認識されるはずである。
【0050】
方法400において、ステップ420は、受信側サーバが子サーバにサービス要求を伝達すべきかまたはそれ自体でサービス要求を取り扱うべきかどうかを決定するステップを含む。
【0051】
方法400において、ステップ430は、サービス要求を取り扱う子サーバを選択するステップを含む。子サーバは、従来型の分配ポリシを使用して選択される、前もって登録した選択に基づいて選択される、および/または子サーバの能力にサービス要求の必要条件をマッピングすることに基づいて選択されることがある。
【0052】
方法400において、ステップ440は、選択した子サーバに要求を送信するステップを含む。選択した子サーバに伝達される要求は、受信した要求と同一であってもよいしまたは受信側サーバによって修正されてもよいことが認識されるはずである。
【0053】
方法400は、任意選択で、ステップ450を含む。ステップ450は、将来の要求を容易にするために要求を登録するステップを含む。特に、複数の連続するパケットを含有するサービス要求に関して、選択したサーバのパケットの流れが、登録されてもよい。いくつかのタイプのサービス要求に関して、特定のサーバが、同じサービス要求に属するパケットのすべてを取り扱うことが好まれるまたは要求されることがあることが認識されるはずである。
【0054】
方法400において、ステップ460は、サービス要求を取り扱うステップを含む。例えば、従来型のネットワークロードバランシングは、ウェブなどのTCP/IPに基づくサービス要求、端末サービス、仮想プライベートネットワーキング、およびストリーミングメディアサーバを分散させることができる。
【0055】
方法400は、任意選択で、ステップ470を含む。ステップ470は、ステップ450において上に説明したように将来の要求を容易にするために要求を登録するステップを含む。
【0056】
方法400は、任意選択で、ステップ480および490を含む。ステップ480および490は、将来のサービス要求を子サーバが取り扱うように準備するために子サーバを起動させるかどうかを決定するステップを含む。サーバは、エネルギー消費をゼロにするために電源オフ状態またはある別の深いスリープモードにとどまる必要があることが認識されるはずである。「ウェイクオンLAN(wake−on−LAN)」などの従来型の技術は、サービス要求が選択したサーバに送信されるときに(例えば、ステップ440)子サーバを起動させるために使用されることがある:しかしながら、サーバを起動させることは、多くの場合にある程度の延長期間がかかり、この移行期間中に、サービス要求が配信可能でないことがある。それはそうとして、親サーバは、1つまたは複数の子サーバを先行して起動させるためにステップ480を含むことができる。特に、サーバは、親サーバの負荷および/または将来の負荷の過去の事実に基づく予測(例えば、図2および付帯する説明)に基づいて子サーバを先行して起動させることを決定することができる。都合の良いことに、1つまたは複数の子サーバを先行して起動させることは、親サーバがオーバーフロー状態を回避することを助けることができる。
【0057】
方法400のいくつかの実施形態では、ステップ420は、受信側サーバが、それ自体の能力に達することおよびさらなる要求を今後取り扱うことができないことを決定するステップを含む。別の実施形態では、ステップ420は、受信側サーバがある所定の負荷または負荷の割合に達したことを決定するステップを含む。
【0058】
方法400のいくつかの実施形態では、ステップ430は:ランダム、ラウンドロビン、または負荷に基づく分配、などの分配ポリシを使用するステップを含む。方法400のいくつかの実施形態では、ステップ430は、サーバが低エネルギー状態にとどまるようなより多くの機会を作り出すために、パフォーマンス制約を満足させることができる負荷が最も高い子を選択するステップを含む。方法400のいくつかの実施形態では、ステップ430は、各子の負荷能力に比例して子サーバを選択するステップを含む。
【0059】
方法400のいくつかの実施形態では、ステップ430は、子サーバの能力のマッピングおよびサービス要求の必要条件に基づいて子サーバを選択するステップを含む。例えば、親サーバの第1の子サーバは、第2の子サーバよりももっと効率的にストリーミングメディア要求を取り扱うように構成されることがある。
【0060】
方法400のいくつかの実施形態では、ステップ430は、サービス要求をインスタンス化するクライアント(例えば、図1のクライアント150)に基づいて子サーバを選択するステップを含む。例えば、いくつかの構成では、1つまたは複数のサーバ(例えば、図1のサーバ120)は、1つまたは複数のクライアントに専用であってもよい。
【0061】
方法400のいくつかの実施形態では、ステップ450および/または470は、引き続くパケットが選択したサーバに直接配信されてもよいようにルートサーバとともにパケットの流れを登録するステップを含む。都合の良いことに、パケットの流れを登録することによって、遅延および選択エラーが低くされることがある。
【0062】
方法400のいくつかの応答実施形態では、ステップ460は、要求側クライアント(例えば、図1のクライアント150−a)に直接返信するステップを含む。
【0063】
これらの応答実施形態の第1の実施形態では、宛先アドレスは、応答では修正される。都合の良いことに、宛先アドレスを応答側サーバのアドレスに修正することによって、要求側クライアントは、仮想負荷分散ツリーパスにしたがわずに応答側サーバに直接将来のパケットを宛てることが可能である。
【0064】
これらの応答実施形態の第2の実施形態では、サービス要求の宛先アドレスは、要求側クライアントへの応答では修正されない。都合の良いことに、未修正の宛先アドレスを用いて応答することによって、将来のサービス要求は、依然としてルートサーバに宛てられるであろう。さらなる実施形態では、サーバ120は各々、固有のプライマリアドレスおよび仮想負荷分散ツリー内のサーバ120の間で共有されるセカンダリ仮想アドレスを保有する。
【0065】
方法400のいくつかの実施形態では、本方法は、親サーバをスリープモードに変えるように決定するステップをさらに含むことができる。さらなる実施形態では、親サーバは、それ自体のローディングおよびそのサーバの親のローディングに基づいてスリープモードに入るように決定することができる。特に、サーバがスケジュールされたジョブ(例えば、サービス要求タスク)を持たず、そのサーバの親サーバがしきい値レベルよりも低い負荷を有するときには、サーバは、エネルギー効率の良いスリープモードに入る。親サーバおよび子サーバは、従来型のネットワーク(例えば、図3のネットワーク360)をわたって従来型の通信プロトコルおよび接続を介してローディングパラメータを通信することができることが認識されるはずである。
【0066】
ステップ450および490の後で、方法400は、ステップ410に戻って、サービス要求を受信するステップおよび処理するステップのプロセスを繰り返す。
【0067】
特定のシーケンスで主に描き、説明したが、方法400に示したステップは、任意の適切なシーケンスで実行されてもよいことが認識されるはずである。その上、1つのボックスによって特定したステップは、シーケンス内の1つよりも多くの場所でも実行されてもよい。
【0068】
例えば、任意選択のステップ480および490は、プロセス内の任意の場所で実行されてもよい。その上、これらは、サービス要求が受信される前にプロセスの外部で実行されることさえある。
【0069】
図1のエネルギー効率の良い分散型でエラスティックなロードバランシングアーキテクチャ110のいくつかの実施形態では、サーバ120のうちの1つまたは複数は、方法400のステップを実行するサービス要求ハンドラを含む。さらなる実施形態では、サーバ120の各々は、サービス要求ハンドラを含む。サービス要求ハンドラは、サーバ120のうちの1つもしくは複数(例えば、サーバ120の各々)におよび/またはサーバ120の外部の1つもしくは複数の別々のサーバに存在することができることが認識されるはずである。
【0070】
様々な上記の方法のステップがプログラムされたコンピュータによって実行され得ることが認識されるはずである。ここでは、いくつかの実施形態はまた、機械またはコンピュータ可読であり、命令の機械実行可能なプログラムまたはコンピュータ実行可能なプログラムをエンコードするプログラムストレージデバイス、例えば、データストレージ媒体をカバーするものとし、ここでは、前記命令は、前記上記の方法の一部またはすべてのステップを実行する。プログラムストレージデバイスは、例えば、ディジタルメモリ、磁気ディスクおよび磁気テープなどの磁気ストレージ媒体、ハードドライブ、または光学式可読データストレージ媒体であってもよい。実施形態はまた、上記の方法の前記ステップを実行するようにプログラムされたコンピュータをカバーするものとする。
【0071】
図5は、図1のサーバ120のうちの1つの一実施形態を模式的に図示する。サーバ120は、例えば、方法400使用して本明細書において説明した機能を実行することができる。サーバ120は、プロセッサ510、データストレージ511、およびI/Oインターフェース530を含む。
【0072】
プロセッサ510は、サーバ120の動作を制御する。プロセッサ510は、データストレージ511と協働する。
【0073】
データストレージ511は、ローディングパラメータを格納することができ(例えば、図4のステップ420、430、450、470および480)、受信したサービス要求および送信したサービス要求ならびにサーバ間通信をバッファすることができる(例えば、図4のステップ410、440、450、460および470)。データストレージ511は、プロセッサ510によって実行可能プログラム520も格納する。
【0074】
プロセッサ実行可能プログラム510は、I/Oインターフェースプログラム521、サービス要求ハンドラプログラム523および/またはサービス要求マネージャプログラム525を含むことができる。プロセッサ510は、プロセッサ実行可能プログラム520と協働して、図1図4に記述した機能を実装するおよび/または方法400のステップを実行する。
【0075】
I/Oインターフェース530は、任意の適切な数の(1つまたは複数の)セッション(例えば、任意の適切な数のIPフロー)をサポートする任意の適切な数のチャネルをサポートするために構成され、セッションは、特定のサーバ120と、1つまたは複数のクライアント(例えば、図1のクライアント150−a−150−c)およびサーバのうちの1つまたは複数(例えば、図1のサーバ120)との間に向けられることがある。I/Oインターフェース530は、任意の適切な(1つまたは複数の)タイプの通信パスおよび通信プロトコルをサポートすることができる。例えば、通信パスは、ワイアレス通信(例えば、GSMおよびCDMA)、有線通信、パケットネットワーク通信(例えば、IP)、ブロードバンド通信(例えば、DSL)、等、ならびにこれらの様々な組合せを含むことができる。
【0076】
いくつかの実施形態では、サーバ120は、特別に設計されたネットワークインターフェースカード(NIC)である。さらなる実施形態では、NICは、サービス要求取扱いを提供する。都合の良いことに、NICが着信するサービス要求を取り扱うので、サーバホストは、それ自体のコア機能に集中することが可能であり、サービスを提供するためにそれ自体のリソースを専用にすることが可能である。サーバホストがNICへ負荷の指示および他の適切なパラメータを提供することができることが認識されるはずである。
【0077】
いくつかの実施形態では、ホストサーバは、ホストがビジーであり、これ以上新しい要求を受け入れられないことを指示するためにNIC上にビジービット(busy bit)を設定することができる。この実施形態では、NICは、仮想負荷分散ツリーに基づいて、新しいサービス要求を適切なサーバに自動的に転送することができる。都合の良いことに、このNICハードウェア加速は、サービス遅延をさらに減少させることができる。
【0078】
プロセッサ実行可能プログラム520がプロセッサ510上に実装されると、プログラムコードセグメントは、特定の論理回路と類似したように動作する固有のデバイスを提供するためにプロセッサと組み合わさる。
【0079】
プログラムおよび論理がデータストレージ内に格納され、メモリがプロセッサに通信可能に接続される実施形態に関して本明細書において描き、説明したが、このような情報が、任意の適切な配置のデバイスに通信可能につなげられた任意の適切な配置のメモリ、ストレージもしくはデータベースを使用して、(1つもしくは複数の)メモリ、(1つもしくは複数の)ストレージおよび/もしくは(1つもしくは複数の)内部もしくは外部データベースの任意の適切な組合せ内に情報を格納して、または任意の適切な数のアクセス可能な外部メモリ、ストレージもしくはデータベースを使用して、任意の他の適切な方式で(例えば、任意の適切な数のメモリ、ストレージもしくはデータベースを使用して)格納されてもよいことが認識されるはずである。それはそうとして、本明細書において呼ばれるデータストレージという用語は、(1つまたは複数の)メモリ、(1つまたは複数の)ストレージ、および(1つまたは複数の)データベースのすべての適切な組合せを含むことを意味する。
【0080】
説明および図面は、単に本発明の原理を図示する。本明細書において明示的に記述されていないまたは示されていないが、本発明の原理を具体化し、かつ本発明の精神および範囲内に含まれる様々な配置を、当業者なら考案できるであろうことが、したがって認識されるであろう。さらにその上、本明細書において引用したすべての例は、本技術を推し進めるために(1人または複数の)発明者によって提案された本発明の原理および概念を理解する際に読者を助けるために、明確に教育的な目的のためだけであるように原理的に意図され、このような具体的に引用した例および条件に限定されないとして解釈されるべきである。その上、本発明の原理、態様および実施形態ならびにこれらの具体的な例を説明する本明細書中のすべての記述は、これらの等価物を含むものとする。
【0081】
「プロセッサ」として名付けた任意の機能ブロックを含む図に示した様々な要素の機能は、専用のハードウェアならびに適切なソフトウェアと協働してソフトウェアを実行することが可能なハードウェアの使用を通して提供されてもよい。プロセッサによって与えられるときには、機能は、1つの専用プロセッサによって、1つの共有プロセッサによって、またはプロセッサのいくつかが共有されてもよい複数の個別のプロセッサによって与えられてもよい。その上、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行することが可能なハードウェアを限定的に呼ぶように解釈されるべきではなく、限定ではなく、ディジタル信号プロセッサ(DSP)ハードウェア、ネットワークプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ソフトウェアを記憶するための読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、および不揮発性ストレージを暗に含むことができる。他のハードウェア、従来型および/またはカスタムも、含まれてもよい。同様に、図に示したいずれかのスイッチは、単に概念的なものである。これらの機能は、プログラムロジックの動作を介して、専用ロジックを介して、プログラム制御および専用ロジックの相互作用を介して、または手作業さえで実行されることがあり、特定の技術が、コンテキストからより具体的に理解されるように実施者によって選択可能である。
【0082】
本明細書内のいずれかのブロック図は、本発明の原理を具体化する例示的な回路の概念的な図を表すことが認識されるはずである。同様に、いずれかのフローチャート、フローダイアグラム、状態遷移図、疑似コード、等が、コンピュータ可読媒体内に実質的に表現されることがあり、コンピュータまたはプロセッサが明示的に示されているか否かに拘わらず、コンピュータまたはプロセッサによってそのように実行されることがあり得る様々なプロセッサを表すことが認識されるはずである。
図1
図2
図3
図4
図5