【Azure NetApp Files】DNS CNAMEレコードによる災対側ボリューム（レプリケーションボリューム）への切り替え方式について

# はじめに
Azure NetApp Filesを利用することで、Azure上にハイパフォーマンスのファイルストレージを簡単に構築することができます。また、レプリケーション機能を利用することで、ゾーン間又はリージョン間でデータを同期することができ、クライアント側からの接続先をレプリケーションボリューム側に変更することで、ゾーン障害、リージョン障害時においてもサービスを継続させることが可能になります。
しかしながら、クライアント側からアクセスするボリュームが変わるため、クライアント側のマウント設定を新しいボリューム向けに更新する手間が発生し、全クライアントに対する設定変更が完了するまで業務が停止してしまいます。

本ブログでは、DNS機能の一つであるCNAMEレコードを利用することで課題を解決し、Azure上でゾーンやリージョンでの障害発生時にクライアント側の環境設定に影響を与えずにレプリケーションボリュームに切り替える方法について検証したいと思います。

※本ブログではゾーン間のレプリケーション機能（執筆時点でパブリックプレビュー）を利用して検証しておりますが、リージョン間のレプリケーション機能の場合でも同じ切り替え方式が利用可能です。

※本ブログではNTLM認証を前提として記載いたします。Kerberous認証が必須である場合はSPNを明示的に Active Directory 上に登録する必要がありますが、そちらの検証は本ブログには含めません。

Azure NetApp Filesの詳細については[こちら](https://learn.microsoft.com/ja-jp/azure/azure-netapp-files/)の公開情報を参照ください

# 目次
1. 構成図
2. Azure NetApp Filesのボリューム作成
3. Azure NetApp Filesのレプリケーションボリューム作成
4. CNAMEレコードの登録
5. ボリューム切り替え検証
6. 終わりに

# 1.構成図
今回の検証環境の構成図について正常時と切り替え時でそれぞれ整理します。
構成図上の検証サーバからは「anfvol1.anftest.com\vol1」のパスでAzure NetApp Filesのボリュームにアクセスするとします。
＜通常時＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/e5042333-c1ef-2bbf-fcba-ae9da59dc66a.png)
DNSサーバに以下レコードを追加しています。
（手順は「4.CNAMEレコードの登録」を参照ください）

|anfvol1.anftest.com　IN CNAME　anf-5529.anftest.com|
|:-|

＜切り替え時＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/4bf53599-9514-6534-d469-e483fd6e25e7.png)
CNAMEレコードを以下の通り更新します。
（手順は「5. ボリューム切り替え検証」を参照ください）

|anfvol1.anftest.com　IN CNAME　anf-82db.anftest.com|
|:-|

※本ブログにActive Directoryの構築手順は記載していません。
※Azure NetApp Filesの「Active Directory 接続」と「容量プール」は環境に合わせて設定してください。



# 2.Azure NetApp Filesのボリューム作成
Azure Portalからボリュームを作成するNetApp アカウントにアクセスを実施します。
「ストレージ サービス」⇒「ボリューム」⇒「+ ボリューム の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/7cf57ced-2ab4-66fb-23b8-a6864702b243.png)

「基本」タブの設定を実施します。環境に合わせて各パラメータを指定してください。
今回の検証では可用性ゾーンは「1」、ボリューム名は「vol1」で作成します。

また、委任されたサブネットについてはAzure NetApp Filesに委任したサブネットを指定する必要があります。作成方法については[こちら](https://learn.microsoft.com/ja-jp/azure/azure-netapp-files/azure-netapp-files-delegate-subnet)の公開情報を参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/92a805c7-ab61-87fc-c78a-d60b74849f97.png)

次に、「プロトコル」タブの設定を実施します。
以下の通りに設定を実施します。
プロトコルの種類：「SMB」
Active Directory：「Active Directory 接続」で設定したドメインを選択
共有名：デフォルトで「基本」タブで設定したボリューム名になっているので、そのままにする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/4b999b8d-152e-9b3e-5a9f-336b74c5aad6.png)

