Active Directory 環境における NTP サーバーの冗長化設定
こんにちは、ひらたつです。
Active Directory 環境では、時刻同期は階層構造となり以下のように時刻が参照されます。
- ドメインコントローラー (FSMO, Flexible Single Master Operation):外部の NTP サーバー
- ドメインコントローラー (FSMO 以外):ドメインコントローラー (FSMO)
- サーバー・クライアント端末:いずれかのドメインコントローラー
※ FSMO の役割の1つに PDC (Primary Domain Controller) エミュレーターがあり、この機能を持っているドメインコントローラーがドメインの中のメインの NTP サーバーとなります。
※以下では PDC エミュレーターの役割を持つドメインコントローラーを DC1、PDC エミュレーターの役割を持たないドメインコントローラーを DC2 と表記します。
DC1, 2 以外のサーバーや、クライアント端末はいずれかのドメインコントローラーを参照します。
しかし、DC2 は DC1 を参照するため、DC1 が停止すると DC2 が時刻同期できなくなり、それに伴いサーバーやクライアント端末が正しい時刻に同期できなくなります。
上記の解決策として以下が考えられます。
- DC2 は DC1 が停止した時に外部の NTP サーバーに同期するようにしておく
- DC2 も常に外部の NTP サーバーに同期するようにしておく
ドメインの中でプライマリーとセカンダリーの関係を明確にできる前者の構成のほうが適していると思われます。
この記事では、PDC エミュレーターが停止した時に、DC2 が外部のドメインコントローラーを参照することで NTP サーバーを冗長構成とする方法を紹介します。
想定環境
- 2台のドメインコントローラーで Active Directory を構成している
- FSMO のドメインコントローラーは外部 NTP サーバー
ntp.sample.jp
を参照している
2台目のドメインコントローラーの設定
NTP の設定項目には以下の2つがあります。
Type
:時刻同期を行う方法を設定するNtpServer
:上記のType
がNTP
またはAllSync
の時に参照される NTP サーバーを設定する
各項目の詳細については以下ご参照ください。
Windows Server 2003 で NTP 設定の Type エントリを AllSync にする方法 | MSeeeeN
この Type
と NtpServer
を変更することで冗長化します。
具体的には DC2 で以下コマンドを実行ください。
C:\Users\Administrator.DC2>w32tm /config /syncfromflags:ALL /manualpeerlist:ntp.sample.jp,0xa /update
C:\Users\Administrator.DC2>w32tm /resync
上記コマンドでは、以下のように設定しています。
Type
:AllSync
NtpServer
:ntp.sample.jp,0xa
Type
を AllSync
とすることで、ドメイン階層と外部NTPサーバーの両方から同期を行う
動作となります。また、NtpServer
を ntp.sample.jp,0xa
とすることで、フォールバック時に利用する NTP サーバーを ntp.sample.jp
と設定しています。
※ 0x2 + 0x8 = 0xa
ですので、0xa
を設定することで、0x2
と 0x8
を設定しています。
0x2
を設定することで、ntp.sample.jp
をフォールバック時に利用する NTP サーバーとして指定できます。
0x8
を指定することで ntp.sample.jp
と明示的に Client/Server Mode による時刻同期ができます。
つまり、このように設定することで以下の動作を実現できます。
- DC2 は通常 DC1 を時刻同期先として参照する
- 何らかの要因で DC1 を時刻同期先として参照できない場合には、
NtpServer
の設定値に基づき外部 NTP サーバーを参照する
この設定で、NTP サーバーを冗長構成にできます。
ご参考になれば幸いです。