近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。
分散処理を行う際には、処理対象(管理対象)のデータを、クラスタを構成する各サーバに振り分けておく必要がある。このとき、クラスタ全体での処理能力を高めるためには、各サーバが担当するデータ数(データ量)は平均化されていることが望ましい。
代表的なデータの振り分け手法として、各データのkey(キー)をハッシュ関数にかけた値(以下、「hash(key)」と称する。)をサーバ数Nで割った余り、すなわち「hash(key) mod N」を番号として持つサーバにデータを振り分ける手法がある。この場合、各サーバに事前に「0」から「N−1」までの番号を割り当てていることが前提となる。このような振り分け手法を用いた場合、サーバを追加すると、Nの値が変化して、多くのデータについて、担当するサーバが変更になるため、担当するデータの再配置が必要になる。
そこで、サーバの追加に伴い担当するサーバが変更になるデータ数を約1/Nに抑える方法として、コンシステント・ハッシュ法[Consistent Hashing](非特許文献1参照)を用いた振り分け手法がある。
このコンシステント・ハッシュ法を用いたデータ振り分け手法では、サーバとデータの双方にID(IDentifier)を割り当てる。これにより、サーバとデータとがID空間(コンシステント・ハッシュ空間)上に割り当てられる。そして、データのIDからID空間を時計回りに辿った場合に最初に出合ったサーバをそのデータの担当とする。
また、多量のデータの管理をクラスタ構成の分散処理システムで行う場合、あるサーバに障害が発生した場合でも他のサーバで処理を継続できるように、データの複製を保持することでデータ冗長化を行う方法がある。これは、コンシステント・ハッシュ法によるデータ管理手法を用いた分散処理システムにおいても同様である。
図7に示すように、コンシステント・ハッシュ法では、サーバ1〜4と、黒丸で表示したデータA〜Dとの双方にIDを割り当て、サーバ1〜4とデータA〜DとをID空間上に割り当てる。このデータA〜DのIDからID空間を時計回りに辿り最初に出合ったサーバをそのデータの担当として決定する。そして、ある規則に則り、ここでは、担当するサーバの更に時計回りの右隣(時計回りの一つ順方向)のサーバに複製データを担当させる。
例えば、図7においては、データAはID空間上を時計回りに辿り最初に出合ったサーバ1が担当となり、この担当サーバ1の更に時計回りの右隣のサーバ2に複製データを担当させる。このように原本データと複製データを担当するサーバを決定することで、サーバに離脱があった場合でも、その複製データを所持するサーバが新しくデータを担当するサーバとなることで対応可能な利点がある。なお、複製データを複数保持する場合には、更に右隣のサーバ3に2個目の複製データを担当させることが可能である。
しかし、図7に示した手法では、激甚災害等が発生し、複数のサーバが同時にダウン(故障)した場合、原本データおよび複製データの両方を消失してしまう可能性がある。この場合、復旧には、別途のバックアップデータ等による処理が必要になる。この処理は、通常、ディスクからの吸出し作業になるため低速であり、サービスの一時停止等の弊害は免れない。また、バックアップデータは原本データと一致しているとは限らないため、復旧によってもデータが欠損するおそれがある。
そこで、激甚災害等で大規模故障が発生した場合でも、データを消失することなく処理を継続できるコンシステント・ハッシュ法を用いた分散処理システムとして、例えば特許文献1に記載の技術がある。この分散処理システムを、図8を参照して説明する。
図8に示す分散処理システムは、自地域の激甚災害が他地域に及ばないように点在するK種類(K=3以上であり、本例ではK=5)の地域であるデータセンタエリアに、物理的に配置される複数のサーバ(物理サーバともいう)を配置する。ここでは地域毎に△,○,□,■,●で示す4台の物理サーバが配置されるとする。この際、ID空間では、同じ地域のサーバが隣り合わないように分散配置し、上述のコンシステント・ハッシュ法で説明したように、原本データと複製データを担当するサーバを決定する。これによって自地域に激甚災害が発生して物理サーバ(例えば△)が故障しても、故障サーバの両隣りは他の地域のサーバ(○と●)なので、故障サーバの原本データを他のサーバ●で複製データとして守ることができる。
この分散処理システムでは、図8の(1)に示すように、新たな物理サーバ□を増設してID空間に挿入する場合、増設サーバ□の挿入位置は、両隣が他の地域のサーバ(△と●)となるように決定する。このように増設サーバ□をID空間上に挿入配置することで、ID空間上で同じ地域のサーバが隣り合わないようになっている。
しかし、このように物理サーバのみをID空間上に配置した構成では、例えば、サーバ△の原本データの複製データは時計回りの右隣のサーバ●が担当するので、サーバ△が故障すると、故障サーバ△のデータはサーバ●が引受けることになる。この際、各サーバがデータ量「8」のデータ(データ「8」という)を記憶しているとすると、故障サーバ△のデータ「8」を右隣のサーバ●が引受ける場合、引受サーバ●は、自サーバのデータ「8」と故障サーバ△のデータ「8」との双方(「8」+「8」=「16」)を記憶しなければならない。
このため、サーバ故障時に引受サーバ●は、自データ「8」の2倍の記憶容量等の負荷(後述で説明)を持ってしまう欠点がある。この欠点はID空間上の全サーバについて同様である。但し、本明細書において、「負荷」とは、サーバがデータを記憶する際の負荷である記憶負荷と、サーバのデータ処理負荷との双方を含む概念である。
そこで、非特許文献2のように、地域毎に配置された1台の物理サーバを、複数の仮想サーバに分割し、複数の仮想サーバをID空間上に分散配置する構成がある。この分散処理システムの構成例を図9に示す。図9に示す分散処理システムにおいては、K種類の地域(データセンタエリア)は図8と同様である。異なる点は、地域毎に1台の物理サーバP1〜P5が配置されており、1台の物理サーバP1〜P5が4つの仮想サーバ△,○,□,■,●に分割されて、ID空間上に分散配置されていることにある。
このような分散配置の構成では、例えば、1台の物理サーバP1がデータ「8」を保持する場合、これを4分割した内の1台の仮想サーバ△の負荷は、「8」÷4=「2」となる。この物理サーバP1が壊れると、各仮想サーバ△のデータ「2」を時計回り右隣の仮想サーバ●,□,■,○が引受ける。
各引受サーバ●,□,■,○は、各々1台しか、故障サーバ△の時計回り右隣に配置されていない。このため、4台の仮想サーバ●であれば、1台の引受仮想サーバ●の負荷は自サーバの「2」と引受データ「2」とで、合計「4」となり、他の3台の仮想サーバ●は「2」のままである。従って、各々の4台の仮想サーバ●,□,■,○を構成する物理サーバP2〜P5は、各々の負荷が、「4」+「6」=「10」となる。
このように、故障した物理サーバP1のデータ「8」が、各物理サーバP2〜P5に分散して引き受けられるので、各引受先の物理サーバP2〜P5の記憶負荷は、各々「8」から「10」に増えるだけである。これは、前述の図8に示した構成においてサーバ故障時の引受サーバ(物理サーバ)●の記憶負荷が「16」となることと比べると、小さくなっている。つまり、図9の仮想サーバをID空間上に配置する構成では、故障した物理サーバP1の負荷が、仮想サーバを介して、各物理サーバP2〜P5に均等に分散されるので、各引受先の物理サーバの負荷が、図8の物理サーバのみの構成よりも、小さくて済むという利点がある。
しかし、図9を参照して説明したように、故障サーバP1の負荷を、仮想サーバを介して、各物理サーバP2〜P5に均等に分散することは、次に説明するように確率的に発生することであり、均等に分散することを保証するものではない。
例えば、図9の構成では、4台の仮想サーバ△の時計回り右隣に仮想サーバ●が配置されているのは1つなので、仮想サーバ●が配置される確率は25%である。これは、他の仮想サーバ□,■,○についても同様である。しかし、このように4台の仮想サーバ△の時計回り右隣に、他の仮想サーバ●,□,■,○が均等に分散配置されることは何も規定が無い。このため、4台の仮想サーバ△の時計回り右隣に、全て仮想サーバ●が配置されるといった確率100%の場合もある。この場合、仮想サーバ△を構成する物理サーバP1が故障しても、故障した全ての仮想サーバ△のデータ「2」を、全て仮想サーバ●が引受ける(つまり、物理サーバP5が全て引受ける)ので、故障サーバP1の負荷は複数の物理サーバP2〜P5に分散されない。
このように、故障した物理サーバP1の負荷を、全て物理サーバP5が引受ける場合、物理サーバP5のデータ記憶容量は、自サーバP5のデータと、故障サーバP1のデータとを合計した2倍の容量が必要である。この場合、物理サーバの諸元(後述する)を、高くしなければならないので、物理サーバのコストが高くなってしまう。諸元とは、物理サーバのデータ記憶容量や、物理サーバがデータ処理可能な処理量等を表す性能(スペック)である。
しかし、実際には、各地域全体では物理サーバの台数は多いので、これを仮想サーバに分割してID空間上に配置した場合、各仮想サーバが極力分散されて配置される確率は高くなる。そこで、物理サーバの諸元は、上記のデータ記憶容量が2倍のような高いものではなく、故障サーバの負荷を引き受けることが可能なレベルに低く抑えてある。
ここで、図9の構成において、物理サーバ故障時に仮想サーバをID空間上に再配置した際に、故障サーバの負荷を引受サーバが最大で何台分引受けると、引受サーバの諸元を超過してしまうかを、図10に示すグラフを参照して説明する。図10は、故障サーバの負荷を引受ける物理サーバが、最大限に引受ける仮想サーバの台数(この台数を、「最大引受仮想サーバ数」という)を、確率で表した確率分布のグラフである。横軸が最大引受仮想サーバ数、縦軸が確率0%〜80%である。以降の説明では、故障サーバの負荷を引受サーバが引受けることを、負荷を省略して、故障サーバを引受サーバが引受けると表現する。
また、図10のグラフは、次の前提条件のもとに作成されている。即ち、前提条件として、図9と同構成の分散処理システムにおいて、物理サーバが全地域合わせて20台あり、この各々が、10台の仮想サーバに分割(20×10=200台)されている。この場合に、200台の仮想サーバがID空間上に分散配置されている際の最大引受仮想サーバ数の確率分布を表すグラフである。
上記の前提条件の構成において、1台の物理サーバが故障した場合、10台の仮想サーバが無くなり、この10台の仮想サーバ(故障仮想サーバともいう)が時計回り右隣の仮想サーバに引受けられる。言い換えれば、故障した以外の19台の物理サーバが、10台の故障仮想サーバを引受ける。ここで、故障仮想サーバの時計回り右隣に、各地域の仮想サーバが均等に分散しているとする。この場合、10台の故障仮想サーバを、19台の物理サーバの各々が引受ける台数は、10/19=0.526なので、最大引受仮想サーバ数はたかだか「1」となる。このことから、各物理サーバは、1台までの仮想サーバを引受けられるように、諸元が定められている。
しかし、故障仮想サーバの時計回り右隣に、各地域の仮想サーバが均等に分散していない場合、最大引受仮想サーバ数が「1」となる確率は、図10に示すように8%位である。最大引受仮想サーバ数が「2」となる確率は70%強、「3」となる確率は20%、「4」となる確率は2%位である。従って、最大引受仮想サーバ数が「2」以上となる確率は92%位となる。
ここで、各物理サーバは、上述したように諸元が定めてあるので、物理サーバが故障しても、引受先の物理サーバは、1台までしか故障仮想サーバを引受けることができない。2台以上では諸元を超えてしまい処理不能となる。しかし、上述したように、故障仮想サーバを最大2台以上引受ける確率は92%位ある。つまり、92%位の確率で諸元を超過する物理サーバが発生してしまう。
そこで、諸元を超過する物理サーバが発生する確率(発生確率ともいう)を20%未満等のように、より低く抑制するためには、物理サーバを上記前提条件よりも、より多く配置して、より多くの仮想サーバが極力均等に分散されるようにする必要がある。しかし、諸元を超過する物理サーバの発生確率が、より低く抑制されるように、物理サーバを多く配置するためには、現状では、システムの運用者が経験や勘で行うしかないという問題がある。
本発明は、このような事情に鑑みてなされたものであり、物理サーバ故障時に仮想サーバをID空間上に再配置する際に、諸元を超過する物理サーバの発生確率を抑制することが可能なように、物理サーバの配置台数を自動で定めることができるサーバリソース管理装置を提供することを目的とする。
上記課題を解決するための手段として、請求項1に係る発明は、協調してデータ処理を行うクラスタを構成する複数の物理サーバの各々を、複数の仮想サーバに分割してコンシステント・ハッシュ法に基づくID空間上に分散配置し、端末機からのデータ処理要求に応じて、前記ID空間上の仮想サーバを介して前記物理サーバでデータ処理が行われるように管理するサーバリソース管理装置であって、前記物理サーバの故障時に、当該故障物理サーバを分割した仮想サーバのデータを正常な前記物理サーバが引受けた際に、当該正常な複数の物理サーバの中から、物理サーバの諸元を超過する物理サーバが発生する確率に基づき、所定の確率が閾値として予め定められており、前記物理サーバの故障時に、前記諸元を超過する物理サーバが発生する確率が前記閾値未満となるように、前記仮想サーバを前記ID空間上に分散配置するために必要な物理サーバ数を求めるサーバ組込判定部を備えることを特徴とするサーバリソース管理装置である。
この構成によれば、物理サーバの故障時に、諸元を超過する物理サーバが発生する確率が閾値未満(例えば20%)となるように、仮想サーバをID空間上に分散配置するために必要な物理サーバ数を求めることができるので、クラスタに配置する物理サーバの配置台数を自動で定めることができる。従来は、諸元を超過する物理サーバの発生確率が20%となるように、分散処理システムの運用者が経験や勘で行うしかなかった。
請求項2に係る発明は、前記クラスタを構成する複数の物理サーバは、自地域の災害が他地域に及ばないように点在する複数の地域に分散して配置されることを特徴とする請求項1に記載のサーバリソース管理装置である。
この構成によれば、物理サーバを、自地域の災害が他地域に及ばないように点在する複数の地域に分散して配置するので、何れかの地域に激甚災害が発生して物理サーバが故障しても、災害未発生の地域の物理サーバで故障物理サーバをバックアップすることができる。
請求項3に係る発明は、前記サーバ組込判定部は、前記物理サーバの最大引受仮想サーバ数をmとし、前記諸元を超過する物理サーバが発生する確率をPmとして算出する際に、
前記複数の地域数をa、
前記物理サーバの仮想化サーバ数をb、
前記物理サーバのデータ処理負荷量とデータ記憶負荷量とを合わせた総データ量をh、
前記物理サーバの諸元をg、
前記クラスタ内の現在の物理サーバの総台数をe、
下式(1)から算出され、前記地域の障害時に利用可能な物理サーバ数をr、
下式(2)から算出され、前記地域の障害時に使用不能となる仮想サーバ数をn
とした各パラメータa,b,h,g,e,r,nを、下式(3)に当て嵌めて算出する
ことを特徴とする請求項2に記載のサーバリソース管理装置である。
但し、式(3)は、下式(4)を条件式として定められ、下式(4)において、(aS0,aS1,…,aSm)は、前記物理サーバの1台当たりの仮想サーバの引受数が、(m,m−1,…,0)にそれぞれ対応する物理サーバ数を表し、下式(4)の条件を満たす全ての組合せとなっており、s=0…tとしている。
この構成によれば、諸元を超過する物理サーバが発生する確率を、数式(3)によって正確に求めることができる。従って、物理サーバの故障時に、諸元を超過する物理サーバが発生する確率が閾値未満(例えば20%)となるように、仮想サーバを適正にID空間上に分散配置することができる。
請求項4に係る発明は、前記各パラメータa,b,h,g,e,r,nを記憶する記憶部と、前記各パラメータa,b,h,g,e,r,nを前記記憶部に設定する入力を行う入力部とを更に備え、前記サーバ組込判定部は、前記記憶部から各パラメータa,b,h,g,e,r,nを読み出して前記確率Pmを算出することを特徴とする請求項3に記載のサーバリソース管理装置である。
この構成によれば、分散処理システムの運用者等の人が、各パラメータa,b,h,g,e,r,nを、分散処理システムの状況に合わせて適正に設定することができる。
請求項5に係る発明は、前記サーバ組込判定部は、前記式(3)で示される確率Pmにおいて、mを1からnまで一定数ずつ繰り上げた際に、前記確率Pmが前記閾値未満となった際のmをzとし、このzを下式(5)に当て嵌めて、前記必要な物理サーバ数elを算出することを特徴とする請求項3又は4に記載のサーバリソース管理装置である。
この構成によれば、サーバ組込判定部が、諸元を超過する物理サーバが発生する確率を、数式(3)を用いて正確に求めた後に、その確率が閾値未満となるように、仮想サーバをID空間上に分散配置するために必要な物理サーバ数を、数式(5)から正確に求めることができる。
請求項6に係る発明は、前記必要な物理サーバ数と、前記クラスタを構成する現存の物理サーバの数である現物理サーバ数とを比較し、当該現物理サーバ数が、前記必要な物理サーバ数に対して不足している場合に、当該不足台数の物理サーバを、前記クラスタに増設して配置するサーバ組込処理部を更に備えることを特徴とする請求項1又は5に記載のサーバリソース管理装置である。
この構成によれば、サーバ組込判定部で求められた必要な物理サーバ数から、現在、クラスタに配置されている物理サーバの不足台数を検出し、この不足台数の物理サーバを増設する処理を自動で行うことができる。
請求項7に係る発明は、前記サーバ組込処理部により前記クラスタに増設後の物理サーバが各々分割され、仮想サーバとして前記ID空間上に配置される際に、互いに隣合う仮想サーバが、異なる地域の物理サーバに属する配置となるように処理する処理部
を更に備えることを特徴とする請求項6に記載のサーバリソース管理装置である。
この構成によれば、ID空間上の隣同士の仮想サーバの属する地域が異なるので、一方の地域に障害が発生して物理サーバがダウンしても、このダウンした物理サーバに属する仮想サーバのデータを、他方の仮想サーバで複製データとして引受けることができる。従って、ダウンした仮想サーバのデータを、消失することなく複製データとして保護することができる。
本発明によれば、物理サーバ故障時に仮想サーバをID空間上に再配置する際に、諸元を超過する物理サーバの発生確率を抑制することが可能なように、物理サーバの配置台数を自動で定めることができるサーバリソース管理装置を提供することができる。
以下、本発明の実施形態を、図面を参照して説明する。
<実施形態の構成>
図1は、本発明の実施形態に係るサーバリソース管理装置を備える分散処理システムの構成を示すブロック図である。
図1に示す分散処理システム10は、負荷分散装置20と、サーバリソース管理装置(単に、管理装置とも称す)40と、クラスタ60を構成する複数の物理サーバ70を備えて構成され、インターネット等のネットワーク100を介して複数のクライアントマシン200と接続されている。
但し、物理サーバ70は、前述で図9を参照して説明した非特許文献2の方式と同様に、1つの物理サーバ70が複数の仮想サーバ70aに分割されて、ID空間上に分散配置される。この様態は、図9に示した構成と同様であるが、本実施形態では、各物理サーバP1〜P5が複数台ずつ配置され、各仮想サーバ△,○,□,■,●が、各物理サーバP1〜P5の台数よりも多い複数台ずつ配置される構成となる。なお、クラスタ60の各物理サーバ70は、図9に示したと同様に、自地域の激甚災害(大規模災害)が他地域に及ばないように点在するK種類(K=3以上であり、本例ではK=5)の地域のデータセンタエリアに分散して配置されているものとする。
図1の全体構成の基本的な動作について説明すると、クライアントマシン200からのデータ処理リクエスト(データ処理要求)を、ネットワーク100経由で負荷分散装置20が受け取る。負荷分散装置20は、データのID空間上のサーバ割当表(ID空間管理情報22a)に基づいて、そのリクエストを、データ処理を行う複数の仮想サーバ70aの何れかに振り分ける。振り分けられた仮想サーバ70aを構成する物理サーバ70は、そのリクエストの処理を行う。負荷分散装置20に記憶されるID空間管理情報22aは、管理装置40で管理されるID空間管理情報42aが基となっている。負荷分散装置20は、ID空間管理情報22aを用いて物理サーバ70を管理している。
負荷分散装置20は、処理部21と、記憶部22と、通信部23とを備えて構成されている。
記憶部22は、情報を記憶する手段であり、RAM(Random Access Memory)やROM(Read Only Memory)などのメモリ、HDD(Hard Disk Drive)などによって構成される。記憶部22には、管理装置40から受信した、データのID空間上のサーバ割当表としてのID空間管理情報42aが、ID空間管理情報22aとして格納されている。
記憶部22には、処理部21の動作プログラムなども格納されている(図示せず)。
なお、負荷分散装置20は、他に、負荷分散装置20の運用者が情報を入力する入力部や、情報を表示する表示部などを備えていてもよい。
管理装置40は、処理部41と、記憶部42と、サーバ組込判定部43と、サーバ組込処理部44と、入力部45と、表示部46と、通信部47とを備えて構成されている。
管理装置40は、仮想サーバの追加削除および物理サーバの割り当てを決定するコンピュータ装置である。なお、本実施形態のコンシステント・ハッシュ法では、前述した非特許文献2の方式と同様に、1つの物理サーバ70が複数の仮想サーバ70aに分割されて、ID空間上に分散配置される。つまり、管理対象の複数のデータ、及び、データを管理してクラスタ60を構成する各物理サーバ70の複数の仮想サーバ70aがID空間上に割り振られる。
ID空間上においては、各仮想サーバ70aは、ID空間において自サーバから時計回り(所定方向回り)に次の仮想サーバ70aまでの間に位置するデータを管理(担当)する。この管理されるデータは、当該管理する仮想サーバ70aが故障(ダウンともいう)した際に、次の時計回りに位置する仮想サーバ70aに複製データとして引受けられて記憶されるようになっている。
処理部41は、記憶部42に格納された情報に基づいて演算処理を行うと共に、記憶部42、サーバ組込判定部43、サーバ組込処理部44、入力部45、表示部46、通信部47の各処理の連携処理を行う手段であり、例えばCPU(Central Processing Unit)によって構成される。
記憶部42は、情報を記憶する手段であり、RAMやROMなどのメモリ、HDDなどによって構成される。記憶部42には、ID空間管理情報42a、地域名情報42b、サーバ管理情報42c、地域数42d、冗長数42e、パラメータ情報42fが格納されている。なお、記憶部42には、処理部41の動作プログラムおよび後述する閾値なども格納されている(図示せず)。
ID空間管理情報42aは、管理対象のデータについて所定のハッシュ値変換を行って算出されたIDを用いて、そのデータを担当する仮想サーバ70a及び当該仮想サーバ70aを構成する物理サーバ70を管理する情報である。
ID空間管理情報42aは、図2に示すように、ID空間管理情報42aは、ID、仮想サーバの各カラムから構成され、IDの値の大きさでソートされている。IDは、ID空間におけるIDであり、仮想サーバ70aが管理を担当するデータの領域を特定するために格納される。
図2に示すサーバは、クラスタ60を構成する物理サーバ70を分割した仮想サーバ70aの識別子を表す。例えば、第1行目のIDの値が「0056」の場合は、識別子が「0000」〜「0056」の領域に属するデータを「仮想サーバa」が担当することを示す。また、第2行目のIDの値が「0172」の場合は、1つ前の行のIDの値に1をプラスした「0057」〜「0172」の識別子に属するデータを「仮想サーバg」が担当することを示す。
図3に示すように、地域名情報42bは、地域IDと、その地域IDに対応する地域名との対応付けを管理する情報である。つまり、地域名情報42bは、地域ID、地域名の各カラムから構成される。地域IDは、所定の複数の物理的な地域の識別子を表す。地域名は、その行の地域IDに対応する地域の名称を表す。
図4に示すように、サーバ管理情報42cは、地域(地域ID)ごとに、当該地域に物理的に存在する全ての物理サーバ70との対応付けを管理する情報である。つまり、サーバ管理情報42cは、サーバ管理情報42cは、地域ID、サーバの各カラムから構成される。地域IDは、所定の複数の物理的な地域の識別子を表す。図4に示すサーバは、対応する地域IDの地域に物理的に存在する物理サーバ70の識別子を表す。なお、この物理サーバ70には、まだクラスタ60として使用されていないものも含まれている。
図1に示す地域数42dは、管理装置40の運用者によって予め設定された地域数(K)の情報である。
冗長数42eは、運用者によって予め設定された冗長数(M)の情報である。冗長数(M)は、原本データと複製データの合計数である。
パラメータ情報42fは、後述の各パラメータが集まった情報である。
入力部45は、管理装置40の運用者が情報を入力する手段であり、例えば、キーボードやマウスによって実現される。
表示部46は、情報を表示する手段であり、例えば、LCD(Liquid Crystal Display)によって実現される。
通信部47は、外部装置との通信に用いられる通信インタフェースである。
サーバ組込判定部43は、大規模障害発生等である地域の物理サーバ70が故障した際に、諸元を超過する物理サーバ70の発生確率を閾値(例えば20%)未満に抑制しながら、仮想サーバ70aをID空間上に再配置することが可能な、物理サーバ70の台数を求める計算(サーバ組込判定処理)を行う。以降簡単のため、故障した仮想サーバ70aのデータを、物理サーバ70が引受けることを、データを省略して、故障した仮想サーバ70aを、物理サーバ70が引受けると表現する。
サーバ組込判定処理の計算にはパラメータ情報42fが用いられる。パラメータ情報42fは、下記の各パラメータa,b,h,g,e,r,n(単に、各パラメータとも表現する)から構成されている。なお、各パラメータは、運用者が入力部45から任意に記憶部42に設定可能となっている。但し、各パラメータの設定は、サーバ組込判定部43の図示せぬ記憶部に行ってもよい。また、各パラメータの設定値を、システムに備わる状態監視機能によって随時変更してもよい。
a:分散システムの配備地域数
b:各物理サーバの仮想化サーバ数
h:対象サービスの総データ量
g:物理サーバの諸元
e:現在の物理サーバの総台数
r:大規模障害時に利用可能(残存する)な物理サーバ数(台数)であり、次式(1)から算出される。
n:大規模障害時に使用不能となる仮想サーバ数であり、次式(2)から算出される。
但し、総データ量hは、物理サーバ70のデータ処理負荷量またはデータ記憶負荷量のいずれかを示す値が設定され、いずれを採用するかはシステム依存である。
また、上式(1)及び(2)、後述の式(5)において、上がカギ形状となった括弧は、括弧内の計算値の小数点以下を切り上げる天井関数であることを示す。
サーバ組込判定部43は、各パラメータを用いて、次式(3)〜(5)の計算を行う。各式(1)〜(5)は予めプログラミングされ、サーバ組込判定部43の図示せぬ記憶手段に格納されている。
まず、全物理サーバ70の内、最大引受仮想サーバ数m以上の仮想サーバ70aを引受ける物理サーバ70が1台以上存在する確率(閾値)をPmとおくと、Pmは次式(3)で求められる。
但し、(aS0,aS1,…,aSm)は、物理サーバ70の1台当たりの仮想サーバ70aの引受数が、(m,m−1,…,0)にそれぞれ対応する物理サーバ数を表し、次式(4)の条件を満たす全ての組合せとする。なお、s=0…tである。式(4)は、式(3)の条件式である。
例えば、物理サーバ数e=「13」、物理サーバ1台当たりの仮想サーバ数b=「5」とし、大規模障害で残存する物理サーバ数がr=「10」となった場合の上式(3)のP(m)の分布図を図5に示す。
故障物理サーバ数は「3」なので、使用不能となる仮想サーバ数n=「15」となり、このとき、諸元を超過する物理サーバ70の発生確率Pmを20%未満に抑えられれば十分であると仮定する。この場合、大規模障害時に1台の物理サーバ70に、最大引受仮想サーバ数m=「5」の故障した仮想サーバ70aが組み込まれる可能性を考慮する必要がある。このため、物理サーバ1台当たりの仮想サーバ数は、後述のように最大「10」となる。
その最大「10」と、最大引受仮想サーバ数m=「5」となることを、図5を参照して説明する。上記の仮定では、使用不能となる仮想サーバ数n=「15」なので、図5の右側の奥に延びる軸上のn=「15」となる。この場合の確率Pm=20%未満は、縦軸上のPm=0.2未満なので、横軸上の最大引受仮想サーバ数m=「5」となる。従って、物理サーバ70が自ら保持する仮想サーバのデータ数(=仮想サーバ数)を「5」とすると、これに最大引受仮想サーバ数mの「5」が加えられるので、「5」+「5」=「10」となる。
従って、自らが保持する仮想サーバ数「5」の2倍の「10」が、障害時に、物理サーバ70の1台当たりが保持する仮想サーバ70aのデータ数(=仮想サーバ数)となる。このため、諸元を超過する物理サーバ70の発生確率Pmを20%未満に抑えるためには、言い換えれば、障害時に残存する物理サーバ70が80%の確率で諸元を超過しないようにするためには、物理サーバ数を2倍以上にする必要がある。
ここで、障害時の故障物理サーバ70を分割した仮想サーバ70aの負荷が、厳密に均等に分散される場合に求められる物理サーバ数は、故障仮想サーバ数n=「15」を、残存物理サーバ数r=「10」で割った値から求める。即ち、「15」/「10」=「1.5」なので、これを切り上げて「2」となる。この「2」が物理サーバが引受ける引受仮想サーバ数となるので、この「2」に、自らの仮想サーバ数の「5」を足すと、「2」+「5」=「7」となる。この「7」が、上記の厳密に均等に分散される場合に必要な物理サーバ数である。
残存する物理サーバ70が80%の確率で諸元を超過しないようにするためには、物理サーバ数が「10」台必要であり、この「10」台を、上記の厳密に均等に分散される場合に必要な物理サーバ数の「7」と比較すると、「10/7」(=約1.5)倍が必要となる。
次に、上式(3)のPmにおいて、mを1からnまで、1つずつなど徐々に繰り上げていった場合に、Pmが閾値の例えば20%を下回った際のmをzとする。このzを次式(5)に当て嵌めて、分散処理システム10に必要な物理サーバ数(必要物理サーバ数)elを求める。
つまり、物理サーバ70の故障時に仮想サーバ70aをID空間上に再配置する際に、諸元を超過する物理サーバ70の発生確率を20%未満と抑制できるようにする必要物理サーバ数elを上式(5)の計算によって求める。
図1に示すサーバ組込処理部44は、サーバ組込判定部43で求められた必要物理サーバ数elと、現在の物理サーバの総台数(現物理サーバ数)eとを比較し、現物理サーバ数eが、必要物理サーバ数elに対して不足している場合に、その不足台数の物理サーバ70を、クラスタ60に増設して配置する。この増設配置は、何れの地域(データセンタエリア)に行ってもよい。
<実施形態の動作>
次に、本実施形態の分散処理システム10におけるサーバ組込判定処理による物理サーバの組込処理の動作を、図6に示すフローチャートを参照して説明する。
図6に示すステップS1で、分散処理システム10(図1参照)において、運用者が管理装置40の入力部45を操作して、サーバ組込判定に必要な各パラメータa,b,h,g,e,r,nを記憶部42に設定する。
例えば、現在の物理サーバ数e=「13」、物理サーバ1台当たりの仮想サーバ数b=「5」である場合に、大規模障害で残存する物理サーバ数r=「10」とすると、使用不能となる仮想サーバ数n=「15」となるといったように、各パラメータが設定される。
次に、ステップS2において、運用者は入力部45から、サーバ組込判定部43に、上記ステップS1で設定された各パラメータに基づき、大規模障害発生時の仮想サーバ70aのID空間上への再配置において、諸元を超過する物理サーバ70の発生確率Pmを例えば20%未満に抑えるための閾値を設定する。つまり、閾値は、確率Pm=20%となる。
次に、ステップS3において、管理装置40の処理部41は、サーバ組込判定要求があるか否かを判定し、ある場合(Yes)はステップS4に進み、無い場合(No)はステップS3に戻る。なお、サーバ組込判定要求の契機は、例えば、運用者による管理装置40の入力部45の操作、図示せぬ他装置からのその要求のリクエストの受信、または、総データ量hの変動が一定値を超えた場合である。
ステップS4において、処理部41はサーバ組込判定要求をサーバ組込判定部43へ通知し、これによってサーバ組込判定部43が、各パラメータ及び閾値を用いてサーバ組込判定処理を実行する。
この実行は、まず、ステップS5において、サーバ組込判定部43が、上記ステップS1で設定された各パラメータを、上式(3)に当て嵌め、当該式(3)のPmにおいて、mを一定数(例えば1)ずつ繰り上げる。
次に、ステップS6において、サーバ組込判定部43が、Pmが閾値20%を下回ったか否かを判定する。この判定結果、下回らなければ(No)となり、上記ステップS5に戻って、サーバ組込判定部43が、mを更に1つ繰り上げる。一方、ステップS6の判定結果、Pmが閾値の20%を下回ったと判定された場合(Yes)は、ステップS7に進む。
ステップS7において、サーバ組込判定部43は、Pmが閾値の20%を下回った時のmをzとし、このzを上式(5)に当て嵌めて、分散処理システム10の必要物理サーバ数elを求める。
次に、ステップS8において、サーバ組込処理部44が、サーバ組込判定部43で求められた必要物理サーバ数elと、現物理サーバ数eとを比較し、現物理サーバ数eが、必要物理サーバ数elよりも少ないか否かを判定する。
この判定結果、現物理サーバ数eが、必要物理サーバ数elよりも多いと判定されたとする。例えば、現物理サーバ数e=「13」、必要物理サーバ数el=「10」と判定されたとする。この場合、現物理サーバ数e=「13」で、大規模障害発生時に、諸元を超過する物理サーバ70の発生確率を閾値20%未満に抑制しながら、仮想サーバ70aをID空間上に再配置することが可能となる。
従って、ステップS9において、サーバ組込処理部44は、物理サーバ70の追加配置は行わない。
一方、上記ステップS8の判定結果、現物理サーバ数eが、必要物理サーバ数elよりも少ないと判定されたとする。例えば、現物理サーバ数e=「13」、必要物理サーバ数el=「15」と判定されたとする。この場合、現物理サーバ数eが「2」台不足している。
従って、ステップS10において、サーバ組込判定部43は、その不足台数「2」台の物理サーバ70を、クラスタ60に追加配置する。これによって、現物理サーバ数eが「15」となるので、大規模障害発生時に、諸元を超過する物理サーバ70の発生確率を閾値20%未満に抑制しながら、仮想サーバ70aをID空間上に再配置することが可能となる。
<実施形態の効果>
以上説明したように、本実施形態のサーバリソース管理装置40は、協調してデータ処理を行うクラスタ60を構成する複数の物理サーバ70の各々を、複数の仮想サーバ70aに分割してコンシステント・ハッシュ法に基づくID空間上に分散配置し、端末機としてのクライアントマシン200からのデータ処理要求に応じて、ID空間上の仮想サーバ70aを介して物理サーバ70でデータ処理が行われるように管理する。
サーバリソース管理装置40の本実施形態の特徴は、物理サーバ70の故障時に、当該故障物理サーバ70を分割した仮想サーバ70aのデータを正常な物理サーバ70が引受けた際に、正常な複数の物理サーバ70の中から、物理サーバ70の諸元を超過する物理サーバ70が発生する確率に基づき、所定の確率を閾値として予め定めておき、物理サーバ70の故障時に、諸元を超過する物理サーバ70が発生する確率が閾値未満となるように、仮想サーバ70aをID空間上に分散配置するために必要な物理サーバ70数を求めるサーバ組込判定部43を備える構成とした。
この構成によれば、物理サーバ70の故障時に、諸元を超過する物理サーバ70が発生する確率が閾値未満(例えば20%)となるように、仮想サーバ70aをID空間上に分散配置するために必要な物理サーバ70数を求めることができるので、クラスタ60に配置する物理サーバ70の配置台数を自動で定めることができる。従来は、諸元を超過する物理サーバ70の発生確率が20%となるように、分散処理システムの運用者が経験や勘で行うしかなかった。
また、クラスタ60を構成する複数の物理サーバ70は、自地域の災害が他地域に及ばないように点在する複数の地域に分散して配置されるようにした。
これによって、物理サーバ70を、自地域の災害が他地域に及ばないように点在する複数の地域に分散して配置するので、何れかの地域に激甚災害が発生して物理サーバ70が故障しても、災害未発生の地域の物理サーバ70で故障物理サーバ70をバックアップすることができる。
また、サーバ組込判定部43は、物理サーバ70の最大引受仮想サーバ数をmとして、諸元を超過する物理サーバ70が発生する確率をPmとして算出する際に、複数の地域数をa、物理サーバ70の仮想化サーバ数をb、物理サーバ70のデータ処理負荷量とデータ記憶負荷量とを合わせた総データ量をh、物理サーバ70の諸元をg、クラスタ60内の現在の物理サーバ70の総台数をe、上式(1)から算出され、地域の障害時に利用可能な物理サーバ70数をr、上式(2)から算出され、地域の障害時に使用不能となる仮想サーバ70a数をnとした各パラメータa,b,h,g,e,r,nを、上式(3)に当て嵌めて算出するようにした。
これによって、諸元を超過する物理サーバ70が発生する確率Pmを、数式(3)によって正確に求めることができる。従って、物理サーバ70の故障時に、諸元を超過する物理サーバ70が発生する確率が閾値未満(例えば20%)となるように、仮想サーバ70aを適正にID空間上に分散配置することができる。
また、各パラメータa,b,h,g,e,r,nを記憶する記憶部42(又はサーバ組込判定部43内の図示せぬ記憶部)と、各パラメータa,b,h,g,e,r,nを記憶部42に設定する入力を行う入力部45とを更に備え、サーバ組込判定部43は、記憶部42から各パラメータa,b,h,g,e,r,nを読み出して確率Pmを算出するようにした。
これによって、分散処理システムの運用者等の人が、各パラメータa,b,h,g,e,r,nを、分散処理システムの状況に合わせて適正に設定することができる。
また、サーバ組込判定部43は、上式(3)で示される確率Pmにおいて、mを1からnまで一定数ずつ繰り上げた際に、確率Pmが閾値未満となった際のmをzとし、このzを上式(5)に当て嵌めて、必要な物理サーバ70数を算出するようにした。
これによって、サーバ組込判定部43が、諸元を超過する物理サーバ70が発生する確率を、数式(3)を用いて正確に求めた後に、その確率が閾値未満となるように、仮想サーバ70aをID空間上に分散配置するために必要な物理サーバ70数を、数式(5)から正確に求めることができる。
また、必要な物理サーバ70数と、クラスタ60を構成する現存の物理サーバ70である現物理サーバ70数とを比較し、当該現物理サーバ70数が、必要な物理サーバ70数に対して不足している場合に、当該不足台数の物理サーバ70を、クラスタ60に増設して配置するサーバ組込処理部44を更に備える構成とした。
この構成によれば、サーバ組込判定部43で求められた必要な物理サーバ70数から、現在、クラスタ60に配置されている物理サーバ70の不足台数を検出し、この不足台数の物理サーバ70を増設する処理を自動で行うことができる。
<実施形態の変形例>
本実施形態の変形例は、上記のサーバ組込判定及び処理に応じた物理サーバ増設後に、ID空間上に配置される仮想サーバ70aを、互いに隣合う仮想サーバ70aが、異なる地域の物理サーバ70に属する配置となるようにする。これは、処理部41が、ID空間管理情報42a(図2参照)、地域名情報42b(図3参照)及びサーバ管理情報42c(図4参照)にアクセスして行う。
例えば、物理サーバ70の増設後が行われると、増設された物理サーバ70が、サーバ管理情報42cの地域ID「00」に物理サーバBと対応付けて登録されている。処理部41は、その登録された地域ID「00」と、同じ地域ID「00」の地域名を地域名情報42bから検索することで、物理サーバBが配置されたのは、データセンタエリアαであることが検索可能となる。
処理部41は、物理サーバ70の増設後に、ID空間上への仮想サーバ70aの再配置を行う際に、互いに隣合う仮想サーバ70aが、異なる地域の物理サーバ70に属する配置となるように行う。例えば、ID空間上に、地域ID「00」の物理サーバBに属する仮想サーバBbの時計回り右隣に、地域ID「01」の物理サーバHに属する仮想サーバHhが配置されるようにする。この際、仮想サーバBbの左隣には、仮想サーバBbの地域ID「00」とは異なる地域IDに仮想サーバ70aが配置される。
この際に、例えばデータセンタエリアαに障害が発生して物理サーバBがダウンしたとする。この場合、ID空間上において、ダウンした物理サーバBに属する仮想サーバBbのデータが、当該仮想サーバBbの時計回り右隣の仮想サーバHhに引受けられる。仮想サーバHhは、障害が発生していない地域IDのデータセンタエリアβの物理サーバHに属するので、ダウンした仮想サーバBbのデータは、消失することなく複製データとして仮想サーバHhを介して物理サーバHで引受けることができる。
このように隣接する仮想サーバ70aが、異なる地域に配置された物理サーバ70に基づくものとする構成は、図8を参照した特許文献1の物理サーバの配置と同様の考え方で行ってもよい。即ち、少なくとも3つの地域にそれぞれ配置される物理サーバ70に基づく、地域を異にする3つの仮想サーバ70aが、ID空間上に連続して配置されるようにする。
この場合、何れか1つの地域に大規模障害が発生して物理サーバ70がダウンしても、ID空間上において、ダウンした物理サーバ70に属する仮想サーバ70aのデータが、この時計回り右隣の仮想サーバ70aで引受けられる。この場合、両隣の仮想サーバ70aは互いに地域を異にするので、仮想サーバaがダウンしても、その両隣の仮想サーバ70aは異なる地域のものとなる。この後に、隣合わせとなった仮想サーバ70aの時計回りの左側の仮想サーバ70aがダウンしても、そのデータが時計回り右隣の仮想サーバ70aで引受けられる。このため、より安全に、ダウンした仮想サーバ70aのデータを、消失することなく複製データとして保護することができる。
この他、処理部41が仮想サーバ70aに対して、次の配置処理を行うようにしてもよい。即ち、処理部41が、地域の数をK(≧3)とした場合、Kが奇数のとき、ID空間における仮想サーバ70aの挿入位置の両側それぞれについて{(K−1)/2}台の仮想サーバ70aを特定する。また、Kが偶数のとき、ID空間における仮想サーバ70aの挿入位置の両側の一方について(K/2)台、他方について{(K−2)/2}台の仮想サーバ70aを特定する。この特定した仮想サーバ70aが、挿入位置の仮想サーバ70aと異なる地域の物理サーバ70に基づくものとなるようにする。
このような構成によれば、ID空間における挿入先の「両隣」だけでなく「周囲K−1個」のサーバの属するデータセンタエリアを異ならせることで、ダウンした物理サーバ70が保持していた原本データの複製データを保持している物理サーバ70の数の期待値を、より大きくすることができる。
以上で本実施形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。例えば、管理装置40と負荷分散装置20を同一のハードウエアに並存させる構成としてもよい。
また、負荷分散装置20を使用せず、それぞれのクライアントマシン200が管理装置40から受信したID空間管理情報42aを保持して、ネットワーク100経由で複数の仮想サーバ70aの何れかに直接アクセスするようにしてもよい。
また、地域として、データセンタエリアを単位とする場合を例にとって説明したが、データセンタエリアをさらに分割したものや都道府県等の別の単位を採用してもよい。また、本発明は、コンピュータを管理装置40として機能させるためのプログラムとしても具現化可能である。その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。