VMware HA(High Availability)の機能について解説します。
VMware HA を利用することで障害発生時のダウンタイムが計算できるようになり、インフラの運用管理の品質が大幅に向上します。
VMware HA(High Availability)とは
VMware HA は、H/W 障害やパニックなどホスト障害時(仮想マシンの障害ではありません)に、仮想マシンを他のホストにフェイルオーバーする機能です。
仮想マシンごとに「OS」や「アプリケーション」で複雑な設定をする必要はなく、HAの設定でアプリケーションレベルまでフェイルオーバーによる保護の対象になります。
VMware HA は vSphere によってクラスタを構成することで利用できます。
その結果、物理ホスト障害に対する高可用性を実現できます。
VMware HA は、2台以上の ESXi ホストで HA クラスタを構成する必要があります。
ホストでハードウェア障害が発生した場合に、そのホスト上で動作していた仮想マシンを(正常動作している)他の ESXi ホスト上で再起動させることにより、仮想マシンの稼働を回復させる高可用性の機能です。
再起動の間は、サービスは利用できません。そのため多少のダウンタイムが発生します。
しかし仮想マシンは、VMware HA によって速やかに他のホスト上で再起動されるので、物理ホストの復旧を待つことなく、仮想マシンのサービスを復旧できます。
VMwara HA のメリット
仮想マシン(OS やアプリケーション含む)は、特別な構成を行う必要がありません。
例えば、Apache や MySQL などアプリケーションがインストールされていても HA 用に設定をする必要ありません。
クラスタで HA 設定を「有効」にするだけで、クラスタに所属している仮想マシン全体に対して VMware HA で保護されるので設定がシンプルで簡単です。
VMware HA の構成
VMware HA を構成するためには以下の構成が必要です。
- ESXi ホスト2台以上からなる vSphere クラスタ(vSAN を利用する場合は最低3台の ESXi ホストが必要)
- VMware vCenter Server
- クラスタに対して HA オプションを有効にする
- 全 ESXi ホストからアクセスできる共有ディスク(FC/iSCSI/NAS/vSAN/VVol等)
- ハートビートをやり取りする管理ネットワーク
- ハートビートデータストア
VMware HA を有効にするための条件
上記構成に加えて以下の条件を満たしている必要があります。
- 共有ストレージ上に仮想マシンが格納されている
- すべてのESXホストからその共有ストレージにアクセスできる
VMware HA を構成するコンポーネント
- FDM(HAエージェント)
- HOSTDエージェント
- vCenter Server
- ハートビートデータストア
■FDM(Fault Domain Manager)
FDM(HA エージェント)は、各ホスト上で動作し
- ホストのリソース情報
- 仮想マシンの状態
- クラスタの設定
などをクラスタ内の他のホストに通知しています。
また、
- ハートビートの送受信
- ホスト&仮想マシンの死活監視
- ネットワーク監視
- 仮想マシンの再起動
を行ないます。
■HOSTD エージェント
FDM と連携して仮想マシンのパワーオンを行ないます。
ハートビートでお互いのホストを相互監視している
VMware HA では、ハートビートでクラスタ内のホストを相互に死活監視しています。
具体的には、ESXi ホスト間でハートビートを交換しています。
※heartbeatとは「心臓の鼓動、動悸」という意味です。
ハートビート用のネットワークですが、VMkernel ネットワークを利用するためハートビート専用のネットワークは必要ありません。
VMware vCenter Server の役割
vCenter Serverは、
- HA エージェントのインストール
- フェイルオーバーキャパシティの算出
など VMware HA に必要な処理を行います。
ただし vCenter Server は、ホスト/仮想マシンの死活監視やフェイルオーパーの実行などは行いません。
そのため、vCenter Server に障害が発生した場合でも VMware HA は動作します。
ハートビートデータストア
VMware vSphere 5.0 からハートビートデータストアが追加されました。
その結果、より精度の高い障害状況の把握ができるようになりました。
ハートビートデータストアは、障害の識別をするために使用され、ストレージパスの死活監視は行いません。
vSAN を使用する場合は、vSAN のデータストアはハートビートデータストアとしては利用できません。
VMware HA フェイルオーバーの実行
死活監視やフェイルオーバーの実行は、クラスタに属する ESXi ホスト自身が行います。
ESXi ホストを VMware HA クラスタに追加すると vCenter Server によって HA エージェントがホストにインストールされ、クラスタ内の他の HA エージェントと通信できるよう構成されます。
HAクラスタを構成する各ホストの役割
ホストは
- マスターホスト
- スレーブホスト
に役割が分かれます。
■マスターホストの役割
- スレーブホストの状態を監視します。スレーブホストに障害が発生した場合や接続できなくなった場合、マスターホストはどの仮想マシンを再起動する必要があるかを確認します。
- 仮想マシンの電源状態を監視します。仮想マシンに障害が発生した場合、その仮想マシンを確実に再起動させます。どのホストで再起動するかもマスターホストが決定します。
- クラスターホストと保護対象の仮想マシンのリストの管理をします。
- 再起動に成功したかどうかを追跡します。
- 再起動に失敗した場合、再起動をリトライするタイミングを決定します。
■スレーブホストの役割
- 自分自身の状態に関する情報をマスターホストに送信します。
- マスターホストからの指示があれば、仮想マシン再起動します。
- ホストネットワークの隔離を検出します。
VMware HA で認識される障害一覧
以下、VMware HA で認識される障害の一覧です。
- ネットワークパーティション状態
- ホスト隔離状態
- ホスト障害/PSOD(パープルスクリーン)
- HA エージェント障害
- vCenter Server との通信不可
- ハートビートデータストアへのアクセス不可
「ホスト障害」時のフェイルオーバー
ESXi ホスト上の HA エージェントは、相互にハートビートを交換して死活監視を行います。
他のホストからハートビートを受信しない状態が一定期間続くと、そのホストに障害が発生したと判断し、フェイルオーバーします。
ネットワークパーティション時のファイルオーバー
ネットワークパーティション状態とは、管理ネットワークの一部で障害が発生したため、管理ネットワークが分断された状態です。
ハートビートを受信しない状態が継続したら、分断されたホストから隔離アドレスに Ping を送信します。
Ping が疎通する場合は ESXi ホスト及び物理 NIC は問題ないと判断し、フェイルオーバーは行われません。
障害時の動作(マスター選出&フェイルオーバー実行)のまとめ
以下、障害時の動作を表にしましたが、こうしてみると基本的に「ホスト障害時にしか仮想マシンフェイルオーバーしない」と覚えておけばいいようです。
※ちなみにホスト障害時には「ネットワークへのハートビート」も「ハートビートデータストアへのハートビート」も通りません。全滅状態です。
あとは細かい部分で「マスター」と「スレーブ」が選出されたりされなかったりといったところです。
事象 | ホスト選別 | マスター(再)選出の有無 | 仮想マシンフェイルオーバーの有無 |
---|---|---|---|
ネットワークパーティション状態 | マスター | あり | なし |
スレーブ | あり | なし | |
ホスト隔離状態 | マスター | あり | なし |
スレーブ | なし | なし | |
ホスト障害/PSOD(パープルスクリーン) | マスター | あり | あり |
スレーブ | なし | あり | |
HAエージェント障害 | マスター | あり | なし |
スレーブ | なし | なし | |
vCenter Serverとの通信不可 | マスター | なし | なし |
スレーブ | なし | なし | |
ハートビートデータストアへのアクセス不可 | マスター | なし | なし |
スレーブ | なし | なし |
コメント