web-dev-qa-db-ja.com

複数のサーバーの時刻を同期させる方法

サーバーのクラスターに完全に同じ時刻を設定します。すべてがUTCタイムゾーンを使用しています。

NTPを現在使用していますが、それぞれ10〜20ミリ秒ずれているようです。

それぞれを正確な時間に保つための最良の方法は何ですか?

6
pdeva

NtpdをLANの外部のNTPサーバーに接続して時刻を同期すると、すべての接続が複数のルーターを経由する必要があり、それぞれがトラフィックに応じて予測不可能なレイテンシを持つため、不整合が発生する可能性があります。各サーバーが単独で接続する場合、すべてのサーバー間の時間は少しずれます。

不整合を回避するには、ローカルNTPサーバーを作成し、時間を外部NTPサーバープールと同期させ、このローカルNTPサーバーをローカルサーバーへの「マスタークロック」:

  1. ローカルNTPサーバー

    このサーバーは、地理的に近いプール上のNTPサーバーと同期するように構成します。 this site では、サーバーのリストを取得して、近くに1つ取得できます。それはそれらと同期して時間を保ちます。

  2. サーバー上のNTPデーモン

    ローカルのNTPサーバーに接続するように、すべてのサーバーでntpdを構成します。最後の低遅延LANでローカルNTPサーバーを管理する場合、スキューは最小限になります。

この実装を使用すると、サーバーの時間が互いに同期します。

20
ThoriumBR

他の人が指摘したように、ローカルのNTPパブリックサーバーから同期し、他のサーバーに低遅延サービスを提供するサーバーは、おそらくあなたができる最高の方法でしょう。

空が見える場合は、GPSから非常に正確な外部同期を取得できますが、これは実際的ではないことがよくあります。

ローカルデーモンを実行する代わりに、NTP(例:cronからのntpdate)をポーリングしているか、または実際に問題が発生しています。ネットワークでのテストとレイテンシ、およびサーバーの同期が思ったよりよくなる場合があります。

3
mc0e
  1. NTP= PTPへの移行を検討しましたか? http://en.wikipedia.org/wiki/Precision_Time_Protocol
  2. NTPから離れることができない場合は、おそらくマルチキャストが役立ちます。 http://doc.ntp.org/4.1.1/confopt.htm

どちらの方法でも、正しいことを行うための明らかなことの1つは、高品質のタイムソースです。独自のGPSレシーバーや原子時計をデータセンターに取得するか、複数の外部ストラタム0クロックに接続します。その後の戦略は少し不確かです。インターネットのどの種類の時計が層0としてそれを提供しているのかは決してわかりません。それらは、本当に良い時計からおじいちゃんのカチカチまで何でもかまいません。

pS使用する ntpq -c peers接続しているクロックの階層レベルを確認します。デバッグの詳細については、 http://www.clock.org/ntp/debug.html を参照してください。

2
kerolasa