web-dev-qa-db-ja.com

任意の数のコンピューターのローカルネットワークでコンピューターの時計をどの程度正確に同期させることができますか?

過去に、ローカルネットワーク上のほとんどのコンピューターが最大1秒以内に実際には同じ時間を持っていないことを確認しました。

そのため、サーバーのスタック(たとえば、48台の1Uコンピューター)がすべてまったく同じクロックを持つことができるようにしたかったのです。私はNTPを使用できることを知っており、1つのサーバーに原子時計から時間を取得させ、他のサーバーをその1つのサーバーに同期させることができることを知っています。

ただし、この手法に関する主な懸念事項が1つあります。そのサーバーが故障すると、時刻の同期が停止します...まったく良くありません。

48台のコンピューターすべてのクロックが約0.5µsの精度で同期されていることを確認する適切な方法はありますか? 0.5µsでない場合、何を期待できますか? (つまり、0.5ms?)

1
Alexis Wilke

NTPは、サーバーのプールを使用して(たとえば、 http://www.pool.ntp.org/en/ ですが、独自に構築することもできます)、one-server-is-downのケースを回避できます。何らかの理由ですべての親サーバーが使用できない場合、サーバーはローカルクロックを維持することもできます。

2
thrig

私は実際に ブログ投稿 私が探していた情報を見つけました。彼らは、彼らのクラスターには、NTPを使用して1msで適切に同期されたコンピューターがあると述べています。

[〜#〜] ptp [〜#〜] のように見えますが、Michael Hamptonが提案しているように、次の場合と同じ戦略に従います。1台のコンピューターを使用しますすべてのコンピューターで正しい絶対時間を取得しようとするのではなく、時刻同期のソースとしてのグランドマスター(結果として、グランドマスターの場合は世界が考えているものから10msずれています絶対リアルタイム、すべてのノードは10msずれています)。

そのドキュメントで提案されている解決策は次のとおりです。

1)NTPで絶対時間を取得するように1台のコンピューターをセットアップします。その1台のコンピューターがダウンした場合、クロックはドリフトし始める可能性がありますが、それらは互いに不正確になることはなく、絶対リアルタイムのみと比較してドリフトします。

この場合、server定義を使用します(グランドマスター):

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
...

また、このコンピューターをNTPサーバー、たとえばlocal.ntp

2)他のコンピューターをピアとしてセットアップします

server local.ntp   # only on a few other (3 to 5) computers
peer c0 iburst
peer c1 iburst
peer c2 iburst

48台のコンピューターすべてを相互に接続する必要はありません。代わりに、わずかに異なるセットアップ(c1、c2、c3、次にc2、c3、c4など)を使用する各コンピューターで3〜5台のコンピューターを使用します。 (1)で定義されたノードにリンクしている数台のコンピューター(3〜5)を使用して、相互に可能な限り密接に同期するピアツーピアネットワークを取得します。つまり、local.ntp、時間をできるだけリアルタイムに近づけるため。

local.ntp参照自体をピアと見なすことができます(ピアにすることもできますか?)

P.S.セミパブリックネットワークでrestrictを使用する場合は、他のユーザーがNTPネットワークにアクセスできないようにするために、peerを使用することを強くお勧めします。

0
Alexis Wilke