単純な事実は、VM内のクロック精度が依然として非常に悪いことです。これはいくつかの点に由来しますが、致命的なことは、時間ドリフトが一定ではないことです。ドリフト係数は時々刻々と変化します。NTPは、クロック補正が組み込まれたプロトコルですが、静的ドリフト係数が組み込まれた設計になっています。たとえば、物理マシンが30日ごとに12秒失われた場合、NTPはそれを補正できます。しかし、そのマシンが30日ごとに4〜70秒の損失を被る可能性がある場合、NTPはそのレベルの変更を追跡するのにあまり適していません。
NTPがVM環境に遅れずについていくのを本当に難しくしているのは、NTPが見るローカルクロックが1分間でドリフトファクターを変更できることです。親のタイムソースをチェックしている頻度に応じて、大きなドリフトファクターの変化を引き起こし、はるかに頻繁に非同期になる可能性があります。組織全体で非同期の時間カスケード。
ローカルネットワークのNTPは、メモリフットプリントが非常に小さい比較的影響の少ないプロトコルであり、DNSサーバーやDHCPサーバーなどの他のネットワークインフラストラクチャサーバーに喜んで便乗できます。一部のルーターはNTP機能を提供することもできるので、調べてみてください。
理想的には、それぞれが異なる上位階層サーバーのセットと同期する別々の場所に2つの個別のサーバーが必要です。また、両方のタイムサーバーが他のサーバーを「ピア」として使用するように構成されていることをお勧めします。階層の変更はありますが、少なくとも非同期を報告することはありません。そして最後に、アップストリームのタイムプロバイダーに優しくして、時間が十分に確立されたら、ポーリング間で非常に長い時間をかけるようにサーバーを構成します。これは、「サーバー」行の「maxpoll」パラメーターであり、同期試行間の秒単位の2の累乗です。
このために絶対にVMを使用する必要がある場合は、3つ以上のそのようなNTPサーバーをセットアップします。これらはそれぞれ異なるホスト上に存在する必要があり、可能であれば異なるデータセンターに存在する必要があります。私がちょうど提案したように、それらは異なるタイムソースを必要とし、互いにピアリングする必要があります。次に、3つすべてを親ソースとして使用するようにすべてのNTPクライアントを構成します。maxpollの値が、ネットワーク外の同期パケットとネットワーク上で30分の間で1時間半を超えないように十分に低くなるようにしてください。3つのうち少なくとも1つがいつでも同期している可能性があります。1人のタイムホストのみと通信できるクライアントの場合、偶発的な非同期イベントに我慢する必要があります。全体として、このシナリオの時間品質は、物理サーバーの場合ほど正確ではありません。
ボールパークをしなければならなかったとしたら、純粋なVM環境でのコンセンサス時間は、おそらく30〜100ミリ秒以内であると思います。純粋に物理的な環境では、タイムサーバーが安定するまでの時間が十分に長くなれば、コンセンサス時間はおそらく10ミリ秒以内になります。