Azure File Sync のフロントエンドポイントを DFS-N で冗長化する

Azure File Sync のフロントエンドポイントを DFS-N で冗長化する

今回は Azure File Sync のフロントエンドにあたる Windows サーバーを DFS-N を用いて冗長化して構成してみます。

今回使うサービスと機能について

Azure File Sync とは

Azure File Sync は Windows ファイルサーバー上のデータを Azure Files に集約し、データを一元管理できるサービスです。クライアントからのエンドポイントとなる 1 つのWindows ファイルサーバーに配置されたデータはクラウド上の Azure Files 共有領域に自動的にコピーされ、同期対象となっている他のファイルサーバーにも同じデータを配置できます。これにより、離れたサイト間でもファイルサーバー上のデータ内容を統一できます。クライアントから見た接続のフロントエンドポイントは一般的な Windows ファイルサーバーなので、従来の SMB プロトコルを利用してシームレスに利用できます。

また、クラウド上のストレージ領域は従量課金であり実質無限大に利用できるので、ファイルサーバー上であまり使われないデータをクラウド上にのみアーカイブすることで、ファイルサーバー上の実データ容量を節約しつつ膨大なデータを保持できます。これはクラウド階層化機能と呼ばれ、アーカイブしたデータも利用したいときにいつでも再呼び出しできます。

実データはクラウド上に集約されるため、エンドポイントのファイルサーバーで障害が発生したりサービスを継続できない状況に陥ったとしても、同期済みのデータは他のファイルサーバーもしくは Azure Files 共有からいつでもアクセスできます。さらに Azure Files に対してバックアップを行うことで、クラウド上のデータの可用性をより向上できます。

DFS-N とは

DFS 名前空間 (DFS-N) とは、複数のファイルサーバー上に配置されている共有フォルダーを 1 つ以上の名前空間にグルーピングする機能です。名前空間はアクセス時に利用する URL のようなもので、つまり同じ接続先で複数のファイルサーバーへのアクセスを実現できるということです。名前空間はドメイン名で始まる共有の名前として構成されます。(\\Contoso\public など)

これによって、ファイルサーバーの 1 台にアクセスできなくなったとき、他のファイルサーバーに接続するために新しく接続情報を指定し直すといった手間が省けます。少人数で利用しているファイルサーバーであれば障害時の対処策としてアクセス先を変えてもらうことはできそうですが、大規模な組織やアプリケーションと連携している場合は接続先を簡単に変えるのが難しいことが多いです。

従来はグルーピングされたファイルサーバー間でデータを同期する DFS-R と組み合わされることが多かったですが、今回はデータの同期は Azure File Sync をバックエンドで利用します。

今回の構成

今回の構成は次の図の通りです。クライアントがあるサイト側にファイルサーバーを複数配置し、その上で Azure Files 共有とデータを同期するために Azure File Sync を構成します。サイト上では DFS-N で名前空間を共有してシームレスにファイルサーバーにアクセスできるようにします。

構成手順

前提条件

  • オンプレミスサイト上にドメイン環境を構築済み
  • オンプレミスサイト上に Windows Server 2019 の仮想マシンを複数台 (2 台) 構築し、ドメイン参加済み
  • ファイル共有を扱えるストレージアカウント (汎用バージョン 2) を展開済み

ストレージ同期サービスの展開

Azure ポータルにて、[リソースの作成] から「Azure ファイル同期」と検索して [Azure ファイル同期] を見つけます。[Azure ファイル同期][作成] をクリックします。

[Azure File Sync のデプロイ] にて、[基本] タブで次のように入力して [確認および作成] >[作成] をクリックして展開します。

  • [サブスクリプション]: Azure File Sync を展開するサブスクリプションを指定
  • [リソース グループ]: Azure File Sync を展開するリソースグループを指定
  • [ストレージ同期サービス名]: Azure File Sync の名前を指定
  • [領域]: Azure File Sync を展開するリージョンを指定

同期グループの作成

展開が成功したら [ストレージ同期サービス] のリソースから作成したリソースを選択します。次にファイルサーバーを同期対象を指定するための同期グループを作成します。メニューから [同期グループ] をクリックします。

[同期グループ] にて、次のように設定して [作成] をクリックします。

  • [同期グループ名]: 同期グループの名前を指定
  • [サブスクリプション]: 同期先のストレージアカウントがあるサブスクリプションを指定
  • [ストレージ アカウント]: 同期先のストレージアカウントを指定
  • [Azure ファイル共有]: 同期先のファイル共有を指定

Azure File Sync エージェントの登録

Azure File Sync エージェントをダウンロードし、Windows ファイルサーバーにインストールします。インストーラーを起動すると [Storage Sync Agent Setup] が立ち上がるので、ウィザードに従ってインストールします。[Welcome to the Storage Sync Agent Setup Wizard][Next] をクリックします。

[Feature Selection] にてインストール先フォルダを指定し、[Next] をクリックします。

[Proxy Settings] にて、プロキシーを利用する場合はその情報を設定して [Next] をクリックします。

[Microsoft Update] にて、Azure File Sync エージェントの更新を Microsoft Update 経由で受け取るかどうかを指定します。推奨である [Use Microsoft Update] を選択し、[Next] をクリックします。

[Ready to install Storage Sync Agent] にて、エージェントの自動アップデートを利用するかどうか設定します。[Install] をクリックします。

インストールが完了するまでしばらく待ちます。

しばらくするとエージェントの登録ウィザードが立ち上がります。[Azure File Sync – Agent Update] [OK] をクリックします。

[Azure File Sync – Server Registration][Sign in and register this server] にて、接続先の情報を設定します。[Azure Environment] [Azure Cloud] を選択し、[Sign in] をクリックします。

