web-dev-qa-db-ja.com

仮想マシンでNTPサーバーを実行する場合の制限は何ですか?

ローカルネットワークに複数のStratum 2タイムサーバーをセットアップしたい。仮想マシンは、3台の1Uサーバーを購入するよりも確かに安価な方法です。そうすることでどのような制限が課されますか?つまり、精度はどの程度悪影響を受けますか?

さらに、ハードウェアの不規則性を軽減するために、これらのローカルタイムサーバーは別の物理マシンに配置する必要があるというのが本能です。この直感は正しいですか?

編集「仮想マシン」とは、具体的には具体的には意味しなかったと言うべきです VMware 。むしろ、仮想化されたインスタンスの一般的な概念を意味しました。

16
James A. Rosen

単純な事実は、a VM=内のクロック精度はまだ本当に悪いです。これはいくつかの点から来ますが、時間ドリフトが一定ではないことです;ドリフト係数は瞬間から変化しますNTPは、クロック補正が組み込まれているプロトコルですが、静的ドリフト係数が組み込まれて設計されています。たとえば、物理マシンが30日ごとに12秒を失う場合、 NTPはそれを補うことができ、非常にうまく機能します。しかし、そのマシンが30日ごとに4〜70秒の範囲で失われる可能性がある場合、NTPはそうではありませんそのレベルの変化を追跡するのが得意です。

NTPがVM環境で追いつくのが本当に難しいのは、1分でドリフトファクターを変更できるローカルクロックがあるためです。 。親タイムソースをチェックしている頻度に応じて、ドリフト要因が大きく変化し、同期がはるかに頻繁に外れる可能性があります。非同期の時間は、組織全体に波及します。

ローカルネットワークのNTPは、メモリフットプリントが非常に小さい比較的影響の少ないプロトコルであり、DNSサーバーやDHCPサーバーなどの他のネットワークインフラストラクチャサーバーに喜んで便乗できます。一部のルーターはNTP=機能を提供することもできるので、それを調べたいと思うかもしれません。

理想的には、2つの異なるサーバーを別々の場所に置き、それぞれが異なる上位層サーバーのセットと同期するようにします。両方のタイムサーバーが他のサーバーを「ピア」として使用するように設定されていることも非常に良い考えです。これにより、アップストリームのタイムソースの1つが失敗した場合のタイムサービスへの影響が最小限になります。階層が変更されますが、少なくとも非同期の報告はされません。そして最後に、アップストリームタイムプロバイダーに親切にし、時間を十分に確立したら、ポーリングの間隔が非常に長くなるようにサーバーを構成します。これは、「サーバー」行の「maxpoll」パラメーターであり、同期試行間の秒単位の2の累乗です。

このために絶対にVMを使用する必要がある場合は、3つ以上のNTP=サーバーをセットアップします。これらはそれぞれ異なるホスト上にあり、可能であれば異なるデータ内にある必要があります。 -center。先ほど提案したように、異なるタイムソースが必要であり、互いにピアリングする必要があります。次に、3つすべてを親ソースとして使用するようにすべてのNTPクライアントを構成します。 maxpollの値は、ネットワーク外の同期パケットとネットワーク上で30分の間に1時間半を超えないように十分に低くなっています。3つのうち少なくとも1つは常に同期している可能性があります。クライアントの場合このシナリオでの時間の質は、物理サーバーの場合ほど正確ではありません。

私が球場に停めなければならなかった場合、私は、純粋なVM環境でのコンセンサス時間は、おそらく30〜100ミリ秒以内になると思います。純粋に物理的な環境では、サーバーが落ち着くまでの時間が十分に長くなったら、コンセンサス時間はおそらく10ms以内になります。

20
sysadmin1138

VMwareタイムキーピング ドキュメント を参照してください。 NTPデーモンをVMで実行することは、特に信頼できる時間を必要とする場合は、おそらく良い考えではありません。

11
Zoredache

残念ながらntpと仮想化はうまく連携していません。ほとんどの場合、クライアントは問題ありませんが、ntpサーバー(esp str2以上)は通常、仮想サーバーで確実に動作しません。

xenおよびxenエンタープライズの観点からコメントしていますが、vmware/kvmはまったく同じだと思います。

別のサーバーについても、そうです、そうです。理想的には、それらも別の環境にある必要があります。これにより、温度/湿度も精度に影響を与えませんが、少なくとも私は気にしません。また、それを行っても、適切な原子時計ほど正確ではないことを忘れないでください。この(わずかな)偏差だけを受け入れてください。

6
rytis

NTP仮想化環境で実行すると、運が良ければ20msの精度が得られます(これは、VMwareを使用して行ったものです)。仮想化されたクロックスキューは、特にリソースのある仮想化環境では悪いです競合。

それはあなたがどれほど正確である必要があるかに依存します。リソースの競合がない限り、2番目(Webサーバーの場合など)にのみ関心がある場合は問題ないでしょう。ミリ秒単位の精度が必要な場合(使用中のデータベース、ログサーバー、研究プロジェクトなど)、仮想化されたタイムサーバーを忘れてください。

NTPサーバーは常に物理ホスト上にある必要があります。少なくとも3つはプールでピアリングしている必要があります(1つの不正なサーバーがプールによって投票されるようにするため)。可能であれば、インターネット経由ではなく、GPSまたはその他のローカルのTier 0ソースから時間を取得します。

1
Steve Shipway