この特集のトップページへ

Directory design 2... 複製トラフィックから見たドメイン設計
sankaku.gif ドメインコントローラの配置

 ドメインコントローラは,ドメインに最低1台は必要となる。だが,フォルトトレラントを考慮し,最低2台は設置することをお勧めしたい。では,サイトが複数ある場合,ドメインコントローラは何台用意すればよいのだろうか。また,フォレスト全体でグローバルカタログサーバーは何台用意すべきなのだろうか。さらに,DNSサーバーは何台用意すべきなのだろうか。

 ドメインコントローラ,グローバルカタログサーバー,DNSを各サイトに設置するか否かで,検索トラフィックや応答速度は変化する。ドメインやサイトの構成が決まったら,次はドメインコントローラの台数と配置を検討してほしい。

 ドメインコントローラは,さまざまなサービスをクライアントに提供してくれる。たとえば,ユーザーがログオンするときにはKerberos認証のKDC(Key Distribution Center)としてログオン要求に応えるし,ユーザーがオブジェクトを検索するときにはLDAPサーバーとして動作する。さらに,そのドメインコントローラがグローバルカタログを保持していれば,フォレスト全体の情報を提供してくれる。

 クライアントはDNSに登録されているSRV(SeRVice)レコードを使うことで,さまざまなサービスを提供するドメインコントローラを効率よく発見できる。たとえば,child.parent.comドメインにおけるドメインコントローラ(DC100)のIPアドレスが192.168.1.100で,Tokyoサイトを構成している場合,DNSのSRVレコードには次のように登録されている(ここで示すのは,DNSの設定ファイルからの抜粋である)。

_ldap._tcp.dc._msdcs.child.parent.com. 
600 IN SRV 0 100 389 dc100.child.parent.com.
_ldap._tcp.Tokyo._sites.dc._msdcs.child.parent.com. 
600 IN SRV 0 100 389 dc100.child.parent.com.
_kerberos._tcp.dc._msdcs.child.parent.com. 
600 IN SRV 0 100 88 dc100.child.parent.com.
_kerberos._tcp.Tokyo._sites.dc._msdcs.child.parent.com. 
600 IN SRV 0 100 88 dc100.child.parent.com.
_gc._tcp.child.parent.com. 
600 IN SRV 0 100 3268 dc100.child.parent.com.
_gc._tcp.Tokyo._sites.child.parent.com. 
600 IN SRV 0 100 3268 dc100.child.parent.com.

 上記のレコードのうち,上から2つはLDAPサーバーのSRVレコード,次の2つはログオン処理に使われるKerberosサーバー(KDC)のSRVレコード,最後の1つはグローバルカタログサーバーのSRVレコードである。

 レコードのなかには,サイト名まで指定されているものもあれば,ドメイン名しか指定されていないものもある。クライアントコンピュータは,DNSを通じて,できる限り同じサイトにあるドメインコントローラを探そうとするが,もし同じサイトにドメインコントローラが存在しなければ,そのときには別サイトにある任意のドメインコントローラを使うことになる。

 1つのドメインが複数のサイトに分かれている場合,できる限り同じサイトのドメインコントローラを利用すると効率がよい。このような制御は,DNSを利用することで実現できる。たとえば,parent.comドメインがTokyoサイトとOsakaサイトに分かれており,TokyoサイトにWindows 2000 ProfessionalがClient1という名前で参加しているものとしよう。クライアントは,起動時にLDAPサーバーとKerberosサーバーの所在をDNSのSRVレコードをもとに解決し,キャッシュする。このときクライアントは,できるだけ自分と同じサイトのドメインコントローラを使うべく,サイト名を含む次のようなレコードをキャッシュしようとする。

_ldap._tcp.Tokyo._sites.dc._msdcs.parent.com.
_kerberos._tcp.Tokyo._sites.dc._msdcs.parent.com.

 しかし,もし障害やメンテナンスなどで上記したSRVレコードで指定されたドメインコントローラが起動していなければ,サイト名を含まない次のようなレコードを参照しようとする。

