
過去に、ローカル ネットワーク上のほとんどのコンピューターの時刻が、最大 1 秒程度以内で一致していないことが分かりました。
そこで、サーバーのスタック (たとえば 48 台の 1U コンピューター) がすべてまったく同じクロックを持つことができることを確認したかったのです。この件に関しては NTP を使用できることはわかっていますし、1 台のサーバーが原子時計から時間を取得し、他のサーバーをその 1 台のサーバーに同期させることができることもわかっています。
しかし、この手法には 1 つの大きな懸念があります。1 つのサーバーが故障すると、時間の同期が停止します...これはまったく良くありません。
48 台のコンピュータのクロックがすべて約 0.5µs の精度で同期されていることを確認する適切な方法はありますか? 0.5µs でなければ、何を期待できますか? (つまり、0.5ms ですか?)
答え1
NTPはサーバのプールを使用できる(例:http://www.pool.ntp.org/ja/ よりただし、独自のものを構築することもできます) を使用すると、1 つのサーバーがダウンする事態を回避できます。また、何らかの理由ですべての親サーバーが利用できなくなった場合でも、サーバーはローカル クロックを維持できます。
答え2
私は実際にブログ投稿私が探していた情報です。クラスターには NTP を使用して 1 ミリ秒で適切に同期されたコンピューターがあると述べています。
それは次のようになりますPTTPマイケル・ハンプトンが提案したように、1台のコンピュータを使用し、グランドマスター、すべてのコンピュータで正しい絶対時刻を取得しようとするのではなく、時刻同期のソースとして(結果として、グランドマスター世界が考えていたものと10msずれている絶対リアルタイム、すべてのノードは 10 ミリ秒ずれます。
その文書で提案されている解決策は次のとおりです。
1)1台のコンピュータをNTPで絶対時刻を取得するように設定します。その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 台のコンピュータすべてを相互に接続する必要はありません。代わりに、3 台から 5 台のコンピュータをそれぞれ少しずつ異なる設定 (c1、c2、c3、c2、c3、c4 など) で接続します。その結果、(1) で定義されたノードにリンクする少数のコンピュータ (3 台から 5 台) で、可能な限り厳密に相互に同期するピアツーピア ネットワークが得られ、local.ntp
時間を可能な限り実時間に近づけることができます。
参照local.ntp
自体はピアとして表示できます (ピアにすることもできます)
PS : 半パブリック ネットワークで使用する場合は、他のユーザーが NTP ネットワークにアクセスできないようにするために、を使用することrestrict
を強くお勧めします。peer