仮想マシンを互いに異なる仮想マシンサーバに配置したいケースとして、一般的に以下のような場合が考えられます。
仮想マシンの構成上、同じ仮想マシンサーバ上で動作することができない仮想マシンが存在する。仮想マシンサーバの障害時にはこれらの仮想マシンを非常用ホストに退避させるが、複数台の仮想マシンサーバの障害が発生した場合に、これらの仮想マシンが同じ非常用ホスト上で動作することは避けたい。
仮想マシンに対してクラスタを構築することにより可用性を確保している。これらの仮想マシンを確実に異なる仮想マシンサーバ上で動作するように制限し、クラスタの両系が同時に停止する状況を防ぎたい。
仮想マシンの負荷パターンが同じ仮想マシンが複数存在する。これらの仮想マシンが同一の仮想マシンサーバ上で動作した場合、高負荷により問題が発生する可能性があるため、同じ仮想マシンサーバ上で動作させることは避けたい。
上記の1の要件でシステムを構成した場合について説明します。
次の図は、グループGroupA上の仮想マシンサーバVMサーバ1、VMサーバ2、VMサーバ3、VMサーバ4と、その上で動作するVM1、VM2、VM3、VM4、VM5、VM6において、リソース競合の関係にある一部のVM間でNE制約を設定した場合の例です。ここで、VMサーバ4は「 4.7.20. 非常用ホスト 」 に指定されています。
システムにある業務のうち、業務Aと業務Bの仮想マシンはそれぞれ1つの組となって動作しており、この組になっている2つの仮想マシン間ではリソース競合が存在するため、同一の仮想マシンサーバで動作させた場合に問題が生じます。このため、これらの仮想マシン群を同一の仮想マシンサーバで動作させないことが求められます。
上記を実現するために、これらの仮想マシンの組に対してNEの配置制約を適用します。本例では、VM1とVM2、およびVM3とVM4間でリソース競合が存在しており、このためNE制約はVM1とVM2、およびVM3とVM4の間で設定します。
この配置制約により、各仮想マシンの組は、それぞれ異なる仮想マシンサーバで動作するようになります。次の図のステップ②は、VMサーバ1で障害が発生し、この上で動作していたVMが退避された例です。VMサーバ1上にある仮想マシンのうち、VM1はVM2との間にNE制約がありますが、VM2は非常用ホストであるVMサーバ4外で動作しているため、VM1はVMサーバ4に退避されます。VM5については、制約されていないため、同じくVMサーバ4に退避されます。
次の図のステップ③は、ステップ②の状況からさらにVMサーバ2で障害が発生した状況を示しています。ここで、VM3はVM4との間にNE制約がありますが、VM4は非常用ホストであるVMサーバ4外で動作しているため、VM3はVMサーバ4に退避されます。しかし、VM2はVM1との間にNE制約があり、かつVM1が非常用ホストであるVMサーバ4で動作しているため、VM2は退避されません。
このため、VM2は最終的にはフェイルオーバされず停止された状態となりますが、VM1と同じVMサーバ4で起動することにより、リソース競合が生じてVM1で問題が発生する状況は回避されます。