この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。
概要
Azure File Sync (AFS) を使用すると Azure Files とオンプレなどの Windows Server 間で同期を行うことができます。サーバーエンドポイントを複数登録できるため、1 つの Azure Files を複数の Windows Server と同期させることができ、複数の拠点で同一のファイルを扱うことが可能となります。ファイルの実体としては Azure Files にも格納されることになるため、オンプレのマシンが障害に見舞われてもデータが失われることはなく、素早く復旧させることができるようになります。
<Azure File Sync とは>
https://docs.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-introduction
構築手順
構築手順はこちらを参照。
<チュートリアル: Azure File Sync を使用して Windows ファイル サーバーを拡張する>
https://docs.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-extend-servers
通信要件
*afs.azure.net への通信と *.core.windows.net への 443 通信
プライベートエンドポイントを利用する場合
ストレージアカウント側でプライベートエンドポイントを有効にしている場合は、Azure Files への通信がプライベートエンドポイント経由となります。そのため、VNet 上に DNS サーバーを構築して、*afs.azure.net と *.core.windows.net 向けの通信を 168.63.129.16 宛にフォワードする構成とする必要があります。また、新たに建てた DNS サーバーを参照していない場合は、既存で参照している DNS サーバーから VNet 上の DNS サーバーへのフォワードを構成してください。
既存の DNS サーバーや hosts ファイルでの名前解決も可能ではあるものの、プライベートエンドポイントの IP が変わった場合などに自動で更新されないので、168.63.129.16 宛のフォワードを設定する方が楽。
冗長性
クラウドエンドポイントの Azure Files で GRS または GZRS を有効にしている場合、所属しているリージョンが壊滅した時には、まずストレージアカウントがペアリージョンにフェイルオーバーされ、続いて AFS も自動でペアリージョンにフェイルオーバーされる。
ただし、ユーザーが主導でストレージアカウントのフェイルオーバーをした場合には、AFS のフェイルオーバーは実行されないので注意。もし、AFS のフェイルオーバーもテストしたいのであれば、サポートに Azure Files と AFS を一緒にフェイルオーバーしてもらうよう要請をする。
<Azure File Sync を使用したディザスター リカバリーのベスト プラクティス>
https://docs.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-disaster-recovery-best-practices#data-redundancy
同期の動き
AFS では、クラウドエンドポイントとなる Azure Files とサーバーエンドポイントとなる Windows Server が登場します。AFS で登録されたフォルダは、それぞれで同期し合うのですが、どちらのフォルダを操作したかで同期のタイミングが変わります。
AFS では、変更検出ジョブという 24 時間ごとに実行されるジョブがあり、Azure Files への変更については、この変更検出ジョブが実行されるまで、自動で変更を加えたファイルが同期されることはありません。そのため、Azure Files に直接ファイルをアップロードしたとしても、すぐにはサーバーエンドポイント側に反映されないことになります。一方で、サーバーエンドポイント側への変更は、即時同期されます。
ただ、Azure Files 側への変更を即時反映したい場合には、手動で以下のコマンドを実行することで反映させることができます。
Invoke-AzStorageSyncChangeDetection
-ResourceGroupName "リソースグループ名"
-StorageSyncServiceName "ストレージ同期サービス名"
-SyncGroupName "同期グループ名"
-CloudEndpointName "クラウドエンドポイント名"
-DirectoryPath "ディレクトリパス名"
<Azure File Sync よくあるお問合せ – FAQ>
https://jpaztech.github.io/blog/storage/storageFileSyncFAQ/
この Files 側への変更は、最大 24 時間ほど待つ可能性があるというは若干厄介で、例えば、Files 側であるファイルを削除して、変更検出ジョブが実行される前にサーバー側でもファイルを削除してしまうと同期エラーが発生します。そのため、基本は Files 側への変更は行わず、もし行った場合には、すぐに Invoke-AzStorageSyncChangeDetection コマンドレットを実行する運用をする必要があります。
監視
Azure では、AFS の同期状態の監視用にいくつかメトリックを用意しています。これらのメトリックを使用すれば、同期済みのデータ量やサーバーのオンライン状態などを確認することができます。
<Azure File Sync の監視>
https://docs.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-monitoring