JP6431454B2 - クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム - Google Patents

クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム Download PDF

Info

Publication number
JP6431454B2
JP6431454B2 JP2015150203A JP2015150203A JP6431454B2 JP 6431454 B2 JP6431454 B2 JP 6431454B2 JP 2015150203 A JP2015150203 A JP 2015150203A JP 2015150203 A JP2015150203 A JP 2015150203A JP 6431454 B2 JP6431454 B2 JP 6431454B2
Authority
JP
Japan
Prior art keywords
server
container
virtual instance
servers
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015150203A
Other languages
English (en)
Other versions
JP2017033117A (ja
Inventor
育生 大谷
育生 大谷
絵里子 岩佐
絵里子 岩佐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015150203A priority Critical patent/JP6431454B2/ja
Publication of JP2017033117A publication Critical patent/JP2017033117A/ja
Application granted granted Critical
Publication of JP6431454B2 publication Critical patent/JP6431454B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、仮想化技術が適用されたアプリケーションとしての仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置するクラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラムに関する。
仮想化技術には、物理的なコンピュータ(サーバ)上にホストOS(Operating System)を介して任意のゲストOS及びアプリケーションを含む仮想マシンを配置したハイパーバイザ方式や、物理的なコンピュータ(サーバ)上にホストOSを介してアプリケーションを収容するコンテナを配置したコンテナ方式等がある。この仮想化技術において、アプリケーションをホストする仮想マシンやコンテナ等の仮想インスタンスを、極力少数の物理的なサーバ上に集約して、サーバのCPU(Central Processing Unit)やメモリ等のリソースを有効に使用することが行われている。
従来技術では、複数のリソース次元を持つ仮想インスタンスのサーバへの最適配置問題(後述)を、多次元のベクトルパッキング問題(Multi-dimentional Vector Packing Problem)としてモデル化し、後述の欲張り法(Greedy Method)を適用することで計算負荷を抑えつつ、サーバ数を効率的に削減する方法がある。なお、サーバは、複数のサーバが設置されたクラスタ内のサーバである。
欲張り法では、仮想インスタンスを特定の基準により並べ替えた後、1つずつの仮想インスタンスにつき、サーバの空き容量(残容量)を考慮した評価式(後述)によって最適配置先のサーバを決定している。評価式には、主に仮想インスタンスのリソース使用量ベクトルとサーバの残容量ベクトル間の差分ベクトルの大きさや内積が用いられる。
最適配置問題とは、例えば、複数の物を複数の箱に詰める際に、箱の数を最小化する問題を考えることである。言い換えれば、箱の数が最小となるように箱に物を詰める最適配置を考えることである。
本明細書中では、対象とするリソースをCPUとメモリの2次元とし、図12に示すように、仮想インスタンスとしての複数のコンテナ(物に相当)C1〜C6を、複数のサーバ(箱に相当)SV1〜SV2に詰める配置を行う際に、欲張り法によりサーバ数を常に最小限に抑制することを行う。言い換えれば、サーバ数の最小化を行うために多次元ベクトルパッキング問題の2次元版である2DVPP(2D Vector Packing Problem)としてモデル化し、欲張り法による解法を継続的に適用することを行う。
各サーバSV1〜SV2のリソースが同一である場合に、図13及び図14に示す横軸をCPU使用率、縦軸をメモリ使用率とした2次元座標上に、各サーバSV1〜SV2の全体容量のベクトル(サーバ全体容量ベクトル)をVtで表す。このベクトルVtは、サーバのCPU使用率100%、メモリ使用率100%に対応するリソース使用可能量を表す。図13はサーバSV1のリソース使用率のベクトルを示す図、図14はサーバSV2のリソース使用率のベクトルを示す図である。
まず、図13に示すように、サーバSV1に、ベクトルVC1で示すCPU使用率30%及びメモリ使用率10%のコンテナC1を載せたとする。この場合、サーバSV1のリソース残容量は、CPU使用可能率100%−30%=70%、メモリ使用可能率100%−10%=90%に対応する残容量となる。次に、サーバSV1に、ベクトルVC3で示すCPU使用率50%及びメモリ使用率60%のコンテナC3を載せた場合、リソース残容量は、CPU使用可能率70%−50%=20%、メモリ使用可能率90%−60%=30%に対応する残容量となる。次に、サーバSV1に、ベクトルVC4で示すCPU使用率20%及びメモリ使用率30%のコンテナC4を載せた場合、リソース残容量は、CPU使用可能率20%−20%=0%、メモリ使用可能率30%−30%=0%に対応する残容量=0となる。このようにサーバSV1のCPU及びメモリの双方を100%全て使い切ることが、サーバ台数を削減する上では理想的である。
しかし、サーバにメモリ使用量の多いコンテナを載せてしまうと、CPUの余力はあるが、メモリが不足し、このサーバ以外に追加のサーバが必要となってしまう。
例えば、図14に示すように、サーバSV2に、ベクトルVC2で示すCPU使用率20%及びメモリ使用率40%のコンテナC2と、ベクトルVC5で示すCPU使用率40%及びメモリ使用率10%のコンテナC5と、ベクトルVC6で示すCPU使用率40%及びメモリ使用率20%のコンテナC6を載せたとする。この場合、リソース残容量は、CPU使用可能率100%−(20+40+40)%=0%、メモリ使用可能率100%−(40+10+20)%=30%に対応する残容量となる。つまり、メモリ使用率70%なので、この値を100%から減算した30%に対応するメモリ容量が未使用リソースとして残ってしまう。
この未使用リソースを解消するために従来では、次のような手法(欲張り法)を用いていた。図15(a)に示すように、6つのコンテナC1〜C6がある場合、これらを優先度に応じて並び替える。優先度は、例えばCPU及びメモリの合計の使用率が多い順に並び変える。この例では、コンテナC5が最大の優先度を有し、以降、コンテナC3,C2,C4,C6,C1となっている。
次に、図15(b)に示すように、コンテナC5を、どのサーバSV1〜SV4に置けば、稼働サーバ数が最小となるようにコンテナC5をサーバに最適配置することができるかを判断する。この判断には、サーバSV1〜SV4に「スコア」と呼ばれる値を用いる。スコアには、ベクトルの差分や内積を用いる。
差分ベクトル(差分)は、サーバSVの残容量ベクトルVSと、各コンテナCのリソース使用量ベクトルVAとの差分である。この差分をサーバSV1〜SV4毎に求めてスコアとして設定する。差分が小さい程に、サーバSVに対するコンテナCの最適配置となるので、差分が小さい程にスコアを大きい値とする。
ベクトルの内積は、サーバSVの残容量ベクトルVSと、各コンテナCのリソース使用量ベクトルVAとの内積である。この内積をサーバSV1〜SV4毎に求めてスコアとして設定する。内積が大きい程に、サーバSVに対するコンテナCの最適配置となるので、内積が大きい程にスコアを大きい値とする。
図15(b)の例では、サーバSV1のスコアがR5、サーバSV2のスコアがR2、サーバSV3のスコアがR1、サーバSV4のスコアがR8である。この場合、サーバSV4のスコアR8が最も大きいので、図15(c)に示すように、サーバSV4にコンテナC5を配置すれば最適配置となる。次に、コンテナC5の次のコンテナC3を同様にサーバSV1〜SV4に対して最適配置し、以降同様に、コンテナC2,C4,C6,C1の順に全てを最適配置する。この種の技術内容が、例えば非特許文献1,2に開示されている。
Rina Panigrahy,et.al.,"Heuristics for Vector Bin Packing"、[online]、2011、[平成27年7月3日検索]、インターネット〈URL:http://research .microsoft.com/a/i/c/segoe_msr_logo.png〉 Mark Stillwell,et.al.,"Resource Allocation Algorithms for Virtualized Service Hosting Platforms"、[online]、June 1, 2010、[平成27年7月3日検索]、インターネット〈URL: http://wrs.search.yahoo.co.jp /FOR=u2BbYN1V3ija0LCM9fyn2DnbkhQ02HNwU5VLf2DemdVf.gKsIUjGD8iPVn7PTO5OHC6SYJL6okzvVCi0APeb5T0vruBSzf4YCgOTo6vjbv23mIHO0RpVK3mnxxdtric8q9kbhckT1mWhXvBzuTYuSiPmkDoya〉
しかし、上述したように、差分ベクトルでコンテナC(仮想インスタンス)の最適配置を評価した場合、次のような問題がある。この問題を図16を参照して説明する。図16(a)において、矢印VAは、コンテナCのリソース使用量ベクトル(「コンテナ使用量ベクトルVA」又は、単に「VA」ともいう)である。矢印VS1はサーバSV1のコンテナ配置前の残容量ベクトル、矢印VS2はサーバSV2のコンテナ配置前の残容量ベクトルである。破線矢印VS1aは、サーバSV1のコンテナ配置後、即ち、残容量ベクトルVS1からコンテナ使用量ベクトルVAを引いた後の残容量ベクトルである。破線矢印VS2aは、サーバSV2のコンテナ配置後、即ち、残容量ベクトルVS2からコンテナ使用量ベクトルVAを引いた後の残容量ベクトルである。
サーバSV1の残容量ベクトルVS1と、サーバSV2の残容量ベクトルVS2とを比較すると、図16(b)に示すように、絶対値は、VS1が大、VS2が小である。コンテナ使用量ベクトルVAとの間の角度は、VS1が小、VS2が中である。VS−VAの絶対値は、VS1が中、VS2が小である。但し、大>中>小の関係とする。
このような関係から、サーバSV1にコンテナCを配置した場合と、サーバSV2にコンテナCを配置した場合とでは、図16(a)に示す破線矢印VS1aとVS2aとの比較から分かるように、サーバSV1にコンテナCを配置した方が、配置後のサーバリソースの残容量がそれまでの容量に対して変化が少ない。つまり、VS2とVA間の角度よりも、VS1とVA間の角度の方が小さく、VS1とVA間では角度差が殆んどないので、その後のコンテナの配置を考慮すると容量に変化の少ないVS1の方が差分ベクトルが小さく有利となる。
一方、VS2とVA間では角度差が大きいが、ベクトルの大きさが小さい。この関係から、サーバSV2のリソース残容量であるメモリ容量は大きく、CPU容量は小さいので、サーバSV2にコンテナCを配置した場合、CPUは殆んど余らないが、メモリは余ってしまうといったリソース間のアンバランスが生じる。
つまり、VAは、VS1とは角度差が小さく、VS2とは角度差が大きいので、本来であればVS1のサーバSV1にコンテナCを配置した方が、メモリ及びCPUの双方の容量がアンバランスな余り方をしないで済む。しかし、VAは、長いベクトルのVS1よりも、短いベクトルVS2に近い大きさのベクトルを有するので、その差分ベクトルは、VS2との差分の方が小さくなってしまう。このため、差分ベクトルの小さいサーバSV2に、VAを有するコンテナCが配置されてしまう。この場合、サーバSV2にCPU使用率の大きいコンテナCを載せることになるので、CPUが不足し、このサーバ以外に追加のサーバが必要となってしまう。つまり、稼働サーバ数が増加するという問題が生じる。
次に、ベクトルの内積で最適配置を評価した場合、次のような問題がある。この問題を図17を参照して説明する。図17(a)において、矢印VAは上記と同じである。矢印VS3はサーバSV3のコンテナ配置前の残容量ベクトル、矢印VS4はサーバSV4のコンテナ配置前の残容量ベクトルである。破線矢印VS3aは、サーバSV3のコンテナ配置後、即ち、残容量ベクトルVS3からコンテナ使用量ベクトルVAを引いた後の残容量ベクトルである。破線矢印VS4aは、サーバSV4のコンテナ配置後、即ち、残容量ベクトルVS4からコンテナ使用量ベクトルVAを引いた後の残容量ベクトルである。
サーバSV3の残容量ベクトルVS3と、サーバSV4の残容量ベクトルVS4とを比較すると、図17(b)に示すように、絶対値は、VS3が小、VS4が大である。コンテナ使用量ベクトルVAとの間の角度は、VS3が小、VS4が中である。VS・VAは、VS3が小、VS4が大である。
このような関係から、サーバSV3にコンテナCを配置した場合と、サーバSV4にコンテナCを配置した場合とでは、図17(a)に示す破線矢印VS3aとVS4aとの比較から分かるように、角度差の小さいサーバSV3にコンテナCを配置した方が、配置後のサーバリソースの残容量がそれまでの容量に対して変化が少ない。つまり、VS4とVA間の角度よりも、VS3とVA間の角度の方が小さく、VS3とVAでは角度差が殆んどないので、その後のコンテナの配置を考慮すると容量に変化の少ないVS3の方が有利となる。
しかし、VAと、VS3又はVS4の内積は、VAとVS3との内積よりも、VAとの角度差が大きく且つベクトルが大きいVS4との内積の方が大きくなってしまう。このため、VAとVS3の内積、VAとVS4の内積を取ると、内積の大きいVS4が選択されてしまう。このようにリソース残容量の絶対値が大きい方のサーバSV4が選択されてしまう。このため、ベクトルの内積の大きいサーバSV4に、VAを有するコンテナCが配置されてしまう。この場合、サーバSV4にCPU使用率の大きいコンテナCを載せることになるので、CPUが不足し、このサーバ以外に追加のサーバが必要となってしまう。つまり、稼働サーバ数が増加するという問題が生じる。
本発明は、このような事情に鑑みてなされたものであり、複数のサーバが設置されたクラスタ内で、稼働サーバ数が最小となるように仮想インスタンスをサーバに最適配置することができるクラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラムを提供することを課題とする。
上記課題を解決するための手段として、請求項1に係る発明は、アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置するクラスタ内リソース管理システムであって、前記仮想インスタンスのリソース使用量を記憶する記憶手段と、前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、当該リソース使用量ベクトルを有する仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化し、当該双方の単位ベクトルの内積を求め、当該内積が最大となるサーバへ当該仮想インスタンスを配置する制御を行う計算制御手段とを有する管理サーバを備え、前記計算制御手段は、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替え、この並び替えられた順で仮想インスタンス毎に、仮想インスタンスが配置可能で前記内積が最大となる最大適合率の前記サーバを検出し、この検出されたサーバに当該最大適合率の仮想インスタンスを配置する処理を行うことを特徴とするクラスタ内リソース管理システムである。
請求項5に係る発明は、アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバであって、前記仮想インスタンスのリソース使用量を記憶する記憶手段と、前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、当該リソース使用量ベクトルを有する仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化し、当該双方の単位ベクトルの内積を求め、当該内積が最大となるサーバへ当該仮想インスタンスを配置する制御を行う計算制御手段とを備え、前記計算制御手段は、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替え、この並び替えられた順で仮想インスタンス毎に、仮想インスタンスが配置可能で前記内積が最大となる最大適合率の前記サーバを検出し、この検出されたサーバに当該最大適合率の仮想インスタンスを配置する処理を行うことを特徴とする管理サーバである。
これらの請求項1,5の構成によれば、仮想インスタンスのリソース使用量ベクトル(使用量ベクトル)と、仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトル(残容量ベクトル)との双方を単位ベクトル化することで、双方のベクトルの大きさが同じになる。この同じ大きさの双方の単位ベクトルの内積を取ることで、サーバの残容量ベクトルの絶対値が内積結果に次の悪影響を及ぼさなくなる。
悪影響とは、本来であれば、仮想インスタンスの使用量ベクトルとの角度差が小さい残容量ベクトルのサーバに、仮想インスタンスを配置した方が、配置後のサーバリソースの残容量がそれまでの容量に対して変化が少ない。つまり、双方のベクトルの角度差が小さい方がその後の仮想インスタンス配置の観点で有利となる。しかし、双方のベクトルの内積を求めた場合、ベクトルが大きい使用量ベクトルを有する仮想インスタンスの方が、上記の角度差が大きくても、内積が大きくなってしまうケースが生じる。このため、残容量ベクトルの絶対値の大きい方のサーバが、仮想インスタンスの配置先として選択されてしまう。
しかし、本発明では、サーバの残容量ベクトルの絶対値が双方のベクトルの内積結果に悪影響を及ぼさないように単位ベクトル化したので、角度差がより小さいのみの判定で仮想インスタンスのサーバへの最適配置を決定することができる。このため、仮想インスタンスのサーバへの最適配置を行うことができる。
請求項2に係る発明は、前記計算制御手段は、前記リクエストの変動に応じた新規の仮想インスタンスが、稼働中のサーバに配置不可能な場合に、前記稼働中のサーバと、前記新規の仮想インスタンス用のサーバを含めた稼働中のサーバにおける全ての仮想インスタンスとに対して、前記双方を単位ベクトル化し、当該双方の単位ベクトルの内積が最大となるサーバを求める計算を行い、この計算の結果、稼働対象のサーバ数が増加していれば、当該増加した数の停止中のサーバを起動させて増加分のサーバとする制御を行うことを特徴とする請求項1に記載のクラスタ内リソース管理システムである。
この構成によれば、新規のリクエストに応じた仮想インスタンスの増加時に、この増加した仮想インスタンスを最適配置可能に、サーバを増設することができる。
請求項3に係る発明は、前記管理サーバは、稼働中のサーバから前記仮想インスタンスが消去された際に、前記稼働中のサーバと、当該稼働中のサーバにおける前記消去後の全ての仮想インスタンスとに対して、前記双方を単位ベクトル化し、当該双方の単位ベクトルの内積が最大となるサーバを求める計算を行い、この計算の結果、稼働対象のサーバ数が減少していれば、当該減少した数の稼働サーバを停止させる制御を行うことを特徴とする請求項1に記載のクラスタ内リソース管理システムである。
この構成によれば、稼働中のサーバ上の仮想インスタンスがリクエストを受ける必要が無くなった等の理由により、稼働中のサーバから仮想インスタンスが消去された際に、消去後の全ての仮想インスタンスが最適に配置されるサーバを計算する。この計算の結果、稼働対象のサーバ数が減少していれば、この減少対象のサーバを停止させるようにしたので、仮想インスタンスを最適配置可能に、サーバを減少させることができる。
請求項4に係る発明は、アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバが行うクラスタ内リソース管理方法であって、前記管理サーバは、前記仮想インスタンスのリソース使用量を記憶する記憶手段を備えており、前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、前記仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化するステップと、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替えるステップと、前記並び替えられた順で仮想インスタンス毎に、前記単位ベクトル化による前記双方の単位ベクトルの内積を求め、仮想インスタンスが配置可能で当該内積が最大となる最大適合率の前記サーバを検出するステップと、前記検出されたサーバに当該最大適合率の仮想インスタンスを配置するステップとを実行することを特徴とするクラスタ内リソース管理方法である。
この方法によれば、上記請求項1に記載したように、仮想インスタンスの使用量ベクトルとサーバの残容量ベクトルとの双方を単位ベクトル化した後の角度差が、より小さいサーバへ仮想インスタンスを配置する。このため、仮想インスタンスのサーバへの最適配置を行うことができる。
請求項6に係る発明は、アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバとしてのコンピュータを、前記仮想インスタンスのリソース使用量を記憶する手段、前記記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、前記仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化する手段、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替える手段、前記並び替えられた順で仮想インスタンス毎に、前記単位ベクトル化による前記双方の単位ベクトルの内積を求め、仮想インスタンスが配置可能で当該内積が最大となる最大適合率の前記サーバを検出する手段、前記検出されたサーバに当該最大適合率の仮想インスタンスを配置する手段として機能させるためのプログラムである。
このプログラムによれば、上記請求項1,5に記載したように、仮想インスタンスのサーバへの最適配置を行うことができる。
本発明によれば、複数のサーバが設置されたクラスタ内で、稼働サーバ数が最小となるように仮想インスタンスをサーバに最適配置することができるクラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラムを提供することができる。
本発明の実施形態に係るクラスタ内リソース管理システムの構成を示すブロック図である。 サーバ残容量ベクトルとコンテナリソース使用量ベクトルとを単位ベクトル化する際の説明図である。 管理サーバの構成を示すブロック図である。 サーバの構成を示すブロック図である。 (a)コンテナリストの一例を示す図、(b)コンテナのCPU使用率及びメモリ使用率と、コンテナ使用率との一例を示す図である。 (a)サーバリストの一例を示す図、(b)サーバのCPU使用可能率及びメモリ使用可能率の一例を示す図である。 個別コンテナリストの一例を示す図である。 本実施形態のクラスタ内リソース管理システムによるコンテナ増加時のサーバ増減動作を説明するフローチャートである。 本実施形態のクラスタ内リソース管理システムによるコンテナ減少時のサーバ増減動作を説明するフローチャートである。 本実施形態のクラスタ内リソース管理システムによるコンテナ再配置計算の処理動作を説明するフローチャートである。 本実施形態のシミュレーションに基づく効果を示す図である。 サーバへのコンテナ配置の模式図である。 従来のサーバのリソース使用率のベクトル図である。 従来の他のサーバのリソース使用率のベクトル図である。 (a)従来のコンテナの優先度に応じた並び替えを示す図、(b)コンテナの最適化の判断の説明図、(c)コンテナのサーバへの最適配置を示す図である。 差分ベクトルでサーバへのコンテナの最適配置を評価した場合の問題を説明するベクトル図である。 ベクトルの内積でサーバへのコンテナの最適配置を評価した場合の問題を説明するベクトル図である。
以下、本発明の実施形態を、図面を参照して説明する。
<実施形態の構成>
図1は、本発明の実施形態に係るクラスタ内リソース管理システムの構成を示すブロック図である。
本実施形態のクラスタ内リソース管理システム(システムともいう)の特徴は、リソースとしてCPU及びメモリの2次元を考慮し、仮想化技術が適用されたアプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、欲張り法を適用してクラスタ内の稼働サーバ数を最小限に抑えることが可能な、サーバへの仮想インスタンスの最適配置を行うものである。つまり、最適配置(又はコンテナ最適配置)とは、サーバにおけるリソース(CPU+メモリ)残容量が極力少なく又は無くなるように、サーバに仮想インスタンスを配置することである。
特に、欲張り法により仮想インスタンス毎に、当該仮想インスタンスを最適配置可能なサーバを決定する評価を行う。この評価は、仮想インスタンスのリソース使用量ベクトルと、サーバのリソース残容量(空き容量)ベクトルとの双方を単位ベクトル化し、双方の単位ベクトルの内積を取って仮想インスタンスのサーバへの最大適合率を求めることである。言い換えれば、その内積が最大となるサーバへの仮想インスタンスの配置が、仮想インスタンスのサーバへの最大適合率となる。
但し、仮想インスタンスは、アプリケーションをホストする仮想マシンやコンテナ等であり、本実施形態では、コンテナであるとする。このコンテナは、1コンテナ中に1種類のアプリケーションをホストし、固定量のリソースを物理的なサーバから確保することを前提条件とする。なお、1コンテナ中に複数種類のアプリケーションをホストする構成としてもよい。また、リソース使用量ベクトルを使用量ベクトル、リソース残容量ベクトルを残容量ベクトルともいう。
また、本実施形態では、サーバは全て同じCPU及びメモリ容量を持つ物理的なサーバとする。このため、コンテナのリソース使用量、サーバの残容量は全てCPU使用率及びメモリ使用率を用いて表すこととする。更に、リソース使用率が100%であれば、リソース使用量が「100」、15%であれば「15」となるように、以降、1対1の対応関係があるものとして記載する。なお、各サーバが異なるCPU、メモリ容量を持ってもよい。この場合、コンテナのリソース使用量、サーバの残容量は全サーバで比較可能な適切な尺度により評価する。
図1に示すシステム10は、コンピュータであるクライアント端末機(端末機)11と、インターネット12と、ローカルネット13と、ロードバランサ14と、複数サーバが設置されたクラスタ20と、ローカルネット23と、管理サーバ40とを備えて構成されている。クラスタ20には、稼働サーバ群21としての稼働中の各サーバSV11〜SV14と、サーバプール22における停止中の各サーバSV21〜24とが設置されている。なお、各稼働サーバSV11〜SV14と各停止サーバSV21〜24とは、実際にはクラスタ20内に混在配置されているが、図1においては、分かり易くするため、稼働サーバ群21の稼働サーバSV11〜SV14と、サーバプール22の停止サーバSV21〜SV24とを区分けして表した。
端末機11と、クラスタ20内の各サーバSV11〜SV14,SV21〜SV24とは、インターネット12、ローカルネット13及びロードバランサ14を介して接続されている。各サーバSV11〜SV14,SV21〜SV24と管理サーバ40とは、ローカルネット23を介して接続されている。
ロードバランサ14は、端末機11から送信されるコンテナへのリクエストに応じた各稼働サーバSV11〜SV14の処理負荷を分散する処理を行う。
各サーバSV11〜SV14,SV21〜SV24は、1種類のアプリケーションをホストするコンテナを起動できるようなコンテナエンジン(図4の符号52a参照)を搭載している。また、各サーバSV11〜SV14,SV21〜SV24は、管理サーバ40に対して自サーバのCPU及びメモリのリソース使用状況を通知し、この通知の応答としての管理サーバ40からのコンテナ起動又は消去の命令に応じて、自サーバのコンテナを起動又は消去する。
稼働サーバSV11〜SV14は、管理サーバ40からのサーバ停止命令に応じて、自サーバをシャットダウンする。このシャットダウンされたサーバはサーバプール22に移行する。この逆に、管理サーバ40からの起動命令を受けた停止サーバSV21〜SV24は、起動状態となって稼働サーバ群21に移行する。但し、初期状態では、クラスタ20内の全てのサーバSV11〜SV14,SV21〜SV24が停止中であり、サーバプール22に存在する。なお、サーバプール22のサーバSV21〜SV24は、シャットダウン状態なので電力消費が無い状態となる。
管理サーバ40は、稼働サーバSV11〜SV14からリソース使用状況を収集し、コンテナ最適配置の判断を行い、この判断結果に応じて稼働サーバSV11〜SV14にコンテナ起動又は消去命令を送信する。また、管理サーバ40は、コンテナ最適配置の判断結果に応じて、サーバ起動又は停止の判断を行い、稼働サーバSV11〜SV14に停止命令、サーバプール22の停止サーバSV21〜SV24に起動命令を送信する。
このサーバの起動命令又は停止命令は、コンテナの増加又は減少に応じて次のように実行される。
まず、コンテナ増加時について説明する。端末機11からアプリケーションにリクエストがあると、このリクエストは、ロードバランサ14により稼働サーバSV11〜SV14の該当アプリケーションをホストするコンテナに対して振り分けられる。この際、稼働サーバSV11〜SV14の全てのコンテナが新規のリクエストを処理不能であれば、後述のコンテナ最適配置の計算を行って、コンテナを新規に配置するためのサーバを起動させる必要がある。このため、停止サーバSV21〜SV24に起動命令を送信するようになっている。
次に、コンテナ減少時について説明する。稼働サーバ(例えばSV11)において、全ての処理を終えたコンテナがある場合に、後述のコンテナ最適配置の計算を行って、全てのコンテナが消去された稼働サーバに停止命令を送信するようになっている。
コンテナ最適配置の計算について説明する。上述したコンテナの増加又は減少が発生した場合、コンテナのサーバへの組合せを再度変える。例えば、コンテナの5台が4台に、又は4台が5台となる場合に、コンテナ最適配置の計算を管理サーバ40が行う。即ち、管理サーバ40が、どのコンテナをどのサーバに割り当てるのが最適配置となるかを計算する。言い換えれば、サーバ台数が極力少なくなるように、コンテナのサーバへの配置先(コンテナ移動先)を変える。
より具体的には、管理サーバ40は、コンテナ最適配置計算を行って、欲張り法によりコンテナ毎に、当該コンテナを最適配置可能なサーバを決定するが、この際、稼働サーバSV11〜SV14のリソース残容量(CPU使用可能率+メモリ使用可能率)のベクトルと、コンテナのリソース使用率(CPU使用率+メモリ使用率)のベクトルとの双方を単位ベクトル化する。但し、CPU使用可能率及びメモリ使用可能率は、コンテナが使用できるサーバのCPU残容量及びメモリ残容量を示すものである。
例えば、図2に示すように、各々ベクトル長が異なる、サーバ残容量ベクトルVS7とコンテナ使用量ベクトルVA7とを各々単位ベクトル化すると、各々同じ長さ「1」のサーバ単位ベクトルVS7aとコンテナ単位ベクトルVA7aとなる。次に、その双方の単位ベクトルVS7a,VA7aの内積を計算し、この計算された内積が最も大きくなる稼働サーバ(例えばSV11)をコンテナ配置先として選択する。但し、サーバとコンテナの組み合わせによっては、CPU使用率100%超や、メモリ使用率100%超となる配置も生じるが、この場合、再度計算を行い、100%超とならないようにする。
次に、コンテナのサーバへの配置先を変える場合について説明する。図1に示す管理サーバ40は、例えば稼働サーバSV11からSV12へコンテナを移動する場合、コンテナ移動元の稼働サーバSV11にコンテナ消去命令を発し、該当コンテナを消去させる。この消去後、コンテナの移動先の稼働サーバSV12にコンテナ起動命令を発し、該当コンテナを起動させる。また、前述したリクエストに応じた新規コンテナを増加する場合は、この新規コンテナの配置先の稼働サーバ(例えばSV13)にコンテナ起動命令を発し、該当コンテナを起動させる。但し、コンテナの移動においてデータやCPU状態を保持する必要がある場合には、データやCPU状態を外部記憶装置等に一時的に保存し、移動後のコンテナに同期させるといった手段を講じるものとする。
このようにコンテナを移動した後に、1つもコンテナをホストしない稼働サーバ(例えばSV14)がある場合、管理サーバ40はその稼働サーバSV14に停止命令を発して停止させ、サーバプール22に移行させる。
また、上述したコンテナ最適配置計算により、コンテナを配置するためにサーバ増設が必要となった場合、管理サーバ40は、サーバプール22の停止サーバSV21〜SV24にサーバ起動命令を発し、これで起動したサーバ(例えばSV21)を稼働サーバ群21に移行させる。
このような処理を行う管理サーバ40の構成を図3に示し、また、各サーバSV11〜SV14,SV21〜SV24(符号SV)の構成を図4に示し、その詳細な説明を行う。但し、各サーバSV11〜SV14,SV21〜SV24は、同一のリソース量(CPU、メモリ)を備えるものとする。
図3に示す管理サーバ40は、コンテナ配置先計算制御部41と、サーバ制御部42と、コンテナリスト43と、サーバリスト44とを備えて構成されている。コンテナ配置先計算制御部41は、配置先計算部41aと、コンテナ増減制御部41bと、コンテナ情報収集部41cとを備える。サーバ制御部42は、サーバ起動停止部42aと、サーバ情報収集部42bとを備える。なお、コンテナリスト43及びサーバリスト44は、ハードディスク等の記憶手段に記憶されている。また、コンテナ配置先計算制御部41は、請求項記載の計算制御手段を構成する。
コンテナリスト43は、図5(a)に示すように、各コンテナ#1〜#3のコンテナ種別、コンテナ使用状態、コンテナ使用率、コンテナの配置先サーバ、CPU使用率、メモリ使用率、更新フラグ、新配置先サーバの各情報を保持する。
コンテナ種別は、コンテナの種類を識別する情報(例えば、「A」、「B」)が記載される。コンテナ使用状態は、「処理中」、「要起動」(図示せず)、「要消去」(図示せず)の3つの状態を取る。コンテナ使用率は、コンテナの確保したリソース使用率(CPU使用率及びメモリ使用率)の内の現在使用している割合{図5(b)を参照して後述する}、例えば「10%」、「20%」である。配置先サーバは、現在コンテナが配置されているサーバ「SV11」、「SV13」を示す。
CPU使用率は、個々のコンテナ#1〜#3が確保するサーバのCPU使用率(コンテナが使用可能な最大値)であり、例えば「10%」、「20%」である。メモリ使用率は、個々のコンテナ#1〜#3が確保するサーバのメモリ使用率(コンテナが使用可能な最大値)であり、例えば「10%」、「20%」である。更新フラグは、「完了」、「起動」(図示せず)、「消去」(図示せず)、「移動」(図示せず)の4つの状態に更新される。例えば、更新フラグは、初期値「0」から「完了=1」、「起動=2」、「消去=3」、「移動=4」に更新される。新配置先サーバは、コンテナの最適配置の確定後に配置すべきサーバ、例えば「SV12」、「SV14」を示す。
ここで、図5(a)に示すコンテナ#1のCPU使用率10%及びメモリ使用率10%は、図5(b)に示す2次元座標で表すと、サーバSVの全てのCPU使用率100%及びメモリ使用率100%における正方形破線枠#1aで示す部分となる。また、コンテナ#1のコンテナ使用率10%は、コンテナの確保した#1aで示すCPU使用率10%及びメモリ使用率10%の内の現在使用している割合、即ち、正方形破線枠#1bで示す部分となる。
図3に示すサーバリスト44は、図6(a)に示すように、稼働サーバ群21及びサーバプール22(図1)における各サーバSV11,SV12,SV21のサーバ種別、サーバ状態、CPU使用可能率、メモリ使用可能率、更新フラグの各情報を保持する。サーバ種別は、サーバの種類を識別する情報(例えば、「A」)が記載される。サーバ状態は、「稼働中」、「プール」、「起動中」(図示せず)、「停止中」(図示せず)の4つの状態を取る。CPU使用可能率は、コンテナが使用できるサーバのCPU残容量を示し、例えば「60%」、「30%」である。メモリ使用可能率は、コンテナが使用できるサーバのメモリ残容量を示し、例えば「50%」、「20%」である。更新フラグは、「増設」(図示せず)、「減設」(図示せず)、「完了」の3つの状態に更新される。例えば、更新フラグは、図示せぬ初期値「0」から「増設=1」、「減設=2」、「完了=3」に更新される。
図6(a)に示す例えばサーバSV11のCPU使用可能率60%及びメモリ使用可能率50%は、図6(b)に示す2次元座標で表すと、CPU使用率及びメモリ使用率が各100%の正方形から、40%と50%の正方形を除く領域SV11aとなる。
図3に戻って、配置先計算部41aは、コンテナ情報収集部41cから更新されたコンテナ情報の通知を受け取り、コンテナ#1〜#nの配置先サーバを求めるためのコンテナ最適配置計算を行う。この計算は、コンテナリスト43に存在する全コンテナ#1〜#3{図5(a)}に対して欲張り法を適用してコンテナ配置先のサーバSVを決定するものである。この決定された移動対象のコンテナ(例えば#1)については、コンテナリスト43内の該当コンテナ#1に更新フラグ{図5(a)}を設定する。サーバ増減が発生する場合には、サーバリスト44内{図6(a)}の増減サーバ(例えばSV11,SV12)に更新フラグを設定する。この後、配置先計算部41aは、コンテナ増減制御部41b及びサーバ起動停止部42aに、コンテナ最適配置計算の完了を通知する。
コンテナ増減制御部41bは、配置先計算部41aから最適配置計算完了通知と、サーバ起動停止部42aからサーバ増設通知とを受け取った場合、コンテナリスト43内の更新フラグが「移動」に設定されたコンテナ(例えば#1)の移動元の稼働サーバ(例えばSV11)にはコンテナ消去命令を、移動先の稼働サーバ(例えばSV12)にはコンテナ起動命令を発する。これによって移動元の稼働サーバSV11から該当コンテナが消去され、また、移動先の稼働サーバSV12では該当コンテナが起動する。更に、コンテナ増減制御部41bは、消去及び起動命令を発した後、サーバ起動停止部42aに最適配置の完了通知を通知する。
サーバ起動停止部42aは、配置先計算部41aから最適配置計算の完了通知を受け取った場合、サーバリスト44内{図6(a)}の更新フラグが「増設」に設定された、サーバプール22の該当サーバ(例えばSV21)にサーバ起動命令を発する。この起動命令を受けたサーバSV21は、自サーバ起動停止部56の制御によって自サーバを起動する。その後、サーバ起動停止部42aは、コンテナ増減制御部41bにサーバ増設通知を行い、配置先計算部41aから最適配置完了通知を受け取ると、サーバリスト44内の更新フラグが「減設」に設定された稼働サーバ(例えばSV11)にサーバ停止命令を通知する。この停止命令を受けた稼働サーバSV11は、自サーバ起動停止部56の制御によって自サーバを停止(シャットダウン)する。
コンテナ情報収集部41cは、各稼働サーバSV11〜SV14のサーバ情報提供部54b(図4)から、当該稼働サーバSV11〜SV14で起動中のコンテナのコンテナ情報を取得し、コンテナリスト43を更新する。その後、コンテナ情報収集部41cは、配置先計算部41aにコンテナ情報更新を通知する。
サーバ情報収集部42bは、各稼働サーバSV11〜SV14のサーバ情報提供部54bからサーバ使用率情報を取得し、サーバリスト44を更新する。
次に、図4に示すサーバSVは、監視部51と、コンテナ部52と、個別コンテナリスト53と、外部連携部54と、制御部55と、自サーバ起動停止部56とを備えて構成されている。監視部51は、物理リソース監視部51aと、コンテナリソース監視部51bとを備える。コンテナ部52は、1又は複数のコンテナ#1〜#nと、コンテナエンジン52aとを備える。外部連携部54は、配置情報受理部54aと、サーバ情報提供部54bとを備える。制御部55は、コンテナ起動消去部55aを備える。
個別コンテナリスト53は、図7に示すように、稼働サーバSV11〜SV14(図1)が保有するものであり、各コンテナ#1〜#3のコンテナ種別、コンテナ使用状態、コンテナ使用率、コンテナの配置先サーバ、CPU使用率、メモリ使用率の各情報を保持する。これらの情報は、図5のコンテナリスト43に示した情報と同様であるため説明を省略する。
図4に示すコンテナ#1〜#nは、1種類のアプリケーション用のサーバリソースを一定量確保し、アプリケーションを動作させる。
コンテナエンジン52aは、コンテナ#1〜#nをサーバ上でホストするために、サーバリソースをコンテナ毎に切り分けて各コンテナ#1〜#nに供与する。
配置情報受理部54aは、管理サーバ40(図3)のコンテナ増減制御部41bからコンテナ起動命令又は消去命令を受信し、コンテナ起動消去部55aに対してその受信命令を発する。
コンテナ起動消去部55aは、配置情報受理部54aから指定のあったコンテナ(例えば#1)を起動又は消去する。
物理リソース監視部51aは、サーバSVのリソース使用率を定期的に取得し、サーバ情報提供部54bに通知する。
コンテナリソース監視部51bは、サーバSV内のコンテナ#1〜#nからコンテナ使用率を定期的に取得し、サーバ情報提供部54bに通知する。
サーバ情報提供部54bは、物理リソース監視部51aからサーバリソース使用率を定期的に受け取り、管理サーバ40のサーバ情報収集部42b(図3)へ送信する。また、サーバ情報提供部54bは、コンテナリソース監視部51bから各コンテナ#1〜#nのコンテナ使用率を受け取り、管理サーバ40のコンテナ情報収集部41cに送信する。
<実施形態の動作>
次に、本実施形態のクラスタ内リソース管理システム10によるサーバSVへのコンテナ最適配置の処理を行う際の動作を、図8〜図10に示すフローチャートを参照して説明する。
まず、図8を参照してコンテナ増加時のサーバ増減動作について説明する。
ステップS1において、稼働サーバ(例えばSV11)が、端末機11からのアプリケーションへのリクエストを受信したとする。
この際、ステップS2において、管理サーバ40は、各稼働サーバSV11〜SV14の立ち上がっているコンテナ#1〜#nにおいて、上記受信したリクエストに対処可能なコンテナ#1〜#nが有るか否かを次のように判定する。
コンテナ#1〜#nでは、受信可能なリクエスト数の上限が決まっている。例えば、受信可能なリクエスト数の上限が100件の場合に、現在80件のコンテナが使用中であれば、まだ20件の余裕がある。この場合、上記ステップS2の判定結果は、Yesとなってコンテナ増加時のサーバ増減動作が終了する。
一方、対処可能なコンテナ#1〜#nが無ければ判定結果はNoとなって、ステップS3へ進む。このステップS3では、管理サーバ40のコンテナ情報収集部41cが、上記ステップS1で受信されたリクエストに対処するために新規にサーバSVに配置されるコンテナを、コンテナリスト43に追加する。
次に、ステップS4において、管理サーバ40の配置先計算部41aが、現在の稼働サーバSV11〜SV14における空コンテナ及び新規コンテナを合わせた全てに対して配置先計算(この配置先計算は、前述のコンテナ最適配置計算、言い換えれば再配置計算を行うことと同じである)を行って、全コンテナの配置先サーバSVを決定する。なお、配置先計算部41aには、コンテナ情報収集部41cで収集される現時点のコンテナ情報が通知され、このコンテナ情報を用いて上述の全コンテナの配置先サーバSVが決定される。
ここで、ステップS5において、配置先計算部41aは、上記ステップS4での全コンテナの配置先サーバSVの決定後に、サーバ台数が増加したか否かを判定する。この判定結果、サーバ台数が増加していれば、コンテナ増減制御部41bが、ステップS6において、サーバ(例えばSV12)を増設し、サーバリスト44内{図6(a)}の増加サーバSV12に更新フラグ「増設」を設定する。この後、ステップS7へ進む。
一方、上記ステップS5の判定結果、サーバ台数に変化無し又は減少している場合、ステップS7へ進む。ステップS7において、コンテナ増減制御部41bは、再配置計算によりコンテナリスト43内の更新フラグが設定されたコンテナ(例えば#n)の、移動元の稼働サーバ(例えばSV11)にコンテナ消去命令を通知し、これを受けた移動元の稼働サーバSV11から該当コンテナ#nが消去される。
更に、ステップS8において、コンテナ増減制御部41bは、移動先の稼働サーバSV12にコンテナ起動命令を通知し、これを受けた移動先の稼働サーバSV12の該当コンテナ#nが起動する。この後、ステップS9において、コンテナ増減制御部41bは、そのサーバ増設結果に応じてコンテナリスト43を更新する。
次に、図9を参照してコンテナ減少時のサーバ増減動作について説明する。
ステップS11において、例えば稼働サーバSV11にコンテナ#1,#2が配置され、サーバSV12にコンテナ#3が配置されていた状態から、稼働サーバSV11上のコンテナ#1がリクエストを受ける必要が無くなったとする。
ステップS12において、当該サーバSV11のコンテナ起動消去部55aによりコンテナ#1が消去する。この際に、ステップS13において、管理サーバ40のサーバ情報収集部42bにより、その消去コンテナ#1がコンテナリスト43から削除される。
次に、ステップS14において、配置先計算部41aがコンテナ最適配置計算(再配置計算)を行い、消去コンテナ#1以外のコンテナ#2〜#nの配置先サーバSVを決定する。
次に、ステップS15において、コンテナ増減制御部41bが、その計算結果に応じて、サーバSV12のコンテナ(例えば#2)をサーバSV11に移動し、この移動元コンテナ#2をサーバSV12から消去する。
更に、ステップS16において、コンテナ増減制御部41bは、移動先の稼働サーバSV11にコンテナ起動命令を通知し、これを受けた移動先の稼働サーバSV11の該当コンテナ#2を起動する。
次に、ステップS17において、配置先計算部41aは、上記ステップS14でのコンテナの配置先計算の結果において、サーバ台数が減少したか否かを判定する。この判定結果、サーバ台数が減少していれば、配置先計算部41aは、ステップS18において、サーバ(例えばSV12)を減設し、サーバリスト44内{図6(a)}のサーバSV12に更新フラグ「減設」を設定する。この後、ステップS19へ進む。
一方、上記ステップS17の判定結果、サーバ台数に変化なし又は増加している場合、ステップS19へ進む。ステップS19において、コンテナ増減制御部41bは、そのサーバ減設結果に応じてコンテナリスト43を更新する。
次に、図10を参照してコンテナ再配置計算(コンテナ最適配置計算)の処理動作について説明する。このコンテナ再配置計算は、上述した図8のステップS4及び図9のステップS14の再配置計算であり、配置先計算部41aが行う。
ステップS21において、n台のコンテナを優先度等の所定のパラメータに応じて並び替える。優先度は、例えばCPU及びメモリの合計の使用率が多い順である。次に、その並び替えたコンテナ#1〜#nを、1番目から最終のn番目までコンテナ毎に、前述の最大適合率の1台のサーバを選択する。これは、ステップS22〜S30の間で行なわれる。
まず、ステップS22において、1番目のコンテナ#1を用い、次に、ステップS23において、そのコンテナ#1に最も適合するサーバを、1番目から最終のm番目まで1つずつ組合せる。最初は、ステップS23において、コンテナ#1にサーバ(例えば*1)を組合せる。
次に、ステップS24において、上記ステップS23での組合せられたサーバ*1にコンテナ#1を配置した際に、コンテナ#1がサーバ*1に配置可能か否かを判定する。この結果、配置不可能(No)であれば、ステップS28において、次の2番目のサーバ*2を組合せることを指示し、ステップS23に戻って2番目のサーバ*2を選択し、ステップS24において、コンテナ#1がサーバ*2に配置可能か否かを判定する。
この判定結果、配置可能(Yes)であれば、ステップS25において、適合率の計算を行う。この計算では、サーバ*2のリソース残容量ベクトルと、コンテナ#1のリソース使用量ベクトルとの双方を単位ベクトル化し、この双方の単位ベクトルの内積を計算して適合率を求める。
ステップS26において、上記ステップS25で求めた適合率が、最大適合率か否かを判定する。最初は、最大適合率(Yes)と判定され、ステップS27において、予め設定された最大適合率の初期値(例えば「0」)が、その求められた最大適合率に更新される。この更新後、ステップS28において、次の3番目のサーバ*3を組合せることを指示し、ステップS23に戻って3番目のサーバ*3を選択し、ステップS24において、コンテナ#1がサーバ*3に配置可能か否かを判定する。
この判定結果、配置可能(Yes)であれば、ステップS25において、上記同様に適合率の計算を行って適合率を求める。ステップS26において、その求めた適合率が、最大適合率と判定されれば、ステップS27において、最大適合率が更新され、ステップS28へ進む。
一方、ステップS26の結果、最大で無いと判定された場合、ステップS28へ進む。ステップS28において、次の4番目のサーバ*4を組合せることを指示し、ステップS23に戻って4番目のサーバ*4を選択し、ステップS24において、コンテナ#1がサーバ*4に配置可能か否かを判定する。
このようにステップS23〜S28の処理を、最後のサーバ*mまで1つずつ順番に繰り返した後、ステップS29において、コンテナ#1を最大適合率のサーバ*kに配置する。
この具体例を説明する。まず、コンテナ#1に対して、サーバ*2は適合率が「2」、サーバ*3は「3」、サーバ*4は「1」、サーバ*5は「4」であるとする。この場合、最初の適合率計算では、サーバ*2は「2」と計算され、次のサーバ*3では「3」と計算されるので、最大適合率は「3」に更新される。次の計算でサーバ*4では「1」と計算され、この場合、最大適合率は更新されずにそのまま「3」となる。次にサーバ*5で「4」と計算されると、最大適合率は「4」に更新される。このようにコンテナ#1に対して全てのサーバ*1〜*mの中から最大適合率のサーバ*kを選択し、このサーバ*kにコンテナ#1を配置する。
このような配置後、ステップS30において、次の2番目のコンテナ#2を組合せることを指示し、ステップS22に戻って2番目のコンテナ#2を選択する。次に、ステップS23において、そのコンテナ#2に最初のサーバ*1を組合せ、ステップS24において、コンテナ#2がサーバ*1に配置可能か否かを判定する。以降、上述のステップS25〜S27の処理を行った後、ステップS28において次のサーバ*2を指示する。このステップS23〜S28の処理を最後のサーバ*mまで繰り返した後、ステップS29において、コンテナ#2を、最大適合率のサーバ*hに配置する。この配置後、ステップS30において、次の3番目のコンテナ#3を組合せることを指示する。
このようにコンテナ#1〜#n毎に、1つずつサーバ*1〜*mを組合せて最大適合率のサーバ*hを検出し、この検出した最大適合率のサーバ*hに該当コンテナを配置する処理を、最後のコンテナ#n及びサーバ*mまで行う。これによって、個々のコンテナ#1〜#nが、最大適合率のサーバ*hに配置される。
<実施形態の効果>
以上説明したように、本実施形態のクラスタ内リソース管理システム10は、アプリケーションをホストするコンテナ#1〜#nへのリクエストの変動に応じ、複数のサーバSV11〜SV14,SV21〜SV24が設置されたクラスタ20内で、コンテナ#1〜#nを各サーバSV11〜SV14,SV21〜SV24に最適配置するシステムである。
本実施形態の特徴は、システム10が次の処理を行う管理サーバ40を備えることにある。即ち、管理サーバ40は、仮想インスタンスとしてのコンテナ#1〜#nのリソース使用量を保持するコンテナリスト43を記憶する記憶手段と、コンテナリスト43に保持されたコンテナ#1〜#nのリソース使用量をベクトル化したリソース使用量ベクトルと、このリソース使用量ベクトルを有するコンテナ#1〜#nを配置する候補となるサーバSV11〜SV14のリソース残容量ベクトルとの双方を単位ベクトル化し、双方の単位ベクトルの内積を求め、内積が最大となるサーバSV11〜SV14へコンテナ#1〜#nを配置する制御を行うコンテナ配置先計算制御部(計算制御手段)41を有する。
この構成によれば、コンテナ#1〜#nの使用量ベクトルと、コンテナ#1〜#nを稼働サーバSV11〜SV14に配置した際のサーバSV11〜SV14の残容量ベクトルとの双方を単位ベクトル化することで、双方のベクトルの大きさが同じになる。この同じ大きさの双方の単位ベクトルの内積を取ることで、稼働サーバSV11〜SV14の残容量ベクトルの絶対値が内積結果に次の悪影響を及ぼさなくなる。
悪影響とは、本来であれば、コンテナ#1〜#nの使用量ベクトルとの角度差が小さい残容量ベクトルの稼働サーバSV11〜SV14に、コンテナ#1〜#nを配置した方が、配置後のサーバリソースの残容量がそれまでの容量に対して変化が少ない。つまり、双方のベクトルの角度差が小さい方がその後の仮想インスタンス配置の観点で有利となる。しかし、双方のベクトルの内積を求めた場合、ベクトルが大きい使用量ベクトルを有するコンテナ#1〜#nの方が、上記の角度差が大きくても、内積が大きくなってしまうケースが生じる。このため、残容量ベクトルの絶対値の大きい方のサーバSV11〜SV14が、コンテナ#1〜#nの配置先として選択されてしまう。
しかし、本実施形態では、サーバSV11〜SV14の残容量ベクトルの絶対値が、双方のベクトルの内積結果に悪影響を及ぼさないように単位ベクトル化したので、角度差がより小さいのみの判定でコンテナ#1〜#nのサーバSV11〜SV14への最適配置を決定することができる。このため、コンテナ#1〜#nのサーバSV11〜SV14への最適配置を行うことができる。
また、管理サーバ40のコンテナ配置先計算制御部41は、リクエストの変動に応じた新規のコンテナ#1〜#nが、稼働中のサーバSV11〜SV14に配置不可能な場合に、稼働中のサーバSV11〜SV14と、新規のコンテナ#f用のサーバを含めた稼働中のサーバSV11〜SV14における全てのコンテナ#1〜#nとに対して、上述の単位ベクトル化及び内積が最大となるサーバSV11〜SV14を求める計算を行い、この計算の結果、稼働対象のサーバSV11〜SV14の数が増加していれば、この増加した数の停止中のサーバSV21を起動させて増加分のサーバSV21とする制御を行うようにした。
この構成によれば、新規のリクエストに応じたコンテナ#1〜#nの増加時に、この増加したコンテナ#1〜#nを最適配置可能に、サーバSV21を増設することができる。
また、管理サーバ40のコンテナ配置先計算制御部41は、稼働中のサーバSV11〜SV14からコンテナ#1〜#nが消去された際に、稼働中のサーバSV11〜SV14と、稼働中のサーバSV11〜SV14における消去後の全てのコンテナ#1〜#nとに対して、上述の単位ベクトル化及び内積が最大となるサーバSV11〜SV14を求める計算を行い、この計算の結果、稼働対象のサーバSV11〜SV14の数が減少していれば、減少した数の稼働サーバSV14を停止させる制御を行うようにした。
この構成によれば、稼働中のサーバSV11〜SV14上のコンテナ#1〜#nがリクエストを受ける必要が無くなった等の理由により、稼働中のサーバSV11〜SV14からコンテナ#1が消去された際に、消去後の全てのコンテナ#2〜#nが最適に配置されるサーバSV11〜SV14を計算する。この計算結果、稼働対象のサーバSV11〜SV14の数が減少していれば、この減少対象のサーバSV14を停止させるようにしたので、コンテナ#2〜#nを最適配置可能に、サーバSV14を減少させることができる。
ここで、システム10において、次の条件でシミュレーションを行った場合に、図11に示す効果が得られた。
シミュレーション条件は、各サーバ(SV11〜SV14,SV21〜SV24)のリソース及びコンテナ(#1〜#n)の使用リソースをCPUとメモリとの2次元とした。また、サーバは固定容量のものを用意し、コンテナは一定量のリソースを消費するものを複数種類(CPU及びメモリ等)用意した。サーバとコンテナの容量の関係は、1台のサーバにおよそ3〜4程度のコンテナが載せることのできるものとした。
コンテナの生成及び消滅をランダムに3000回行い、その度に、下記方式(1)〜(3)の何れかにより、コンテナ最適配置計算により再配置を行い、リソース使用率(CPU及びメモリ使用率の平均値)を測定した。
方式(1)は、コンテナ配置先の評価に差分ベクトルを用いる方式である。
方式(2)は、コンテナ配置先の評価に内積を用いる方式である。
方式(3)は、コンテナ配置先の評価に単位ベクトル化した後の内積を用いる方式である。
各方式(1)〜(3)を図11の横軸に示し、また、縦軸にリソース使用率の平均(棒グラフ)及び標準偏差(誤差棒)を示した。
コンテナの生成及び消滅頻度は、CPU重視のコンテナとメモリ重視のコンテナが同等の割合で生成及び消滅とした条件において、コンテナは400程度生成するものとした。
この結果、図11に各方式(1)〜(3)の棒グラフで示すように、(3)、(1)、(2)の順に、コンテナのサーバリソース使用率が高くなっており、本発明による方式(3)では、他の方式(1)よりも6%程度の改善がみられる。また、各方式(1)〜(3)の誤差棒で示す標準偏差も、方式(3)が最もバラツキが小さく良好である結果が得られた。
次に、クラスタ内リソース管理方法について説明する。この方法では、アプリケーションをホストするコンテナ#1〜#nへのリクエストの変動に応じ、複数のサーバSV11〜SV14,SV21〜SV24が設置されたクラスタ内でコンテナ#1〜#nをサーバSV11〜SV14,SV21〜SV24に配置する管理サーバ40を有する。
管理サーバ40は、仮想インスタンスとしてのコンテナ#1〜#nのリソース使用量を保持するコンテナリスト43を記憶する記憶手段を備えており、コンテナリスト43に保持されたコンテナ#1〜#nのリソース使用量をベクトル化したリソース使用量ベクトルと、このリソース使用量ベクトルを有するコンテナ#1〜#nを配置する候補となるサーバSV11〜SV14のリソース残容量ベクトルとの双方を単位ベクトル化するステップと、単位ベクトル化による双方の単位ベクトルの内積を求めるステップと、内積が最大となるサーバSV11〜SV14へ該当コンテナ#1〜#nを配置するステップとを実行するようにした。
この方法によれば、上述したシステム10の効果と同様に、コンテナ#1〜#nの使用量ベクトルと稼働サーバSV11〜SV14の残容量ベクトルとの双方の単位ベクトル化後の角度差が、より小さいサーバSV11〜SV14へコンテナ#1〜#nを配置する。従って、コンテナ#1〜#nのサーバSV11〜SV14への最適配置を行うことができる。
また、本実施形態のコンピュータを実行するプログラムについて説明する。コンピュータは、アプリケーションをホストするコンテナ#1〜#nへのリクエストの変動に応じ、複数のサーバSV11〜SV14,SV21〜SV24が設置されたクラスタ内でコンテナ#1〜#nをサーバSV11〜SV14に配置する管理サーバ40であるとする。
このプログラムは、上記コンピュータを、仮想インスタンスとしてのコンテナ#1〜#nのリソース使用量を保持するコンテナリスト43を記憶する手段、その記憶されたコンテナ#1〜#nのリソース使用量をベクトル化したリソース使用量ベクトルと、このリソース使用量ベクトルを有するコンテナ#1〜#nを配置する候補となるサーバSV11〜SV14のリソース残容量ベクトルとの双方を単位ベクトル化する手段、単位ベクトル化による双方の単位ベクトルの内積を求める手段、内積が最大となるサーバSV11〜SV14へ該当コンテナ#1〜#nを配置する手段として機能させる。
このプログラムによれば、上述したシステム10の効果と同様に、コンテナ#1〜#nのサーバSV11〜SV14への最適配置を行うことができる。
その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
10 クラスタ内リソース管理システム
11 クライアント端末機
12 インターネット
13,23 ローカルネット
14 ロードバランサ
20 クラスタ
21 稼働サーバ群
22 サーバプール
40 管理サーバ
41 コンテナ配置先計算制御部(計算制御手段)
41a 配置先計算部
41b コンテナ増減制御部
41c コンテナ情報収集部
42 サーバ制御部
42a サーバ起動停止部
42b サーバ情報収集部
43 コンテナリスト
44 サーバリスト
51 監視部
51a 物理リソース監視部
51b コンテナリソース監視部
52 コンテナ部
#1〜#n コンテナ
52a コンテナエンジン
53 個別コンテナリスト
54 外部連携部
54a 配置情報受理部
54b サーバ情報提供部
55 制御部
55a コンテナ起動消去部
56 自サーバ起動停止部
SV11〜SV14 稼働サーバ
SV21〜SV24 停止サーバ

Claims (6)

  1. アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置するクラスタ内リソース管理システムであって、
    前記仮想インスタンスのリソース使用量を記憶する記憶手段と、前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、当該リソース使用量ベクトルを有する仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化し、当該双方の単位ベクトルの内積を求め、当該内積が最大となるサーバへ当該仮想インスタンスを配置する制御を行う計算制御手段とを有する管理サーバを備え
    前記計算制御手段は、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替え、この並び替えられた順で仮想インスタンス毎に、仮想インスタンスが配置可能で前記内積が最大となる最大適合率の前記サーバを検出し、この検出されたサーバに当該最大適合率の仮想インスタンスを配置する処理を行う
    ことを特徴とするクラスタ内リソース管理システム。
  2. 前記計算制御手段は、前記リクエストの変動に応じた新規の仮想インスタンスが、稼働中のサーバに配置不可能な場合に、前記稼働中のサーバと、前記新規の仮想インスタンス用のサーバを含めた稼働中のサーバにおける全ての仮想インスタンスとに対して、前記双方を単位ベクトル化し、当該双方の単位ベクトルの内積が最大となるサーバを求める計算を行い、この計算の結果、稼働対象のサーバ数が増加していれば、当該増加した数の停止中のサーバを起動させて増加分のサーバとする制御を行う
    ことを特徴とする請求項1に記載のクラスタ内リソース管理システム。
  3. 前記計算制御手段は、稼働中のサーバから前記仮想インスタンスが消去された際に、前記稼働中のサーバと、当該稼働中のサーバにおける前記消去後の全ての仮想インスタンスとに対して、前記双方を単位ベクトル化し、当該双方の単位ベクトルの内積が最大となるサーバを求める計算を行い、この計算の結果、稼働対象のサーバ数が減少していれば、当該減少した数の稼働サーバを停止させる制御を行う
    ことを特徴とする請求項1に記載のクラスタ内リソース管理システム。
  4. アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバが行うクラスタ内リソース管理方法であって、
    前記管理サーバは、
    前記仮想インスタンスのリソース使用量を記憶する記憶手段を備えており、
    前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、前記仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化するステップと、
    複数の前記仮想インスタンスを予め定められた優先度に応じて並び替えるステップと、
    前記並び替えられた順で仮想インスタンス毎に、前記単位ベクトル化による前記双方の単位ベクトルの内積を求め、仮想インスタンスが配置可能で当該内積が最大となる最大適合率の前記サーバを検出するステップと、
    前記検出されたサーバに当該最大適合率の仮想インスタンスを配置するステップと
    を実行することを特徴とするクラスタ内リソース管理方法。
  5. アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバであって、
    前記仮想インスタンスのリソース使用量を記憶する記憶手段と、
    前記記憶手段に記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、当該リソース使用量ベクトルを有する仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化し、当該双方の単位ベクトルの内積を求め、当該内積が最大となるサーバへ当該仮想インスタンスを配置する制御を行う計算制御手段とを備え
    前記計算制御手段は、複数の前記仮想インスタンスを予め定められた優先度に応じて並び替え、この並び替えられた順で仮想インスタンス毎に、仮想インスタンスが配置可能で前記内積が最大となる最大適合率の前記サーバを検出し、この検出されたサーバに当該最大適合率の仮想インスタンスを配置する処理を行う
    ことを特徴とする管理サーバ。
  6. アプリケーションをホストする仮想インスタンスへのリクエストの変動に応じ、複数のサーバが設置されたクラスタ内で仮想インスタンスをサーバに配置する管理サーバとしてのコンピュータを、
    前記仮想インスタンスのリソース使用量を記憶する手段、
    前記記憶された仮想インスタンスのリソース使用量をベクトル化したリソース使用量ベクトルと、前記仮想インスタンスを配置する候補となるサーバのリソース残容量ベクトルとの双方を単位ベクトル化する手段、
    複数の前記仮想インスタンスを予め定められた優先度に応じて並び替える手段、
    前記並び替えられた順で仮想インスタンス毎に、前記単位ベクトル化による前記双方の単位ベクトルの内積を求め、仮想インスタンスが配置可能で当該内積が最大となる最大適合率の前記サーバを検出する手段、
    前記検出されたサーバに当該最大適合率の仮想インスタンスを配置する手段
    として機能させるためのプログラム。
JP2015150203A 2015-07-30 2015-07-30 クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム Active JP6431454B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015150203A JP6431454B2 (ja) 2015-07-30 2015-07-30 クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015150203A JP6431454B2 (ja) 2015-07-30 2015-07-30 クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム

Publications (2)

Publication Number Publication Date
JP2017033117A JP2017033117A (ja) 2017-02-09
JP6431454B2 true JP6431454B2 (ja) 2018-11-28

Family

ID=57988787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015150203A Active JP6431454B2 (ja) 2015-07-30 2015-07-30 クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム

Country Status (1)

Country Link
JP (1) JP6431454B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019139533A (ja) * 2018-02-13 2019-08-22 日本電信電話株式会社 配置構成装置、および、配置構成方法
JP2019211889A (ja) 2018-06-01 2019-12-12 日本電信電話株式会社 リソース予約管理装置およびリソース予約管理方法
JP2019211890A (ja) * 2018-06-01 2019-12-12 日本電信電話株式会社 リソース予約管理装置およびリソース予約管理方法
KR101987661B1 (ko) * 2018-07-19 2019-06-11 나무기술 주식회사 클라우드 플랫폼에서의 클러스터 리소스 할당 및 관리 방법
CN111143050B (zh) * 2018-11-02 2023-09-19 中移(杭州)信息技术有限公司 一种容器集群调度的方法和设备
JP7513866B2 (ja) * 2020-03-04 2024-07-10 富士通株式会社 移動対象コンテナ決定方法、及び移動対象コンテナ決定プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117613B2 (en) * 2009-04-08 2012-02-14 Microsoft Corporation Optimized virtual machine migration mechanism

Also Published As

Publication number Publication date
JP2017033117A (ja) 2017-02-09

Similar Documents

Publication Publication Date Title
JP6431454B2 (ja) クラスタ内リソース管理システム、クラスタ内リソース管理方法、管理サーバ及びプログラム
US10635664B2 (en) Map-reduce job virtualization
US8051032B2 (en) System and method for loading records into a partitioned database table
US9286001B2 (en) Effective range partition splitting in scalable storage
JP6075226B2 (ja) プログラム、仮想マシン管理方法および情報処理装置
JP6183374B2 (ja) データ処理システム、データ処理方法およびプログラム
US10152499B1 (en) Database replication scaling
US10425470B1 (en) Shadowed throughput provisioning
US20100250734A1 (en) Server reassignment support system and server reassignment support method
CN104952032B (zh) 图的处理方法、装置以及栅格化表示及存储方法
CN110347398A (zh) 一种应用程序的打包方法和装置
JP4748950B2 (ja) 記憶領域管理方法及びシステム
US20180046489A1 (en) Storage medium, method, and device
US10372370B2 (en) Metadata load distribution management
JP5609730B2 (ja) 情報処理プログラム及び方法、転送処理装置
US12067413B2 (en) Apparatus for determining resource migration schedule
Lee et al. Shard manager: A generic shard management framework for geo-distributed applications
CN103918239A (zh) 负载均衡方法、装置、系统及计算机可读介质
US20130138686A1 (en) Device and method for arranging query
US20120166744A1 (en) Memory management method, computer system, and storage medium having program stored thereon
US20170262310A1 (en) Method for executing and managing distributed processing, and control apparatus
JPWO2013171944A1 (ja) 仮想マシン管理システム、仮想マシン管理方法およびプログラム
CN106156049A (zh) 一种数据读取的方法和系统
JP5914699B2 (ja) マイグレーションによるデータベースの作業負荷バランシング
JP2011192049A (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170630

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180320

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180507

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181102

R150 Certificate of patent or registration of utility model

Ref document number: 6431454

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150