web-dev-qa-db-ja.com

散発的なインターネット接続しかないネットワークで分散型NTP?

私は(ほとんどの場合)複数のコンピューターで構成される分離されたネットワークを持っています。

          computer 0 -- external NTP server
        / 
switch -- computer 1 -- external NTP server
        \  
          computer n -- external NTP server

上記のグラフの接続のごく一部のみが、いつでも利用できる可能性があります。特に、外部NTPサーバーへの接続はほとんどの場合利用できません。

明示的なクライアント/サーバーの役割なしで、chronyを使用してすべてのコンピューターの同期を維持するにはどうすればよいですか?

要件:

  1. 任意の時点で、コンピューターのサブセットのみが稼働している可能性があります。彼らは同期を取り、維持できるはずです。別のコンピューターを起動する場合は、それも同期する必要があります。絶対時間は重要ではありません(エラーが数秒/数分の大きさである限り)。重要なのは、ネットワーク内のすべてのコンピューターが同期していることです。
  2. 散発的に任意のコンピューターがインターネットに接続されている可能性があり、外部NTPサーバーから正しい絶対時間を取得し、その時間をローカルネットワークに分散できるはずです。

ネットワーク上の各コンピューターを外部NTPサーバー(最初はオフラインとしてマークされている)で構成し、すべてのコンピューターを相互のピアとしてリストすることを考えました。これは正しい方法ですか?到達可能なNTPサーバーのないネットワークにNTPピアしかない場合、何が起こるかについての情報は見つかりません。クロックは適切な時間に収束しますか、それともこの構成は不安定になるため、全体的なドリフトは、ネットワーク内の1台のコンピューターの最悪のハードウェアクロックドリフトよりもさらに悪化する可能性がありますか?


編集:

適切なchrony構成についての私の考えを強調するには:次のアプローチは良い考えですか?

/etc/chrony/chrony.confコンピューター0:

pool external.ntp.pool offline
peer computer_1
peer computer_2
peer computer_n
local stratum 10

/etc/chrony/chrony.confコンピューター1:

pool external.ntp.pool offline
peer computer_0
peer computer_2
peer computer_n
local stratum 10

等々 ...

2
Bloops

あなたの問題に対する最も簡単で最良の(しかし最も高価ではない)解決策は、そのネットワーク上に小さな電波時計デバイス(GPSまたはWWVB /短波)をセットアップすることです。デバイスにNTP configのサーバーとして使用させ、デバイスに障害が発生した場合のフォールバックのために相互にピアリングします。

ブロードキャスト無線信号は一方向であるため、これはネットワークの分離に関するセキュリティ要件を満たします。

NTPサーバーとして機能するGPSおよびWWVBデバイスは、多くの価格帯で広く入手できます。

ネットワークがとにかく無線信号を受信できない場合(潜水艦、強化バンカーなど)、このuソリューションは機能しません。しかし、それがあなたのシナリオであるなら、あなたはおそらくある種のローカル周波数標準をインストールするためのお金を持っているでしょう。

3
rmalayter
  1. これをしないようにしてください。 @rmalayterの回答に対する回答によると、NTPは分散型プロトコルではありません。正確な時間は、クライアントに時間を提供する「中央」(つまり、より高い階層)サーバーに依存します。 BeagleBone、Raspberry Pi、または同様の組み込みシステムは、これを行うための簡単で安価な方法です。
  2. 提案した構成はほとんど機能するはずです。私はいくつかのことを提案します:
    • offlineを使用しないでください-poolがネットワーク接続を開始または回復すると、chronydディレクティブは自動的に再試行します。
    • Orphan行にlocalを追加します-これはシナリオを補正するために特別に設計されたNTP機能です。これにより、ピアの1つが選出されます。アップストリーム接続が利用できない場合のローカルマスター。
    • ホストがピアとしての構成に独自のアドレスを持っていても無害です。chronydは自動的にそれを無視します。これは、すべてのホストに同じ構成を出荷できることを意味する便利な機能です。
2
Paul Gear