Q

Windows 2000のActive Directoryを,2台のドメイン・コントローラ(DC)で運用しています。一方のDCで優先的に認証しようと,DNS管理ツールでDCを発見するために使うSRVレコードを修正しました。しかし,しばらくすると,古いSRVレコードが復活してしまいます。どうしてなのでょう。また,DCの負荷を優先順位に応じて分散させるにはどうすればよいのでしょうか。

A

Active DirectoryではDCに対するSRVレコードに優先順位(Priority)と重み付け(Weight)を定義することで,DCの負荷分散と可用性向上を図ることができます。これらはいずれも0から65535の値を定義できます。

 特定のDCに優先的に認証させたい場合は,そのDCに対応するSRVレコードについて優先順位の値を小さくします。クライアントは優先順位の項目で最も小さい値を持つSRVレコードのDCに対して認証を求めます。もし,そのDCが応答しない場合は,次のDCに認証を依頼します。

 同じ優先順位値のSRVレコードが複数あった場合は,次に重み付けの値を使って計算をし確率的に選択します。例えば,同じ優先順位を持つAとBの2つのDCがあり,Aの重み付けを100,Bの重み付けを300とすると,Aが選択される確率は100/(100+300)で25%となり,Bが選択される確率は300/(100+300)で75%となります。

 DNS管理ツールで優先順位や重み付けを変更しても,しばらくすると古い値が復活してしまう場合は,DNSゾーンで動的更新が有効となっているのが原因です。正確にDCの負荷を分散するには,DNSゾーンの動的更新を停止すれば大丈夫です。こうすると,優先度や重み付けをDNSサーバーで集中管理できるという利点があります。半面,DCを追加/削除するたびにDNSゾーン情報を手動で設定しなければなりません。

 これが面倒な場合は,レジストリを修正する方法もあります。具体的には,DCマシン上のレジストリで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\Netlogon\Parametersのキーにある,優先順位を表すLdapSrvPriorityと,重み付けを表すLdapSrvWeightの2つのDWORD値を修正します(図1)。この方法なら,DNSゾーンの情報を自動更新できますが,各DC個別に設定しなければなりません。


△ 図をクリックすると拡大されます
図1●ドメイン・コントローラのレジストリにSRVレコードの優先順位と重み付けを直接定義できる
横山哲也