はじめに
VMHA(Virtual Machine high Availability)について解説します。
VMHAとは
ノード(ホスト)が故障などした場合にVMがクラスタ内の他のノード(ホスト)で再起動することを保証する機能となります。
Prism ElementのsettingsからManage VM High Availabilityを選択し、「Enable HA Reservation」のチェックボックスにチェックを入れることで有効化することができます。
デフォルトではベストエフォートとなります。
無効化されている場合は、この画面自体がホワイトアウトしてクリックすることができません。使うことはまずないと思いますが以下のコマンドで無効化できます。
nutanix@CVM:acli ha.update enable_failover=false
有効化するにあたり、VMが必ず起動することができるように事前にクラスタ内のメモリを予約します。そのため、新規にVMを作成する場合はVMのメモリ+HA予約分が消費されます。
デフォルトの設定値について
コマンドラインで確認するには次のコマンドを使用します。
nutanix@CVM:acli ha.get config { failover_enabled: True ha_state: "kAcropolisHABestEffort" logical_timestamp: 1 num_host_failures_to_tolerate: 0 num_remaining_host_failures_to_tolerate: 0 reservation_type: "kAcropolisHANoReservations" }
VMHA=1について
1台のノード(ホスト)の障害でもVMが他のノード(ホスト)で再起動することができるようにメモリを予約します。ただし、Replication Factorが2もしくは3の場合にのみ使用します。
コマンドラインの設定方法は以下の通りです。
nutanix@CVM:acli ha.update num_host_failures_to_tolerate=1 wait=true config { failover_enabled: True ha_state: "kAcropolisHAHighlyAvailable" logical_timestamp: 2 num_host_failures_to_tolerate: 1 num_remaining_host_failures_to_tolerate: 1 reservation_type: "kAcropolisHAReserveSegments" }
VMHA=2について
2台のノード(ホスト)の障害でもVMが他のノード(ホスト)で再起動することができるようにメモリを予約します。ただし、Replication Factorが3の場合にのみ使用します。Replication Factorが2の場合でも設定自体は可能となりますが、ノード(ホスト)の2重障害が発生した場合にはVMの再起動が保証されません。
コマンドラインの設定方法は以下の通りです。
nutanix@CVM:acli ha.update num_host_failures_to_tolerate=2 wait=true config { failover_enabled: True ha_state: "kAcropolisHAHighlyAvailable" logical_timestamp: 3 num_host_failures_to_tolerate: 2 num_remaining_host_failures_to_tolerate: 2 reservation_type: "kAcropolisHAReserveSegments" }
特定のVMをVMHAの対象から除外する場合
VMHAの機能を有効化するとデフォルトでは全てのVMが対象となります。
全てのVMが必ずしも他のノードで再起動することを求めない場合には、特定のVMをVMHAから除外することが可能です。
以下のコマンドラインで設定を行います。
[新規作成]nutanix@CVM:acli vm.create "VMの名前" ha_priority=-1 → 0 [更新]nutanix@CVM:acli vm.update "VMの名前" ha_priority=-1 → 0 ※ドキュメントでは-1となっておりますが、ブログ管理人が検証したところ AOS6.5では-1は設定できません。代わりに0は可能です。 コマンドの意味合いを考えると0で良いと思われます。 acli vm.get 対象のVM名 で確認すると、agent VMになっていることは確認できました。 実際に設定を入れて運用する場合はサポートへ確認してください。
このコマンドを投入すると、VMが動作しているノード(ホスト)がダウンした場合には他のノード(ホスト)でVMが再起動しません。ダウンしたノード(ホスト)が正常に戻った場合は、データローカリティを維持するためVMがそのノード(ホスト)で起動します。
参考
VMHAに関するテクニカルドキュメントとなります。
コメント