Active Directoryには「サイト」という機能がある。いわゆるWebサイトのことではなくて、ドメインコントローラを設置する拠点という意味だ。これは、ドメインコントローラ同士で同期を行う際の頻度に差をつける必要がある場面で関わってくる。
ドメインコントローラの同期とWANの関係
Active Directoryでは、ひとつのドメインに複数のドメインコントローラを設置できる。ドメインコントローラ同士が定期的にActive Directoryデータベースの同期を行い、情報の整合性を維持している。Active Directoryはマルチマスタ構成をとるので、すべてのドメインコントローラが対等な関係であり、同期も多方向になる。
問題は、Active Directoryが大規模化して、取り扱うオブジェクトの数が多くなったときである。オブジェクトが増えれば当然ながら、ドメインコントローラ同士で同期する際にやりとりするデータも増加する。高速なLANを介して通信している分にはさほど問題にならないが、問題は、LANよりも遅いWANやVPNを介して接続する遠隔拠点だ。
ユーザーがログオンする際の効率などを考慮すると、遠隔拠点にもドメインコントローラを設置する方が好ましい。ところがそうすると、低速なWANやVPNを介してドメインコントローラ同士で同期を行う必要がある。それはとりもなおさず、もともと低速な回線に、さらに負荷をかける事態につながる。すると、他のトラフィックを阻害する事態になるかもしれない。
逆に、ドメインコントローラを遠隔拠点に設置しないと、ログオン時にクライアントPCとドメインコントローラの間で発生するトラフィック、あるいは遠隔拠点に設置したサーバとドメインコントローラの間で発生するトラフィックが増加するかもしれない。
かといって、拠点ごとにドメインを分けると、ドメインの数が増えて管理が煩雑になる。また、異なるドメインの間ではユーザーアカウントの移動ができないために、人事異動などへの対応が難しくなる。また、ドメインコントローラを冗長化するために複数台設置すると、拠点ごとに最低2大のドメインコントローラが必要になり、サーバの所要が増えてしまう。仮想化すれば物理的な台数は増えないが、それではハードウェアの冗長化にならない。
結局、どの方法を選んでも、何かしらのネガはあるものである。そこで登場するのがサイトである。
サイト機能による問題解決
サイトを設置する狙いは、高速なLANで結ばれたドメインコントローラ同士と、低速なWAN・VPNで結ばれたドメインコントローラ同士で、同機の頻度に差をつけることにある。もちろん、前者は同期の頻度が高く、後者は同期の頻度が低い。
そして、低速な回線を介する同期は頻度を下げて、たとえば業務が行われていない真夜中に一気にやってしまう。こうすれば、日中の通常業務がドメインコントローラ同士の同期トラフィックによって阻害されることはない。それを実現するのがサイトで、Active Directoryでは「ドメインコントローラを配置する場所を区分する単位」という意味になる。
具体的には、拠点ごとに異なるサイトを設定して、それぞれのサイトの間にサイトリンクの定義を行う。サイトリンクごとに同期の頻度を個別指定できるほか、特定の時間帯だけ同期を行わないように設定することもできる。この機能を活用すると、同一サイト内とサイト相互間で同期頻度に差をつけることができるわけだ。
ただし、同期の間隔を開けすぎると、サイトによってデータベースの内容が食い違う状態が長く続くことになるため、あまり間を空けすぎるのは好ましくない。最低でも1日に1回以上は同期を行うようにしたいところだ。Active Directoryに変更が加わる頻度が高い場合には、回線の負荷状況を見定めながら、もっと頻度を高める方が良いかも知れない。たとえば、夜だけでなく昼休みに同期を行う手は「あり」だろう。
なお、サイトごとに(IPの)ネットワークアドレスを変える必要があるのだが、WANやVPNを介する場合にはルーティングの関係があり、拠点ごとにネットワークアドレスを変えることになるはずだ。だから、これは当然の前提条件とみなして良いと思われる。
サイト構築の作業フロー
一般的な流れとしては、まず拠点同士を結ぶネットワークを構築してあって、そこにActive Directoryを導入していくことになると考えられる。
ドメインコントローラがどのサイトに所属するかは、サイトごとに割り当てたサブネットの設定と、追加するドメインコントローラに割り当てたIPアドレスの情報によって決まる。そのため、事前にネットワークの設計を確定することと、ドメインコントローラに固定IPアドレスを割り当てることが重要になる。もっとも、サイトの話とは関係なく、サーバには固定IPアドレスを割り当てる方が望ましいだろう。
その前提で考えると、サイト設置の作業手順は以下のようになるだろう。
- 中核となる拠点でActive Directoryを構成する
- その他の拠点ごとに、対応するサイトを作成する
- 拠点ごとのネットワークアドレス情報を使って、サブネットを作成する
- 拠点同士を結ぶ回線ごとに、対応するサイトリンクを作成する
- 拠点ごとにドメインコントローラを立ち上げる。サイトがある状態でドメインコントローラを追加すると、所属するサイトは自動的に決まる
- 拠点間でドメインコントローラを移動した場合、あるいは稼働開始後にサイト分割を行った場合には、ドメインコントローラを手作業で目的のサイトに移動する