「確認及び作成」タブをクリックし、内容を確認後に作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/95ed4790-cf76-db7a-6d15-f0702653cb70.png)

作成完了後、作成したボリュームを選択し、「設定」⇒「プロパティ」を選択してください。
表示されている「リソースID」を次の手順で利用するため、メモ帳などにコピーしておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/bfd726e4-5cb4-a815-7e63-0be2061c6705.png)

# 3.Azure NetApp Filesのレプリケーションボリューム作成
>※2023年10月時点ではクロスゾーンレプリケーションはパブリックプレビュー機能となるため、事前にプレビュー機能を有効化する必要があります。Azure CLIが実行できる環境（Cloud Shellで大丈夫です）で以下コマンドを実行してください。
>```
>#機能の登録
>Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName >ANFCrossZoneReplication
>#機能の登録の状態を確認（RegistrationStateがRegisteredになったら完了です。30分ほどかかります）
>Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFCrossZoneReplication
>```
>詳細は[こちら](https://learn.microsoft.com/ja-jp/azure/azure-netapp-files/create-cross-zone-replication#register-the-feature)の公開情報を参照ください

Azure Portalからボリュームを作成するNetApp アカウントにアクセスを実施します。
「ストレージ サービス」⇒「ボリューム」⇒「+ データのレプリケーション の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/b3055660-3e0f-1967-02eb-9afd99d8262b.png)
「基本」タブの設定を実施します。環境に合わせて各パラメータを指定してください。
今回の検証では可用性ゾーンは「2」、ボリューム名は「vol1-dr」で作成します。
仮想ネットワークと委任されたサブネットについては「2.Azure NetApp Filesのボリューム作成」で指定したリソースと別のリソースを選択してください。

また、サブネットについてはAzure NetApp Filesに委任したサブネットを指定する必要があります。作成方法については[こちら](https://learn.microsoft.com/ja-jp/azure/azure-netapp-files/azure-netapp-files-delegate-subnet)の公開情報を参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/16649cbf-5605-ac85-cb99-e71aed89e0cf.png)


次に、「プロトコル」タブの設定を実施します。
以下の通りに設定を実施します。
プロトコルの種類：「SMB」
Active Directory：「Active Directory 接続」で設定したドメインを選択
共有名：「vol1」
※共有名は「2.Azure NetApp Filesのボリューム作成」で指定した共有名と同じ値を入力してください。今回の検証では「vol1」となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/ff16ff8d-ce85-c5d7-1d5f-f1f8cb9b9ecc.png)

次に、「レプリケーション」タブの設定を実施します。
「ソース ボリューム ID」に「2.Azure NetApp Filesのボリューム作成」の最後にコピーしたリソースIDを貼り付けます。
「レプリケーション スケジュール」は要件に合わせて設定してください。本検証では「10分ごと」で設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/251d6ccb-1b6e-b579-0675-1a88dff6ce1a.png)

「確認及び作成」タブをクリックし、内容を確認後に作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/403e8a79-1887-dc9a-a5de-d7f1b94b6705.png)

作成完了後、作成したボリュームを選択し、「設定」⇒「プロパティ」を選択してください。
表示されている「リソースID」をメモ帳などにコピーしておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/2461418a-7731-f57f-9638-44e85f32c11c.png)


「2.Azure NetApp Filesのボリューム作成」で作成したボリューム（本検証では「vol1」）を選択し、「ストレージサービス」⇒「レプリケーション」を選択後、「承認」をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/457dbb43-d67c-ae0f-767c-041a81f78ba6.png)

「宛先ボリュームID」に先ほどコピーした「リソースID」を貼り付けてOKをクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/687a52b3-4d95-87ec-99fb-860bac061a05.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/cb1d1084-b071-9805-e644-6cf9a5e4b12a.png)

