私は(ほとんどの場合)複数のコンピューターで構成される分離されたネットワークを持っています。
computer 0 -- external NTP server
/
switch -- computer 1 -- external NTP server
\
computer n -- external NTP server
上記のグラフの接続のごく一部のみが、いつでも利用できる可能性があります。特に、外部NTPサーバーへの接続はほとんどの場合利用できません。
明示的なクライアント/サーバーの役割なしで、chronyを使用してすべてのコンピューターの同期を維持するにはどうすればよいですか?
要件:
ネットワーク上の各コンピューターを外部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
等々 ...
あなたの問題に対する最も簡単で最良の(しかし最も高価ではない)解決策は、そのネットワーク上に小さな電波時計デバイス(GPSまたはWWVB /短波)をセットアップすることです。デバイスにNTP configのサーバーとして使用させ、デバイスに障害が発生した場合のフォールバックのために相互にピアリングします。
ブロードキャスト無線信号は一方向であるため、これはネットワークの分離に関するセキュリティ要件を満たします。
NTPサーバーとして機能するGPSおよびWWVBデバイスは、多くの価格帯で広く入手できます。
ネットワークがとにかく無線信号を受信できない場合(潜水艦、強化バンカーなど)、このuソリューションは機能しません。しかし、それがあなたのシナリオであるなら、あなたはおそらくある種のローカル周波数標準をインストールするためのお金を持っているでしょう。
offline
を使用しないでください-pool
がネットワーク接続を開始または回復すると、chronyd
ディレクティブは自動的に再試行します。Orphan
行にlocal
を追加します-これはシナリオを補正するために特別に設計されたNTP機能です。これにより、ピアの1つが選出されます。アップストリーム接続が利用できない場合のローカルマスター。chronyd
は自動的にそれを無視します。これは、すべてのホストに同じ構成を出荷できることを意味する便利な機能です。