Windows Serverフェイルオーバークラスタ（WSFC）を試す

お世話になります。

今回はWindows Serverで2ノードクラスタを構築してみたいと思います。
以下のサイトを参考にさせて頂きました。
https://inab818.site/microsoft-windows-server-failover-clustering/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/776b20be-99dd-aa15-1289-3332ef2a7a81.png)

ADサーバと2台のクラスタマシンはProxmoxで構築し、クラスタ疎通専用のNICとIPアドレスを割り当てます。もちろん同一NICでも大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/430ad553-66e0-85bd-52e0-476ab0793a19.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/96a0205e-0b27-3f22-fbe0-a8c5e6a4b65c.png)

ADサーバーでiSCSIターゲットの役割を追加します。ADDSと他の役割を同じマシンにするのは本番環境ではあまりないと思いますが、今回は検証でシンプルな構成にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/885acf02-895d-1f06-4c6d-789d6ffa9437.png)

ターゲットサーバーで共有用のドライブを作ります。仮想ディスクVHDXファイルの置き場になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/949ec382-5f32-ac3a-7c43-4e6366e5366f.png)

iSCSIディスクの場所として指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f5bc2144-93a4-302d-86c9-9abfd474a277.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/98447d74-6735-487a-65f4-a7d1e1949a1a.png)

30GBをファイルサーバ用、1GBをQuorum用とします。Quorumは2ノードクラスタで必要な投票ディスクです。容量可変（シンプロビジョン）とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/47276503-fc2c-5afa-3d10-cd68d474bef4.png)

iSCSIイニシエーターとして2台のサーバーを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/880d2fb8-15d4-e548-808a-a235e7e98565.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/fd7dc0fc-cb53-10a5-22ef-22fb6e5f0a9a.png)

CHAP認証を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/a5b65f39-9d6e-aa5d-7a53-a1db5ee019fd.png)

Quorumディスクも同様の手順を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/2f38a003-ba5e-a747-5383-ce6d16c69018.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/fca3f6bc-af00-1846-9567-8fe0f0c4a6d4.png)

2つのサーバーが指定されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5eff6a30-2de7-098f-59c8-48aeb8c108d1.png)

AD側（iSCSIターゲットサーバー）から、CLUSTER1/2サーバーの操作に移ります。iSCSIイニシエータ機能を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/911babd8-2225-8175-f4b0-9fe562385288.png)

ターゲットとしてADサーバを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/eb615ace-7846-406c-6318-729271ec213f.png)

CHAP認証情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/71a9cc77-a6e7-065f-952d-39c6cc069c14.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5ffbad5d-ee15-317e-8b2e-62ef8c2adfe7.png)

接続が完了すると、オフラインディスクとして認識されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/9e707b38-0313-666f-07e3-88a423e106b8.png)

NTFSでフォーマットし、ドライブレターを割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/b482ad21-d876-7ed3-3c8a-d485a332b829.png)

このタイミングでADサーバを見てみると、E:ドライブに2つのVDHXドライブができています。これをiSCSIターゲットとしてリモートでマウントし、切り替えることで2ノードクラスター（共有ディスク型）として動作します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e6c1dabd-1b13-296e-bb20-16263ee1b2fd.png)

これとは別に「データミラー型」クラスターというのがありますが、これは各サーバのDAS（筐体内に直接接続されたディスク）を常に同期し同じ内容を持ちます。このメリットは共有ディスクの構築が不要になる点です。
こちらのサイトを参考にさせて頂きました。
https://bcblog.sios.jp/what-is-wsfc-disk-data/

ProxmoxにビルトインされているCephFSがその例ですが、たとえば5台のクラスタなら1回の書き込みで5倍のI/Oが発生することになり、帯域が必要になるため本番環境では10GbE以上が必須と言われています。

また2ノードの場合、クラスタは「どちらがアクティブか」が分からなくなる問題があります（スプリットブレイン）。NEC CLUSTERPROなども触らせて頂きましたが、Quorum以外にもルーターへのPingなどで常に優先度を投票し、スプリットブレイン問題に対処しているようです。

iSCSIによる疎通ができたので、前準備は完了です。続いてWSFCの機能を追加します。（以下はCLUSTER1とCLUSTER2サーバの両方で行います。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/4f998806-c7ee-7894-511d-871313979ee8.png)

