統合率とサービスレベルのバランスを取る

オーバーコミットやリソースプールといった技術を導入すれば、同じホスト台数で今までより多くの仮想マシンを稼働させ、統合率を向上することができるようになるでしょう。

しかし、ここで、重要な問題が一つ出てきます――「いまの環境で、どこまで統合率を上げられるのか」――ということです。

高い統合率には、負の側面があります。統合率が上がれば上がるほど、限られたリソースを多くの仮想マシンで取り合うことになるため、パフォーマンスへの影響が少しずつ増えていくのです。

言い換えれば、統合率とサービスレベルはトレードオフの関係にあります。どこまでのサービスレベル低下を許容できるか、それが決められないと、どこまで統合率を上げていいのかも決まらないということです。

ただ、日本では統合率がかなり低めのシステムが多い様に見受けられます。恐らく、ほとんどのシステムでは、サービスレベル低下を心配するより、オーバーコミットやリソースプールといった技術をもっと活用して統合率を向上することをまず検討すべきでしょう。統合率がある程度向上してきたら、どこまでのサービスレベル低下を許容できるかの検討が合わせて必要になります。

最適な統合率の求め方

では、ほどよいサービスレベルと統合率のバランス、すなわち、システムにとって最適な統合率とはどのように求めたら良いのでしょうか。ここでは、1つの考え方を提示したいと思います。

まず、クラスタ全体のサービスレベルをコントロールするために、リソースのバッファ(予備リソース)の量をコントロールします。バッファの量としてどれくらいが適切かは環境によりますが、まずは大きめな値を設定して、余裕があるようなら後で減らしていくのがよいでしょう。なお、クラスタ全体でのサービスレベルとは別に、個々の仮想マシンレベルで、リソース予約などを使ってもっと細やかなコントロールをすることも可能です。

バッファ量を決めたら、次に残り容量を求めます。全体の物理容量からバッファ量を引くと利用可能容量を求められ、ここから使用済の容量を引くと、残り容量が計算できます。この残り容量が、統合率を向上するために使えるリソースです。

そして、残り容量から最適な統合率を導くために、「仮想マシンの平均プロファイル」を計算します。仮想マシンの平均プロファイルとは、VMの平均的なリソース割当量(使用量)のことです。残り容量をVMの平均プロファイルで割れば、あといくつ仮想マシンを投入可能なのかを推定できます。ここから、最適な統合率を導くことができるわけです。

最適な統合率を求める際の課題

このように、最適な統合率を求める方法は、非常にシンプルです。残り容量と、VMの平均プロファイルを計算すれば、簡単に求まります。

しかし、仮想環境にて、残り容量とVMの平均プロファイルを手動で計算するのは結構複雑です。

理由の1つは、オーバーコミットです。オーバーコミットをしていなければ、各仮想マシンのサイズを単純に足していくことで、使用済容量が簡単に求まります。一方で、オーバーコミットをしている場合は、個々の仮想マシン(もしくはホスト)の実際の利用量を足していく必要があります。ただ、実際の利用量は時と共に変わります。使用済容量をどう定義するのか、まずそこからスタートする必要があります。

理由の2つ目は、リソースプールです。仮想マシンがホスト間で負荷分散のために移動するので、ホストのリソースを単純にモニタリングするだけでは対応できません。

残り容量を簡単に求めるためにオーバーコミットやリソースプールを使わないという選択肢もありますが、これは統合率の向上を行うことをあきらめることになり、本末転倒になってしまいます。

オーバーコミットやリソースプールといった技術を使いながら、最適な統合率を簡単に求める方法があるのですが、これは次回の記事にて紹介することにしたいと思います。