VMware vSAN のホスト障害発生時の動作

この記事では、VMware vSANのESXiホスト障害発生時の動作についてご紹介していきます。[前回](https://qiita.com/dayama/items/b0b061fb1e1c471fb143)までの記事では、ストレージ ポリシーに応じた仮想マシン単位での障害発生時の動作についてご紹介しました。今回は、vSANクラスタでのESXiホスト障害の際に仮想マシンデータの可用性がどのように復旧されるのかについて、実際の動作をご紹介していきます。

## vSANクラスタ内のESXiホスト障害発生時の動作概要
vSANクラスタ内のESXiホストで障害が発生すると対象のホスト上で稼働している仮想マシンはアクセス負荷になります。vSphere HAを有効にしている場合は、vSphereクラスタと同様に障害ホスト上の仮想マシンを他のクラスタ内ホストで再起動します。
なお、vSANを有効にしている場合のvSphere HAのトラフィックは管理ネットワークではなく、vSANネットワークが使用されます。vSANを無効にすると、vSphere HAのトラフィックは管理ネットワークが使用されます。
vSANは障害が発生すると、オブジェクトの再同期という処理が発生します。障害が発生すると仮想マシンのストレージポリシーが非準拠の状態になります。これは障害が発生したESXiホストに格納されていたコンポーネントが応答なしの状態となったためです。
オブジェクトの再同期という処理は、ストレージポリシーが非準拠の状態となってから60分後（デフォルト値）にESXiホストに格納されているコンポーネントを他のESXiホストに自動的に複製し、修復をする処理です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/c0db70c4-edfd-f125-4f4c-9035a23fd351.png)
vSANクラスタ内のESXiホストが4台以上の場合は、上記でご説明した動作となります。ただし、vSANクラスタが最小構成である3台である場合は動作が異なります。
ESXiホストが3台構成の場合は、障害によって1台でもESXiホストが停止してしまうと、コンポーネントの再複製する先となる余剰ESXiホストが存在しなくなってしまいます。そのため、ホストが停止している期間は再同期処理が開始されることがなく、可用性が低下したままの状態となります。そして、障害復帰後に再同期処理が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/024ca468-c187-1ea9-aeb9-672695ee1fb3.png)
なお、vSANを有効にしている場合のvSphere HAのトラフィックは、管理ネットワークではなく、vSANネットワークが使用されます。そのため、クラスタでvSANを有効化する際には、vSphere HAを一時的に無効化しておく必要があります。 

## 使用する環境
それでは、vSANクラスタ内のESXiホストで障害が発生した際の動作について確認します。
使用する環境は以下です。

ESXiホスト
・台数：4台(Nested仮想マシン)
・バージョン：VMware ESXi 7.0 Update 2a
仮想マシン
・台数：4台
・ストレージ ポリシー：vSAN Default Storage Policy（FTT=1でデータを2重化）
※FTT=1 によるデータの2重化については、以前の記事を参照してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/5352f97d-c4f7-b501-2b93-fdc087800e17.png)

## vSANクラスタ内のホストをダウン
vSANクラスタ内のホストをダウンさせて障害時の動作を確認します。
障害発生前のvSANデータストアの容量は3.52TB（空き容量は3.18TB）です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/0dd2968d-6ec0-4df6-7fe3-f71255cfaef8.png)

vSphere HA を有効にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/cd050f88-0d5c-6ec0-cae8-c4ecc28bdc25.png)

オブジェクトの再同期処理が発生するまでの時間の設定をオブジェクト修復タイマーといいます。今回はデフォルト値の60分にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/06c40b60-95bc-4f2b-3d52-fe56a68bddd1.png)

esxi-a1を物理的に電源を落として障害を発生させます。esxi-a1が応答なしの状態になったことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/36cd41dc-0cc8-b565-3edc-ff145a7d3c93.png)

vSANデータストアの容量が2.64TB（空き容量は2.39TB）に減っています。vSANデータストアを構成していたesxi-a1のディスクにアクセス不可となったためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/6d4573a7-3366-31ea-d270-46c21ad6c47a.png)