インストール後、管理ツールからフェイルオーバークラスタマネージャを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/ca0c8e2d-879b-34d5-aafc-700eb67b0e0c.png)

新規にクラスターを作成します。2台をFQDN指定で追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5c2724e2-0493-0558-3e4e-f71535bda82a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/d884b6e7-daf4-68d8-8583-d7a691a61150.png)

自動で検証ウィザードが立ち上がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/06b3e79e-aea5-f1d7-6b5b-98b448195172.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/42597e31-9d65-2b18-2ea7-3ad4b812bb6e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/16205aa9-ad46-cdaf-b064-84da21bc2b56.png)

完了後、レポートが表示できます。ドライバの署名エラーのみで構成に問題はありませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/13a0ca62-af92-cb4f-3662-6605cc12c7f5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5109a544-c455-b39c-d9d0-479f25b42fe0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c3369265-c8b8-42b1-d00c-2207587b2b83.png)

検証が完了すると、アクセスポイントの設定画面になりました。アクセスポイントは2サーバーの代表IPアドレス（浮遊IPアドレス）となり、アクティブ側のNICに動的にアサインされます。TESTCLUSTER.minoden.localにバインドされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/be46c2e9-784a-8465-e1c0-03da2015a49c.png)

そのまま構成ウィザードを進めていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/cf9f031e-c589-148e-e63e-d0aec38d5a58.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/648668fd-0560-cea6-9f2f-436bc8ce182d.png)

正常に完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/53746cea-8b27-7e1a-5819-45ec8ab581e3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/1b4dc536-fb78-a7c6-e747-cd9807a95ba9.png)

現在はアクティブがCLUSTER2となっているようです。この後一度クラスターをオフラインにしたところ、CLUSTER1がアクティブとなりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/8a9f200d-5b15-ba35-8bac-258b11f235ca.png)

続いて、ファイルサーバの役割を追加します。ここではシンプルなファイル共有のみとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/32f0085f-26dd-10c3-4139-d56d9e49ea32.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/eb3035bc-db25-37a1-e666-57dff7b1ed3d.png)

SOFS（スケールアウトファイルサーバ）の選択ができるようです。こちらのサイトの説明がわかりやすかったです。
https://atmarkit.itmedia.co.jp/ait/articles/1312/10/news011_2.html

ファイルサーバー専用にアクセスポイントの指定が必要とのことで、IPをアサインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/1f2ad0de-8f2b-3076-7870-096226cfbab0.png)

Eドライブの指定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c61c6045-d8b9-15c6-78e6-5f48a864a2b1.png)

Eドライブがクラスターボリュームとして認識されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/00fbbafb-05ab-52ce-94ec-33cbb6c81588.png)

フェイルオーバーのテストをしてみます。E:に動画ファイルを置き、ネットワーク共有します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/47018c2b-d153-ca01-0fe8-4c8e9fea794e.png)

クライアントマシンから接続し、再生できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f1d612c1-321d-8595-979d-670484b98fdf.png)

再生状態のまま、手動でCLUSTER1　→　CLUSTER2にマシンを移動させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/40831cba-8f2a-6251-8194-981dd96be992.png)

動画の再生が止まりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/6408cfa3-01e4-c641-6c9e-3fcd11eda9c8.png)

ファイルを開きなおすと、即座に再生が再開されました。無瞬断ではありませんが、サーバーとして2台の切り替わりを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/3b7cea05-e7a8-dd58-9113-7f29b6889a28.png)

アクティブサーバーがCLUSTER2になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/6979149a-16ee-30e8-78cc-69f703885257.png)

以上最小構成ではありますが、WSFCの基本的な構築方法を検証しました。
クラスタマネージャの「役割の追加」を見てみると、VMやファイルサーバーだけでなく、サービスなども選べるようです。例えばデータベースサーバーの場合、SQLのサービス単位でクラスタリングすれば瞬断時間を抑えられ、より可用性を高められそうです。

サードパーティ製品を買うことなく色々なオプションがOSの標準機能で使えるのがメリットだと感じました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/43e24c54-4122-c5be-eaaf-31b7e5dd12ed.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/befb883d-2e55-f8ad-c293-25dc7df2e348.png)

https://docs.microsoft.com/ja-jp/sql/integration-services/scale-out/scale-out-failover-cluster-instance?view=sql-server-ver15