VMware製品を用いて基盤構築をしているなら高可用性について考えるだろう。
普段何気なく使用しているvSphere HAの機能だが、良い電子書籍があったのでHAについてまとめてみた。無料なのにとても詳しく書かれているので、英語に拒否反応がない方には是非おすすめ。
読んだ書籍:「vSphere 6.x HA Deepdive」
vSphere HAって何
ESXiホストに何らかの障害が発生しダウンした場合に、クラスタ内の他のESXi上でダウンしたESXiに乗っていたVMが自動的に移動し再起動する仕組み。
サービスを提供する上で、サービスが急に使えなくなったりアクセスできなくなったりする可能性を下げ、安定して使える状態を高めるための仕組みである。
また、ゲストOSレベルで異常が発生した場合も、HA機能によってゲストOSを再起動させることが可能だ。
1台のサーバーのみでサービスを提供していたとすると、そのサーバーが急に故障してしまったらその上で稼働していたVMも使えなくなってしまい、サービス自体がストップしてしまう。
サービスが予期なくストップすることは、ユーザーに多大な迷惑や機会損失に繋がってしまうので、常にサービスを使える状態にしておくことはインフラエンジニアとして大事な役割の1つである。
vMotionと何が違うの?
vSphereHAと似たような機能として、「vMotion」がある。vMotionも別のESXiホストにVMを移動させる機能ではあるが、最も異なる点は「VMを起動したまま」別のホストに移動させることができることである。
冒頭でも書いた通り、HAは同クラスタの別ホストで再起動する仕組みであり、一度通信が瞬断する。時々、HAは起動したままVMを移動させることができると勘違いしている方もいるので注意が必要だ。
詳細は下記の公式ブログに書かれている。
HAを有効にするための要件
vSphereHAを有効にする前に確認事項があるので羅列していく。
必須事項
- 最低ESXiは2つ以上用意すること
- ESXi1台につき最低メモリは5GB
- VMware vCenter Serverを使用していること
- VM用の共有ストレージがあること
- pingが通るゲートウェイや、信頼できる宛先があること
推奨事項
- 冗長化されたマネジメント用ネットワークがESXiに接続されていること
- ESXi1台につき8GB以上のメモリ
- 複数の共有データストアがあること
続いてファイヤーウォールに関する要件も挙げる。
FW要件
vSphereHAを有効する環境にファイヤーウォールが含まれている場合は、HA機能を正常に使用するために下記のポートを空けておく必要がある。
Port | Protocol | Direction |
8182 | UDP | Inbound |
8182 | TCP | Inbound |
8182 | UDP | Outbound |
8182 | TCP | Outbound |
HAを構成する要素
HAを構成しているコンポーネントは、「FDM」、「HOSTD」、「vCenter」の3つである。これらの3つが連携し合うことでHA機能が成り立っている。これら3つの関係性は下記の図で表現される。
引用元:「vSphere 6.x HA Deepdive」 p.13
FDM(Fault Domain Manager)
FDMはHAを構成する上で最も大事な要素であり、HAエージェントと言われている。
クラスタ内のESXiホストのリソース情報やVMの状態などをFDM間で通信し合ったり、ハートビート機構やVMの位置情報、VMの再起動、ログ取得の管理を行なったりする役割がある。
FDMのログは、「/var/log」配下の「fdm.log」ファイルに保存されている。
HOSTD
ESXiホスト上で最も重要なエージェントの1つがHOSTDである。VMのパワーオン・オフを管理する役割がある。FDMはHOSTDやvCenterと直接通信しているので、不必要なオーバーヘッドやVPXAの依存を避けることができ、以前のバージョンよりHAの信頼性が高いと言える。
しかし、FDMはHOSTDに依存しているので、HOSTDが使用不可になった場合はFDMが全ての機能を停止させ、HOSTDが再び使用可能になるまで待機する。
vCenter
vSphereクラスタのコア部分であり、あらゆるタスクの管理を行っているのがvCenterである。
例えば、下記のようなものがある。
vCenterはHA機能が有効になったら、FDMエージェントをESXiホストに押し出す役割があり、HAを有効にすると複数のESXiに対して同時にFDMを押し出すことで素早くデプロイ&設定を行っている。また、vCenterはクラスタ内のどのESXiをマスターとスレーブに選ぶのかという決定権も持っている。
もっと色々と役割があるが長くなるのでとりあえずここまでで割愛。