[Nutanix]アフィニティとアンチアフィニティについて解説

Nutanix
Nutanix logo
スポンサーリンク
スポンサーリンク

はじめに

仮想マシンをNutanixのような複数のノードで冗長化された基盤(HCI)で安定的に動作させるためには、アフィニティなどの考え方を抑えることが大切です。
この記事では、前提となるNutanixのリソース配分機能であるADSについて述べてから、アフィニティとアンチアフィニティについて解説します。

ADSとは

ADSとはAcropolis Dynamic Schedulingの略称で、Nutanixのクラスターリソースを最適に使用することを可能としている機能です。

リソースの使用状況によって、負荷の少ないノード(AHVホスト)へ自動的にライブマイグレーションをしてくれます。

以下のような特徴があります。

  • 15分毎に動作しその時点でのリソース状況を分析する。
  • 15分以上、AHVノードのリソース使用率が85%を超過する場合は、ホットスポットを回避するためマイグレーションがトリガーされる。
  • ストレージのホットスポットの場合、過去40分間のデータを確認。
  • CPUホットスポットの場合、過去10分間の平均CPU使用率を確認。
  • メモリやネットワークについてはADSの監視対象外
  • 一部の機能を有効化している場合(agent VM, PCIe Pass-through, CPU Pass-through, vUMA, vNUMAなど)は対象外となります。他のノードへ自動的にライブマイグレーションしません。

アフィニティ(VM-Host Affinity)

VMが稼働することができるノードを限定する機能です。例えば10個のノードが存在し、順番に1-10号機とします。1-5号機のみで、とあるVMを稼働させたい場合に使用します。

CLIで設定する場合

コマンドラインで行う場合は以下のようなコマンドを投入します。AHVのUUID数は適宜変更してください。

nutanix@CVM:acli vm.affinity_set "VM名" host_list="AHV_UUID1","AHV_UUID2","AHV_UUID3"

※VMHAの設定が1の場合は2つ以上のAHVを選択する必要があります。2つ以上を選択しなければエラーとなります。
※VMHAの設定が2の場合は3つ以上のAHVを選択する必要があります。3つ以上を選択しなければエラーとなります。

VMHAについては次の記事で解説しています。

[Nutanix]VMHA(Virtual Machine High Availability)について解説
NutanixのHA機能であるVMHA(Virtual Machine high Availability)について丁寧に解説します。
GUIで設定する場合

GUIで設定する場合は、Prism Elementで仮想マシンを作成・更新するときに設定項目があります。

クリックすると、ノードが表示されるのでVMを稼働させたいノードを選択します。


設定が完了すると、以下のように表示されます。

アフィニティの設定確認について

アフィニティの設定を確認するコマンドは以下となります。

nutanix@CVM:acli vm.affinity_nodeget "UUID"もしくはVM名

設定がされていない場合は次のようなメッセージが表示されます。Trueならばアフィニティが設定されていないことを意味します。

default_to_all: True

アフィニティ設定がされている場合は以下のように表示されます。アフィニティが設定されているノードのIPアドレスが表示されます。

default_to_all: False      
node_uuid_list: "192.168.0.202" 
node_uuid_list: "192.168.0.201"
アフィニティの設定を解除する場合

アフィニティを解除する場合は以下のコマンドで可能です。

nutanix@CVM:acli vm.affinity_unset "VM名" host_list="AHV_UUID1","AHV_UUID2","AHV_UUID3"
注意点

1つのノード(ホスト)のみでVMを動作させるためにアフィニティを使用しないのが望ましいです。VM作成(更新)時にagent-VMを有効化すれば特定のノード(ホスト)でのみ動作します。ただし、任意のホストで動作させることはできません。

アンチアフィニティ(VM-VM anti-affinity)

指定したVM(必ず複数)が同じノードで動作しないようにする機能です。例えば、DBでプライマリ/セカンダリ構成をとっている場合、ノードがダウンした場合に、プライマリとセカンダリが同じノードで動作しているならば、冗長化した意味がありません。
そこで、アンチアフィニティを設定して同じノードで稼働しないようにする必要があります。

CLIで設定する場合

コマンドラインで行う場合は以下の流れとなります。

①グループを作成する

nutanix@CVM$ acli vm_group.create VM_AA_Group-Name

②そのグループにアンチアフィニティの対象となるVMを入れる。

nutanix@CVM$ acli vm_group.add_vms VM_AA_Group-Name vm_list=VM1,VM2

③アンチアフィニティを有効化する。

nutanix@CVM$ acli vm_group.antiaffinity_set VM_AA_Group-Name

GUIでも可能です(Prism Centralのみ)。

アンチアフィニティの設定確認について

①グループの中に所属するVMを確認する場合

nutanix@CVM:acli vm_group.list_vms VM_AA_Group-Name

②アンチアフィニティのグループを確認する場合

nutanix@CVM:acli vm_group.list
アンチアフィニティの設定を解除する場合

無効化する場合は、以下のコマンドを投入します。

nutanix@CVM$ acli vm_group.antiaffinity_unset VM_AA_Group-Name
注意点

アンチアフィニティはアフィニティと異なり必ず順守されるポリシーではありません。リソース次第では同じノードで動作する可能性はあります。必ず同じノードで動作させないようにするためにはVMHA(Virtual Machine high Availabity)を設定する必要があります。
VMHA(Virtual Machine high Availabity)については、以下の記事で解説しております。

[Nutanix]VMHA(Virtual Machine High Availability)について解説
NutanixのHA機能であるVMHA(Virtual Machine high Availability)について丁寧に解説します。

VMHAを考慮したアフィニティとアンチアフィニティの設定について

アフィニティ
  • VMHAでacli ha.update num_host_failures_to_tolerate=1を設定した場合には、アフィニティ対象のノード(ホスト)は2つ以上にする必要があります。
  • VMHAでacli ha.update num_host_failures_to_tolerate=2を設定した場合には、アフィニティ対象のノード(ホスト)は3つ以上にする必要があります。
アンチアフィニティ
  • VMHAでacli ha.update num_host_failures_to_tolerate=1を設定した場合には、アンチアフィニティのグループ内のVM数はクラスタのノード数-1とします。
  • VMHAでacli ha.update num_host_failures_to_tolerate=2を設定した場合には、アンチアフィニティのグループ内のVM数はクラスタのノード数-2とします。
  • このようにすることで、リソース不足によって同じノードでVMが動作することを防ぐことが可能となります。

コメント

タイトルとURLをコピーしました