今回も仕事で調べた話の記録です。
ファイルサーバーの冗長化
LAN を利用する目的の一つにファイルやフォルダーの共有があります。多くの会社では専用のファイル サーバーを構築して社内で共有するファイルやフォルダーをホストしているでしょう。こうした共有されているデーターは会社の資産であり、重要なものとして保護する価値があります。この保護は一般的な情報セキュリティの CIA=「機密性」(Confidentiality)、「完全性」(Integrity)、「可用性」(Availability)を確保するということです。
Windows Server で構築されたファイル サーバーでは、機密性については ACL によるアクセスコントロールやファイルの暗号化(EFS)・ディスクの暗号化(BitLocker)、Windows 情報保護(WIP)などの多くの機能が提供されていますし、サードパーティー製のソリューションもよく利用されています。完全性と可用性の確保で一番ポピュラーなのはデータのバックアップでしょう。これも標準機能・サードパーティー製ソリューションともに幅広く利用されています。またストレージの冗長化も完全性や可用性の確保に RAID などが多く利用されている方法です。
とりわけ可用性の確保では、ストレージを冗長化することが(ディスクが HDD であれ SSD であれ寿命のそう長くないパーツである以上)非常に有効ですが、物理的にデータを保持するストレージではなく、そのストレージを接続し論理的に共有リソースとしてホストするファイル サーバーの冗長化はどのように行うことができるでしょうか。
ファイル サーバーを冗長化する場合、以下のような機能が必要になります。
- クライアントからは冗長化されたどのサーバーに対しても同一の方法(パス)でアクセスできる
- 冗長化されたすべてのサーバーは常に同一内容のデータを共有ファイルとしてホストする
- 冗長化されたサーバーの一部が停止しても、データーの完全性と可用性は損なわれない
こうした条件を Windows Server のファイル サーバーで満たすことができる機能として、以下のような方法が考えられます。
- Windows Server フェイルオーバー クラスタ(WSFC)を構成する
- DFSR を利用する
- 記憶域レプリカを利用する
それぞれの特徴を簡単にまとめて見ました。
Windows Server フェイルオーバー クラスタ
Windows Server フェイルオーバー クラスタは Windows Server の標準機能です。複数のサーバーをクラスタ化し、共有のストレージ(SAS / Fiber Channel / iSCSI)を利用してファイル共有を提供します。動作的には参加しているすべてのサーバーは常時 Active になります。
共有リソースを保持するストレージは共有されますので、ストレージ自体の冗長性確保は別に考える必要があります(基本的に冗長構成が必須)。
Pros
- 多数のサーバーをクラスタリングすることで堅牢な冗長性を確保できます
- Active Directory に依存しない機能なのでワークグループ クラスターを作成できます(ただしファイルサーバーとしての利用は非推奨)
Cons
- 共有ストレージの要件(SAS / Fiber Channel / iSCSI)のハードルがやや高くなります
- クラスタに参加するサーバーは同一または類似している必要があります
- 構成の難易度が相対的に高くなります
参考情報
- Windows Server のフェールオーバー クラスタリング
https://docs.microsoft.com/ja-jp/windows-server/failover-clustering/failover-clustering-overview - フェールオーバー クラスタ リングのハードウェア要件と記憶域オプション
https://docs.microsoft.com/ja-jp/windows-server/failover-clustering/clustering-requirements - 2 つのノードのクラスター化されたファイル サーバーを展開します。
https://docs.microsoft.com/ja-jp/windows-server/failover-clustering/deploy-two-node-clustered-file-server - Workgroup Cluster の構築手順
https://blogs.technet.microsoft.com/askcorejp/2018/08/27/workgroup-cluster-construct/
DFSR
Windows Server の標準機能である DFS 名前空間で作成されたターゲット フォルダー間を自動的にレプリケートする機能です。DFS 名前空間とは複数のサーバー上に配置されている共有フォルダーを、論理的に構造化された 1 つ以上の名前空間にグループ化できる機能で、ユーザーに対して共有フォルダーを仮想化し、複数のサーバー上にあるファイルに 1 つのパスアクセスできるものです。
動作的には DFS を構成するすべてのサーバーは Active に動作します。共有リソースを保持するストレージはサーバーごとに個別に接続されるので、サーバー単位で冗長構成を取らなくとも全体としてはデーターの冗長化が行えています。サーバー間の同期はフォルダー単位でファイル ベースで行われます。
図:https://docs.microsoft.com/ja-jp/windows-server/storage/dfs-namespaces/dfs-overview より引用
Pros
- 構成が容易です
- 特別なハードウエアやネットワークを必要としません
- サーバーやディスクのスペックはまちまちでも問題ありません
- クライアントからは単一の記憶域として扱えます
- 障害時の対処が単純(フェールオーバーの操作が必要なく、障害サーバーを復旧させるだけ)です
- Windows Server Standard 以上のエディションで利用可能です
Cons
- Active Directory が必須です
- DFS 名前空間の動作原理上、クライアントがどの物理サーバーにアクセスするか明示的に制御できません(Active Directory サイトの構成によりある程度は制御可能)
- フォルダー間のレプリケートはクライアントからのアクセス(書き込み)とは非同期に行われるため、複製フォルダー間の常時整合性は保証されません(変更が検知されたファイルはいったんステージング領域にコピーされ、その後ネットワーク経由で他のサーバーに同期されます)。そのため同一のファイルが複数のサーバーで頻繁に更新される場合、競合によるデーターの損失や破損が生じる場合があります。
DFSRの参考情報
- DFS レプリケーションの概要
https://docs.microsoft.com/ja-jp/windows-server/storage/dfs-replication/dfsr-overview - 紹介とクライアント フェールバックを有効または無効にする
https://docs.microsoft.com/ja-jp/windows-server/storage/dfs-namespaces/enable-or-disable-referrals-and-client-failback
記憶域レプリカ
記憶域レプリカは障害復旧用にサーバーまたはクラスター間でボリュームのレプリケーションを行う Windows Server の機能です。レプリケーションは同期レプリケーションと非同期レプリケーションが選択できます。機時間の短いネットワーク内でデータをミラーリングし整合性の維持を図るには同期レプリケーションを、遠隔地間など待機時間の長いネットワークを通じてデータをミラーリングする場合は(整合性は保証されませんが)非同期レプリケーションを選択できます。サーバーは Active / Standby の構成(レプリケートされる側を待機系にする)も可能です。サーバー間の同期はボリューム単位でブロック ベースで行われます。
※記憶域レプリカはサーバー間でのレプリケーション以外に、クラスターのノード(群)間、クラスター間でのレプリケーションが可能です。(下図はサーバー間構成例)
図:https://docs.microsoft.com/ja-jp/windows-server/storage/storage-replica/storage-replica-overview より引用
Pros
- 構成が比較的容易です
- 特別なハードウエアやネットワークを必要としません
- サーバーやディスクのスペックはまちまちでも問題ありません
- レプリケートを同期実行できるので、複製間の整合性が高く障害時のファイル システム レベルでのデータ損失もゼロになります
Cons
- Active Directory が必須です
- 障害時のフェールオーバーを手動で行うか、自動化する仕組みを作る必要があります(レプリケートするサーバー上のフォルダーをターゲットにする DFS 名前空間を構成して、DFSR ではなく記憶域レプリカで同期する構成にすることは可能です)
- Windows Server 2016 以前では Standard エディションでは利用できません(Data Center エディションが必要。Windows Server 2019 では Standard エディションでも一部制限付きですが利用可能)
記憶域レプリカの参考情報
- 記憶域レプリカの概要
https://docs.microsoft.com/ja-jp/windows-server/storage/storage-replica/storage-replica-overview - 記憶域レプリカでのサーバー間の記憶域レプリケーション
https://docs.microsoft.com/ja-jp/windows-server/storage/storage-replica/server-to-server-storage-replication
まとめ
ミッションクリティカルで堅牢生・高可用性を必要とする場合は WSFC を利用するのが望ましいでしょう。ただし構築に必要なハードウエア費用や技術的コストは相対的に高くなります。
DFSR の良い点は、遠隔地のサーバー間など帯域や遅延に制限のある環境でもクライアントからのアクセスのパフォーマンスに影響を与えることなく同期が行えることです。また同期するグループに何台でもサーバーを追加できる点や構成が用意である点もメリットでしょう。参照が中心のデーターをホストするファイル サーバーを(場所的にも)広範囲で冗長化するのに向いていると思います。
記憶域レプリカは1対1のレプリケーションとなる点が制約です。DFSR のように3台以上のサーバーを同期させることはできません。その代わり同期レプリケーションが可能なので、DFSR のようなデーターの破損や競合の発生は生じません。複数のクライアントから頻繁に更新されるデーターを多数持つファイルサーバーの冗長化に向いていると思います。
ファイルサーバーの冗長化を検討される機会があれば、以上の内容を参考にしてください。