(57)【要約】【課題】最適なサーバに負荷を割り振る。【解決手段】実行される負荷がロードバランサ１０１のＣＰＵ１１０にて実行され、当該負荷が実行された際のＣＰＵ使用率とメモリ１１１に予め設定されたＣＰＵ使用率閾値とが比較部１１２にて比較されてＣＰＵ使用率がＣＰＵ使用率閾値よりも低い場合、またはＣＰＵ実行待ち行列が発生しない場合、振り分け部１１３によって、当該負荷が処理能力の低い小規模サーバ１０３−１〜１０３−ｎに振り分けられ、それ以外の場合は、当該負荷が処理能力の高い大規模サーバ１０２に振り分けられる。【選択図】図２
2008097418.tif 000002
【特許請求の範囲】
【請求項１】
処理能力が高いサーバである大規模サーバと、前記大規模サーバよりも処理能力が低いサーバである小規模サーバとに接続され、実行される負荷を前記大規模サーバと前記小規模サーバとのどちらか一方に振り分けるロードバランサであって、
前記負荷を実行し、該負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較して前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、またはＣＰＵ実行待ち行列が発生しない場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分けるロードバランサ。
【請求項２】
請求項１に記載のロードバランサにおいて、
前記負荷を前記小規模サーバに振り分ける場合、当該負荷を複数の前記小規模サーバに分散させることを特徴とするロードバランサ。
【請求項３】
実行される負荷を、処理能力が高いサーバである大規模サーバと、前記大規模サーバよりも処理能力が低いサーバである小規模サーバとのどちらか一方に振り分ける負荷振り分け方法であって、
前記負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較する処理と、
前記負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較した結果、前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分ける処理と、
ＣＰＵ実行待ち行列が発生しない場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分ける処理とを有する負荷振り分け方法。
【請求項４】
請求項３に記載の負荷振り分け方法において、
前記負荷を前記小規模サーバに振り分ける場合、該負荷を複数の前記小規模サーバに分散させる処理を有することを特徴とする負荷振り分け方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行される負荷をサーバに振り分けるロードバランサ及び負荷振り分け方法に関する。
【背景技術】
【０００２】
従来、多くの負荷を並行して実行するために、当該負荷を複数のＣＰＵに振り分け、振り分けられたＣＰＵにて当該負荷を実行させる技術が用いられている。その際、振り分け先であるＣＰＵの現在の稼働状況に応じて負荷を振り分けるシステムが考えられている（例えば、特許文献１参照。）。
【特許文献１】特開平０９−２１２４６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の技術においては、複数の同規模のサーバに対して負荷を分散（スケールアウト）させることしかできない。実際の負荷によっては、このような方法の分散（スケールアウト）では解決できず、大規模な（処理能力の高い）サーバを使用（スケールアップ）しなければならないケースも多いため、そのような負荷に対しては適切なサーバ環境を提供することができないという問題点がある。
【０００４】
また、特許文献１に記載されたシステムにおいては、ＣＰＵの現在の稼働状況に応じた負荷の振り分けが行われるため、例えば、大きな負荷の振り分けが行われるときに小規模な（処理能力の低い）ＣＰＵに空きが多い場合、大きな負荷を小規模なサーバへ振り分けてしまうという問題点がある。
【０００５】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、負荷の大きさに適したサーバに当該負荷を振り分けることができるロードバランサ及び負荷振り分け方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は、
処理能力が高いサーバである大規模サーバと、前記大規模サーバよりも処理能力が低いサーバである小規模サーバとに接続され、実行される負荷を前記大規模サーバと前記小規模サーバとのどちらか一方に振り分けるロードバランサであって、
前記負荷を実行し、該負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較して前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、またはＣＰＵ実行待ち行列が発生しない場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分ける。
【０００７】
また、前記負荷を前記小規模サーバに振り分ける場合、当該負荷を複数の前記小規模サーバに分散させることを特徴とする。
【０００８】
また、実行される負荷を、処理能力が高いサーバである大規模サーバと、前記大規模サーバよりも処理能力が低いサーバである小規模サーバとのどちらか一方に振り分ける負荷振り分け方法であって、
前記負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較する処理と、
前記負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較した結果、前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分ける処理と、
ＣＰＵ実行待ち行列が発生しない場合、当該負荷を前記小規模サーバに振り分け、それ以外の場合は、当該負荷を前記大規模サーバに振り分ける処理とを有する。
【０００９】
また、前記負荷を前記小規模サーバに振り分ける場合、該負荷を複数の前記小規模サーバに分散させる処理を有することを特徴とする。
【００１０】
上記のように構成された本発明においては、実行される負荷がロードバランサにおいて実行され、当該負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較して前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、またはＣＰＵ実行待ち行列が発生しない場合、当該負荷が処理能力の低い小規模サーバに振り分けられ、それ以外の場合は、当該負荷が処理能力の高い大規模サーバに振り分けられる。
【００１１】
これにより、実行される負荷に適したサーバに、当該負荷を振り分けることが可能となる。
【発明の効果】
【００１２】
以上説明したように本発明においては、実行される負荷をロードバランサが実行し、当該負荷が実行された際のＣＰＵ使用率と予め設定されたＣＰＵ使用率閾値とを比較して前記ＣＰＵ使用率が前記ＣＰＵ使用率閾値よりも低い場合、またはＣＰＵ実行待ち行列が発生しない場合、当該負荷を処理能力の低い小規模サーバに振り分け、それ以外の場合は、当該負荷を処理能力の高い大規模サーバに振り分ける構成としたため、負荷の大きさに適したサーバに当該負荷を振り分けることができる。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１４】
図１は、本発明のロードバランサの実施の一形態を示す図である。
【００１５】
本形態は図１に示すように、ロードバランサ１０１と、大規模サーバ１０２と、複数の小規模サーバ１０３−１〜１０３−ｎとから構成されている。
【００１６】
ロードバランサ１０１は、実行される負荷を大規模サーバ１０２と小規模サーバ１０３−１〜１０３−ｎとのどちらかに振り分ける。
【００１７】
大規模サーバ１０２は、ロードバランサ１０１と接続され、ロードバランサ１０１によって大規模サーバ１０２に振り分けられた負荷を実行する。
【００１８】
小規模サーバ１０３−１〜１０３−ｎは、ロードバランサ１０１と接続され、ロードバランサ１０１によって小規模サーバ１０３−１〜１０３−ｎに振り分けられた負荷を実行する。
【００１９】
なお、大規模サーバ１０２は、小規模サーバ１０３−１〜１０３−ｎにおける処理能力よりも高い処理能力を有するサーバである。
【００２０】
図２は、図１に示したロードバランサ１０１の一構成例を示す図である。
【００２１】
図１に示したロードバランサ１０１は図２に示すように、メモリ１１１と、比較部１１２と、振り分け部１１３と、これらを制御するＣＰＵ１１０とから構成されている。なお、図２においては、本発明に関わる構成要素のみを示している。
【００２２】
メモリ１１１は、ＣＰＵ１１０によってワークメモリとして使用されるメモリであり、また、ロードバランサ１０１にて実行されるプログラムや、ＣＰＵ使用率閾値（詳細は後述）を記憶する。
【００２３】
比較部１１２は、現在のＣＰＵ使用率と、メモリ１１１に予め設定されて記憶されているＣＰＵ使用率閾値とを比較する。
【００２４】
振り分け部１１３は、ＣＰＵ１１０の指示に基づいて、実行される負荷を大規模サーバ１０２と小規模サーバ１０３−１〜１０３−ｎとのどちらかに振り分ける。
【００２５】
また、ＣＰＵ１１０は、大規模サーバ１０２及び小規模サーバ１０３−１〜１０３−ｎに設けられたＣＰＵと同じ種類のＣＰＵである。
【００２６】
以下に、上記のように構成されたロードバランサにおける負荷振り分け方法について説明する。
【００２７】
図３は、図２に示したロードバランサ１０１における負荷振り分け方法を説明するためのフローチャートである。
【００２８】
負荷がロードバランサ１０１に投入されると、当該負荷がロードバランサ１０１のＣＰＵ１１０にて実行される（ステップＳ１）。
【００２９】
負荷がＣＰＵ１１０にて実行されると、そのときのメモリ１１１のメモリ使用率が算出される。このメモリ使用率の算出方法は、従来の方法と同様であるため、ここでは詳細には記述しない。
【００３０】
そして、算出されたメモリ使用率に基づいて、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合に小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が高くなるかどうかが、ＣＰＵ１１０によって判断される（ステップＳ２）。ここで、算出されたメモリ使用率に基づいて、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合に小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が高くなるかどうかを判断するには、負荷が実行されている際のロードバランサ１０１におけるメモリ使用率から当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合の小規模サーバ１０３−１〜１０３−ｎのメモリ使用率を算出する必要がある。
【００３１】
これを算出するために、負荷が実行されている際のロードバランサ１０１におけるメモリ使用率と、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合の小規模サーバ１０３−１〜１０３−ｎのメモリ使用率との対応付けを用いても良い。
【００３２】
図４は、図２に示したメモリ１１１に予め記憶された、負荷が実行されている際のロードバランサ１０１におけるメモリ使用率と、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合の小規模サーバ１０３−１〜１０３−ｎのメモリ使用率との対応付けの一例を示す図である。
【００３３】
図４に示すように、負荷が実行されている際のロードバランサ１０１におけるメモリ使用率と、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合の小規模サーバ１０３−１〜１０３−ｎのメモリ使用率とが、予め対応付けられてメモリ１１１に記憶されている。例えば、負荷が実行されているロードバランサ１０１におけるメモリ使用率が１０％である場合、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行されると、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が３０％になることが記憶されている。また、負荷が実行されているロードバランサ１０１におけるメモリ使用率が２０％である場合、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行されると、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が５０％になることが記憶されている。また、負荷が実行されているロードバランサ１０１におけるメモリ使用率が４０％である場合、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行されると、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が９０％になることが記憶されている。また、負荷が実行されているロードバランサ１０１におけるメモリ使用率が５０％を超えた場合、当該負荷が小規模サーバ１０３−１〜１０３−ｎにて実行されると、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が１００％を超えてしまうことが記憶されている。
【００３４】
また、図４に示した対応付けよりもさらに細かい対応付け、つまり多くの段階が設定されている対応付けを用いるものであっても良い。
【００３５】
また、図４に示したような対応付けを用いるものではなく、所定の算出式を用いて、ロードバランサ１０１におけるメモリ使用率から小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が算出されるものであっても良い。
【００３６】
また、図３においては、負荷が小規模サーバ１０３−１〜１０３−ｎにて実行された場合に小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が高くなるかどうかを判断する小規模サーバ１０３−１〜１０３−ｎのメモリ使用率の閾値として、９０％が用いられた場合を例に挙げてステップＳ２として示している。
【００３７】
ステップＳ２にて、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が高くなると判断された場合、ページスワップが発生しているかどうかがＣＰＵ１１０によって判断される（ステップＳ３）。
【００３８】
ステップＳ２にて、小規模サーバ１０３−１〜１０３−ｎのメモリ使用率が高くならないと判断された場合、またはステップＳ３にてページスワップが発生していないと判断された場合、Ｉ／Ｏ待ち行列があるかどうかがＣＰＵ１１０によって判断される（ステップＳ４）。
【００３９】
Ｉ／Ｏ待ち行列がないとＣＰＵ１１０によって判断された場合、メモリ１１１に予め設定されて記憶されているＣＰＵ使用率閾値がＣＰＵ１１０によって読み出され、読み出されたＣＰＵ使用率閾値とＣＰＵ１１０の現在のＣＰＵ使用率とが比較部１１２にて比較される（ステップＳ５）。ここで、ＣＰＵ１１０の現在のＣＰＵ使用率は、従来の方法で算出されるため、その算出方法についてはここでは説明しない。
【００４０】
ＣＰＵ１１０の現在のＣＰＵ使用率が、メモリ１１１から読み出されたＣＰＵ使用率閾値よりも高い場合、ＣＰＵ１１０にてＣＰＵ実行待ち行列があるかどうかが判断される（ステップＳ６）。
【００４１】
ＣＰＵ１１０にてＣＰＵ実行待ち行列がないと判断された場合、振り分け部１１３によって当該負荷が大規模サーバ１０２に振り分けられる（ステップＳ７）。
【００４２】
また、ステップＳ３にてページスワップが発生していると判断された場合も、振り分け部１１３によって当該負荷が大規模サーバ１０２に振り分けられる。
【００４３】
また、ステップＳ４にてＩ／Ｏ待ち行列があると判断された場合も、振り分け部１１３によって当該負荷が大規模サーバ１０２に振り分けられる。
【００４４】
一方、ステップＳ５にてメモリ１１１から読み出されたＣＰＵ使用率閾値とＣＰＵ１１０の現在のＣＰＵ使用率とが比較部１１２にて比較された結果、ＣＰＵ１１０の現在のＣＰＵ使用率が、メモリ１１１から読み出されたＣＰＵ使用率閾値よりも低い場合、振り分け部１１３によって当該負荷が小規模サーバ１０３−１〜１０３−ｎに振り分けられる（ステップＳ８）。
【００４５】
また、ステップＳ６にてＣＰＵ１１０にてＣＰＵ実行待ち行列があると判断された場合も、振り分け部１１３によって当該負荷が小規模サーバ１０３−１〜１０３−ｎに振り分けられる。
【００４６】
以上により、実行される負荷に適したサーバに、当該負荷を振り分けることが可能となる。
【００４７】
また、上述した処理が行われることにより、負荷が大規模サーバ１０２または小規模サーバ１０３−１〜１０３−ｎに振り分けられた後も、継続的に大規模サーバ１０２または小規模サーバ１０３−１〜１０３−ｎにおけるリソース使用状況等のデータがロードバランサ１０１によって採取され、その採取されたデータがロードバランサ１０１にて収集分析されるものも考えられる。
【００４８】
そして、この収集分析が行われた結果、負荷の特徴が負荷投入当初とは異なる場合は、その負荷に対して適切なサーバに当該負荷が再度振り分けられるものであっても良い。
【００４９】
これにより、負荷の特徴に適したサーバに当該負荷が常に割り当てられ続けることが可能となる。
【００５０】
また、ロードバランサ１０１、大規模サーバ１０２及び小規模サーバ１０３−１〜１０３−ｎが同じ種類のＣＰＵが使用されていることを利用して、ハードウェアを仮想化するソフトウェアが導入されたものであっても良い。
【００５１】
この場合、ロードバランサ１０１内で実行された負荷が、大規模サーバ１０２または小規模サーバ１０３−１〜１０３−ｎに振り分けられて実行される際、または当初とは負荷の特徴に変化が生じることで別のサーバに負荷が移行される際に、振り分け元であるロードバランサ１０１や、移行元である大規模サーバ１０２または小規模サーバ１０３−１〜１０３−ｎにて負荷の終了処理を行わずに当該負荷を移行することが可能となる。従来の仮想化ソフトウェアは、同じ規模のサーバ間でＯＳおよびアプリケーション環境を移行することに用いられているが、本実施例においては異なる規模のサーバ間でもＯＳおよびアプリケーション環境の移行にも適用される。
【図面の簡単な説明】
【００５２】
【図１】本発明のロードバランサの実施の一形態を示す図である。
【図２】図１に示したロードバランサの一構成例を示す図である。
【図３】図２に示したロードバランサにおける負荷振り分け方法を説明するためのフローチャートである。
【図４】図２に示したメモリに予め記憶された、負荷が実行されている際のロードバランサにおけるメモリ使用率と、当該負荷が小規模サーバにて実行された場合の小規模サーバのメモリ使用率との対応付けの一例を示す図である。
【符号の説明】
【００５３】
１０１    ロードバランサ
１０２    大規模サーバ
１０３−１〜１０３−ｎ    小規模サーバ
１１０    ＣＰＵ
１１１    メモリ
１１２    比較部
１１３    振り分け部
【図１】
2008097418.tif 000003
【図２】
2008097418.tif 000004
【図３】
2008097418.tif 000005
【図４】
2008097418.tif 000006