Windowsの時刻同期でエラーになるのをなんとかしてみる

この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

Windows Serverの時刻同期、どうしていますか?

Windowsですので、GUIで気軽に設定できるのは魅力ですが、細かいところが設定できなかったり罠っぽいところがあります。
通常の使用では問題にならないかもしれませんが、時刻同期に比較的シビアさを要求されて、さてどうしようとなることがあります。
この課題を解決してみました。

いつもの時刻同期

まず、AWSのWindows Serverのタイムゾーンは世界標準時(UTC)になっています。
気に入らないとなれば、日本時間(JST)に変更します。
これを
Windows date update 01

こんな感じに。
Windows date update 02

続いて、下図のようにNTPサーバの指定を変えたりして時刻同期を取れるようにするわけですが、
Windows date update 03
こちらの時刻同期は1週間に一度の頻度で、しかもこれに失敗してもリトライしないようで、下手をするとどんどん時刻がずれていきます。
これを何とかするのが、今回のお題となります。

用意するもの

  • お近くのWindows Server 2008 R2
  • Windows ServerのAdministratorアカウント
  • Windows Serverが時刻同期したいNTPサーバに繋がること(セキュリティグループ等を適宜設定してください)
  • お時間30分ほど
※今回はドメインサービス(Active Directory)を考慮していません。

解決した方法

Windows Timeサービスの設定や時刻同期の状態を確認したり、設定変更や手動同期を行ったりする、大変便利なコマンドであるw32tmコマンドを使います。
「GUIでできなければCUIでやればいいじゃない」 次のように実行します。 w32tm /config」が設定するという意味です。 「/manualpeerlist:"〜",0x8」は、同期するNTPサーバの指定です。
空白で区切り「"〜"」で囲んで複数のNTPサーバを指定できます。
今回はインターネットマルチフィード 時刻情報提供サービス for Publicのサーバを指定しています。
0x8」は下記の意味です。
方式説明
0x0 Symmetric Active/Passive Mode NTPによる標準的な時刻同期
(ただし、相手のNTPサーバが対応している必要あり)
0x1 Special Interval Windows上のみ実装された定間隔での同期
0x2 Use As Fallback Only ドメインおよび外部の両方から時刻を同期
0x4 Symmetric Active 明示的なSymmetric Active/Passive Modeによる同期
0x8 ClientモードでのNTP要求 明示的なClient/Server Modeによる同期
/syncfromflags:MANUAL」は、指定した一覧から同期を取るという意味です。 「/update」はサービスに変更されたことを通知し、変更内容を有効にします。 次に、念のため、サービスを再起動します。 どんな設定になったか、これでもかと確認してみます。 w32tm」とだけ実行すればヘルプが出ますので、そちらをご覧ください。 最後の「w32tm /query /peers」の実行結果からNTPサーバが3つ指定されていることが分かります。
同結果からポーリング間隔が1,024秒と分かりました。
ポーリング間隔は、下図レジストリの「MaxPollInterval」「MinPollInterval」の値で決まります。
Windows date update 04
キーの場所「¥HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥services¥W32Time¥Config
MinPollInterval」が、2^10 = 1,024秒 ≒ 17分で、
MaxPollInterval」が、2^15 = 32,768秒 ≒ 546分 ≒ 9時間となり、この間で時刻の差異により同期が行われることを意味します。
少なくとも9時間以内に時刻同期が行われるので、時刻ずれは起きてもほとんどすぐ直ると考えて良いのではないでしょうか。 また、上記の設定を行った後は、GUIのプロパティ画面では設定を変更しないほうが良さそうです。

終わりに

検証で経過観察している部分がありますが、ひとまずこれで解決したようです。
ただの時刻同期と思っていましたが、思ったより深くて調べることが多かったです。
この記事が、何かのヒントになれば幸いです。

AWS運用自動化サービス「Cloud Automator」無料トライアルはこちらから

COMMENT ON FACEBOOK