Azure AD のサインインウィザードが起動するので、サインインします。

[Choose a Storage Sync Service] にて、次のように設定して [Register] をクリックします。

  • [Azure Subscription]: ストレージ同期サービスがあるサブスクリプションを指定
  • [Resource Group]: ストレージ同期サービスがあるリソースグループを指定
  • [Storage Sync Service]: ストレージ同期サービスを指定

登録が完了することを確認します。

登録が完了すると Azure ポータル上の [ストレージ同期サービス]>[登録済みサーバー] にサーバーが表示されます。

登録したサーバーを同期グループに所属させるために [同期グループ] をクリックし、作成した同期グループをクリックします。

上部メニューの [サーバー エンドポイントの追加] をクリックします。

[サーバー エンドポイントの追加] にて次のように設定し、[作成] をクリックします。

  • [登録済みサーバー]: 登録したサーバーから選択
  • [パス]: データを同期するフォルダのパスを指定
  • [クラウドの階層化]: [有効]
    • キャッシュの割合を指定します
  • [オフラインのデータ転送]: [無効]

接続するサーバーをすべてサーバーエンドポイントに追加します。

DFS-N の設定

Windows サーバーで [サーバーの役割と機能] から [DFS 名前空間] を追加します。

名前空間の作成

[DFS の管理] を起動し、左メニューの名前空間を右クリックして [新しい名前空間] をクリックします。

[新しい名前空間ウィザード][名前空間サーバー] にて、[サーバー] で名前空間に追加するサーバーを選択して [次へ] をクリックします。

[名前空間の名前と設定] にて、[名前] に名前空間で用いるパス名 (\\Contoso.com\〇〇 の部分) を指定します。さらに、[設定の編集] で共有フォルダーのパスやアクセス許可の設定をしてから [次へ] をクリックします。

[名前空間の種類] にて、[ドメイン ベースの名前空間] を選択して [次へ] をクリックします。

[設定の確認と名前空間の作成] にて、設定内容を確認してから [作成] をクリックします。

[確認] にて名前空間が正常に作成されることを確認して [閉じる] をクリックします。

名前空間にサーバーを追加

作成済みの名前空間にサーバーを追加する場合は、作成した名前空間を右クリックして [名前空間サーバーを追加] をクリックします。

[名前空間サーバーを追加] にて、[名前空間サーバー] で追加するサーバーを選択し、[設定の編集] で共有フォルダーのパスやアクセス許可の設定をしてから [OK] をクリックします。

名前空間に追加したサーバーが表示されていることを確認します。

終わりに

このように設定した名前空間にエクスプローラーや Finder でアクセスするとファイルサーバーにつながります。試しに 1 台のファイルサーバーを停止してみてもアクセスが継続できることを確認できるかと思います。

今回の構成内容はこちらの公開情報も参考になります。

Azure Files で DFS-N を使用する方法 | Microsoft Docs

バックエンドのデータ同期を Azure File Sync で行う場合は、同期のタイミングが Azure File Sync の同期タイミングに準ずることになります。この同期は現在はファイルの変更タイミングで即時反映されることはなく、変更の反映には最大で 24 時間以上かかる場合があります。なお、ファイルの同期を手動で実行するコマンドも用意されています。

Azure Files についてよく寄せられる質問 (FAQ) | Microsoft Docs

SMB またはポータルで Azure ファイル共有に直接ファイルを作成しました。このファイルが同期グループのサーバーに同期されるまでどのくらいの時間がかかりますか。

Azure Portal または SMB を使用して Azure ファイル共有に加えられた変更は、サーバー エンドポイントに対する変更とは異なり、検出とレプリケーションが即座に行われることはありません。 Azure Files にはまだ変更通知/ジャーナルがないため、ファイルが変更されたときに自動的に同期セッションを開始する方法はありません。 Windows Server では、Azure File Sync は Windows USN ジャーナルを使用して、ファイルが変更されたときに同期セッションを自動的に開始します。

Azure ファイル共有に対する変更を検出するために、Azure File Sync には、変更検出ジョブ と呼ばれるスケジュールされたジョブがあります。 変更検出ジョブは、ファイル共有内のすべてのファイルを列挙した後、ファイルの同期バージョンと比較します。 変更検出ジョブによってファイルが変更されていると判断された場合に、Azure File Sync は同期セッションを開始します。 変更検出ジョブは 24 時間ごとに実行されます。 変更検出ジョブは Azure ファイル共有内のすべてのファイルを列挙することで機能するため、変更の検出は、大きな名前空間のほうが小さな名前空間よりも時間がかかります。 大規模な名前空間の場合、変更されたファイルを判断するのに 24 時間ごとに 1 回より長くなる場合があります。

Azure ファイル共有で変更されたファイルを直ちに同期したければ、Invoke-AzStorageSyncChangeDetection PowerShell コマンドレットを使用すると、Azure ファイル共有における変更の検出を手動で開始できます。 このコマンドレットは、なんらかの自動プロセスによって Azure ファイル共有に変更が加えられたり、管理者によって (ファイルやディレクトリを共有に移動するなどの) 変更が実行されたりするシナリオを意図したものです。 エンド ユーザーの変更に関しては、Azure File Sync エージェントを IaaS VM にインストールし、エンド ユーザーに IaaS VM 経由でファイル共有にアクセスしてもらうことをお勧めします。 そのようにすることで、すべての変更がすぐに他のエージェントと同期され、Invoke-AzStorageSyncChangeDetection コマンドレットを使う必要はありません。 詳細については、Invoke-AzStorageSyncChangeDetection のドキュメントを参照してください。