_ldap._tcp.dc._msdcs.parent.com.
_kerberos._tcp.dc._msdcs.parent.com.

 管理者は,このように動作させるために特別な設定をする必要はない。サイトとサブネットを正しく構成し,ドメインコントローラを配置し,DNSを正常に稼働させておけば,Active Directoryのインストール時に必要なDNSエントリが自動的に構成される(静的なDNSを使用しているならば,手作業で登録してもかまわない)。

 あとは,正しくDNSを参照するようにクライアントを設定しておけば,自動的にサイト名を含むレコードを参照し,それが利用できなければサイト名を含まないレコードを参照してくれる。

 クライアントへの応答速度を重視するならば,そのユーザーやコンピュータを含むサイトに,最低1台はドメインコントローラを配置したい(サイト内のフォルトトレラントを重視する場合は,最低もう1台のドメインコントローラを配置すべきである)。

 ただし,サイトごとにドメインコントローラを配置する場合は,サイトを越えて複製が発生することも考えなければならない。つまり,クライアントへの応答速度を重視するのか,それとも複製トラフィックの削減を重視するか,のトレードオフなのである。したがって,ユーザーがWindows 2000をどのように使用するのか,管理者がオブジェクトや属性をどの程度の頻度で作成したり変更したりするのかによって,重視すべきポイントは変わってくることになる。

 また,Active Directoryの活用が進むにつれて,今後はActive Directoryの検索によるネットワークトラフィックが増大するものと予想される。ユーザーがActive Directory上のオブジェクトを検索するとき,特定のドメインを検索先に指定すると,そのドメインの任意のドメインコントローラをLDAPサーバーとして使用する。しかし,フォレスト全体を検索先に指定した場合は,グローバルカタログを保持しているドメインコントローラを使用する。多くのユーザーが頻繁に検索を実行するような運用になるならば,検索要求をLANの範囲内で解決できることも望まれる。そのためには,サイトごとにドメインコントローラだけではなく,グローバルカタログサーバーも配置する必要がある。ただし,グローバルカタログにはほかのドメインの部分的な複製が含まれるため,ほかのドメインのドメインコントローラとの複製トラフィックがかなり増大するおそれもある。1つのサイトの規模がどの程度なのか,各サイトに何人のユーザーがいるのか,彼らがどのような操作をするのかによっても異なるが,ここでも,クライアントへの応答速度を重視するのか,それとも複製トラフィックを重視するのか,というトレードオフからは逃れられない。

 なお,グローバルカタログは,次のような場面で利用されている。これらの用途を十分に考慮したうえで,グローバルカタログをどこに配置するのかを検討してほしい。

  • フォレストやドメインツリーを検索するとき
  • taro@parent.comのようなUPN(User Principal Name)で別のドメインにログオンするとき
  • 管理者がユーザーを作成するとき(UPNをチェックする)
  • 管理者がユニバーサルグループを作成してメンバーを登録したり,ユニバーサルグループのメンバーがログオンしたりするとき

 ユニバーサルグループを数多く使用する環境や,複数のドメインをUPNログオンで活用する環境では,サイトごとに1台のグローバルカタログサーバーを設置しておくと,応答速度が改善されるため,ユーザーにとっては便利だろう(もちろん,複製トラフィックは増加する)。

 ところで,グローバルカタログには,自分のドメインのすべての複製と,ほかのドメインのすべてのオブジェクトおよびその代表的な属性の情報が格納されている。それだけに,グローバルカタログのサイズは大容量になりやすい。このサイズをあまり大きくしないようにする方法の1つとして,「ユニバーサルグループを必要以上に使わないようにする」ということが挙げられる。ユニバーサルグループは,ほかのグループとは異なり,メンバーの情報をグローバルカタログにも格納する。そのため,ユニバーサルグループを大量に作成すると,グローバルカタログのサイズにも影響が及ぶのである。どうしてもユニバーサルグループを使用する場合は,登録するメンバーを極力少なくするとよいだろう。また,ユニバーサルグループのメンバーを頻繁に変更すると,その都度,グローバルカタログの複製トラフィックが発生することにも注意していただきたい。

 これと同様に,グローバルカタログに必要以上の属性を格納してしまうと,その分だけデータサイズが大きくなり,変更が発生するたびに複製トラフィックが発生する。グローバルカタログに格納する属性は,リソースキットに付属しているスキーマエディタを利用することで,追加したり変更したりすることはできる。しかし,むやみに追加または変更すると,データサイズと複製トラフィックに影響が及ぶ。十分に注意していただきたい。

prevpg.gif Directory design 15/18 nextpg.gif