本手順で作成したボリューム（本検証では「vol1-dr」）を選択し、「ストレージサービス」⇒「レプリケーション」を選択。正常状態が「正常」でミラーの状態が「Mirrored」になっていることを確認する。
※数分かかるため定期的に更新する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/51adde64-e7df-5801-938e-25107cdb2ce0.png)

# 4. CNAMEレコードの登録
DNSサーバにCNAMEレコードを追加します。
Azure NetApp Filesのボリュームのホスト名が「anf-5529.anftest.com」で登録されているので、クライアント側から「anfvol1.anftest.com」でアクセスできるようにCNAMEレコードを追加します。
検証ではActive DirectoryとDNSが同じAzure仮想マシンで動作しているため、Windows Serverでの設定内容について記載します。環境に合わせて設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/042e29fa-abe1-83b2-8da4-ce19b20fd9e2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/8f7653e6-f372-4f7d-84b9-21126252a27a.png)

※Azure NetApp Filesのホスト名はAzure Portalから確認が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/9a5492a5-8b09-4bee-8d3e-3551cb64bff1.png)

# 5. ボリューム切り替え検証

検証サーバからAzure NetApp Filesのボリュームにアクセスを実施します。

先ほどCNAMEレコードに登録した「anfvol1.anftest.com」からアクセスを検証します。
検証サーバにログイン後、エクスプローラを開いて以下のパスにアクセスを実施します。
「\\anfvol1.anftest.com\vol1」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/36beb712-cd16-491e-e937-3fc9d0927da9.png)
無事にアクセスすることができました。
ゾーン1のAzure NetApp Filesのボリュームに向いているかどうかを確認するために名前解決を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/ee4f6f3c-bd7a-bcd9-3531-db50f14f75a4.png)
CNAMEレコードの宛先に指定した「anf-5529.anftest.com」のIPアドレスに名前解決できていることが確認できました。

次に、ゾーン1が障害により使えなくなった場合を想定して、Azure NetApp Filesのボリュームの宛先をゾーン2のレプリケーションボリュームに向き先を変更します。

先ほど設定したCNAMEレコードの宛先をレプリケーションボリュームのホスト名「anf-82db.anftest.com」に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/842b77ba-84c9-f0d1-a75f-019443f49c85.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/f1a760c6-0bf3-868a-ed76-774e832debc8.png)

再度、検証サーバからAzure NetApp Filesのボリュームにアクセスを実施します。
検証サーバにログイン後、エクスプローラを開いて以下のパスにアクセスを実施します。
「\\anfvol1.anftest.com\vol1」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/5d091730-9b7d-1309-e364-beb49db70ce1.png)
無事にアクセスすることができました。
ゾーン2のAzure NetApp Filesのレプリケーションボリュームに切り替わっているかを確認するために名前解決を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536682/0a9f614c-0dd2-225b-fc18-3293ec4e17e6.png)
CNAMEレコードの宛先に変更した「anf-82db.anftest.com」のIPアドレスに名前解決できていることが確認できました。

クライアント側の設定を変更せずに宛先のボリュームを変更することができました。

※CNAMEレコード更新後でもクライアント側でDNSキャッシュが残っている場合は切り替え前のAzure NetApp Filesボリュームにアクセスが実行されます。即座に接続先を切り替えたい場合は、DNSキャッシュをクリアすることを検討してください。 

※レプリケーションボリュームは読み取り専用ボリュームになりますので、実際の障害時にはレプリケーションボリューム側でピアリングを中断することで更新が可能になります。
詳細は[こちら](https://learn.microsoft.com/ja-jp/azure/azure-netapp-files/cross-region-replication-manage-disaster-recovery)の公開情報を参照ください。

# 6. 終わりに
CNAMEレコードによるレプリケーションボリュームへの切り替えを検証することができました。
Azure NetApp Filesの切り替え方式の参考にしていただければと思います。