## 障害ホスト内ディスクに格納されてたデータの動作(他ホストからの複製)

オブジェクトの再同期処理が自動的に発生するまでの状態を確認します。

障害が発生したESXiホストに格納されていたコンポーネントの状態が、なし（応答不可）になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/63096304-ad09-3f1d-81c6-efaaba4d639f.png)

各仮想マシンのオブジェクト状態が「可用性が低下（再構築なし） - 遅延タイマー」とマークされています。コンポーネントが障害が発生したESXiホストに格納されており応答不可の状態となったためです。なお、各仮想マシンのストレージポリシーは非準拠の状態になっています。
「持続性コンポーネント」は再同期処理が発生するまでの差分データを記録するコンポーネントです。
再同期処理時に新たに複製されるコンポーネントとデータを同期した後に削除されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/6fa58b54-7916-e646-85bb-bf612ab61709.png)

監視タブのオブジェクトの再同期から再同期処理が行われる予定の対象のオブジェクト数が確認できます。障害が発生した60分後に再同期処理が開始されるように自動的にスケジュール設定されています。
また、「今すぐ再同期」をクリックすると60分待たずにすぐに再同期処理を開始することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/911426bc-0261-5528-4e36-04f9ee11b1e8.png)

障害が発生してから60分後に、自動的に再同期処理が開始します。再同期処理後はコンポーネントの状態が正常（アクティブ）になります。コンポーネントがesxi-a1以外のホストに複製される動作が行われたためです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/621d84a9-e140-98cf-f8e4-aae63c451f31.png)

各仮想マシンのオブジェクト状態が「可用性が低下（再構築なし） - 遅延タイマー」とマークされていましたが、「健全」とマークされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/08d37ea5-76ba-dce5-d287-9072fc4dd9c6.png)

vSANクラスタ内のESXiホストが3台の場合はコンポーネントを複製する先のESXiホストが存在しないため、オブジェクト修復タイマーにかかわらず障害復旧後に再同期処理が行われます。

## vSphere HA動作

障害発生時にvSphere HAが正常に動作していたかについても確認していきます。
esxi-a1では障害発生前にVM-1が稼働していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/3e3ac561-4365-4576-3716-6fbfeb0ecd0c.png)

障害発生後のVM-1のイベントログからvSphere HAによって、esxi-a4で即時に再起動していることが確認できます。vSANの再起動処理及び、オブジェクト修復タイマーとは別にvSphere HAとして動作するため、即時に再起動処理が行われ仮想マシンの稼働を復旧します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/2f63bb7e-b19d-7943-49de-e93784c4bfdd.png)

## ホスト復旧に伴う動作確認

vSANクラスタ内のホスト障害時の動作が確認できたため、次は復旧時に伴う動作と正常に復旧しているかについて確認していきます。

esxi-a1の電源をオンの状態にします。esxi-a1の起動が完了すると、応答なしの状態から正常の状態に戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/38a41f4f-ad5b-a880-903b-63d3ed3121ab.png)

ESXiホスト復旧後はvSANデータストアの再構成をするため等の作業は必要なく、自動で再構成が行われます。障害発生時のvSANデータストアの容量から障害発生前の容量に戻っていることが確認できます。障害発生前の容量は3.52TB（空き容量は3.18TB）、障害発生後の容量は2.64TB（空き容量は2.39TB）です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/2619bfcd-cdba-272c-c20c-a1030e5a0ad2.png)


仮想マシンを新たに作成しても、復旧したesxi-a1で仮想マシンが稼働すること及び、コンポーネントが配置されるか確認します。
VM-5という仮想マシンを新たに作成し、esxi-a1で稼働していることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/90fb519e-8fa1-eab8-63f0-3a8c4b95c089.png)

VM-5のコンポーネントのデータ配置に関してもesxi-a1に配置されていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385304/069f4929-dbab-1773-a342-9d398a9bc51f.png)

以上、今回はホスト障害時に発生する機能概要や動作確認についてご紹介しました。