chrony ve systemd-timesyncd - NTP istemcileri arasındaki farklar ve kullanım durumları nelerdir?


18

Her nasılsa ama oldukça eski soru üzerine inşa değil "ntpd vs systemd-timesyncd - Güvenilir NTP senkronizasyonu nasıl elde edilir?" , Bir NTP istemcisi açısından chrony ve systemd-timesyncd arasındaki farkları sormak istiyorum .

Chrony bir NTP istemcisi dahil olmak üzere tam teşekküllü bir NTP daemon çözümü iken systemd-timesyncd az ya da çok minimal ntp istemci uygulaması olduğunu biliyorum.

Ubuntu Bionic Beaver sürüm notları aşağıdakileri belirtir :

Basit zaman senkronizasyonu için temel sistem zaten systemd-timesyncd ile birlikte gelir. Chrony, yalnızca zaman sunucusu olarak veya reklamı yapılan reklamların daha doğru ve verimli senkronizasyonunu istiyorsanız gereklidir.

İşi yapmak için önceden yüklenmiş minimal bir araç kullanma fikrini seviyorum ve systemd-timesyncd'nin kullanım durumlarım için işi yapacağından eminim, yine de merak ediyorum:

  • Doğruluk açısından ikisi arasındaki gerçek dünya farkları nelerdir?
  • Verimlilik farkları nelerdir?
  • NTP istemcisi olarak chrony için "basit olmayan" zaman senkronizasyonu ihtiyacı nedir?

Yanıtlar:


13

Systemd HABER dosyasında systemd-timesyncd duyuru böyle chrony ile karşılaştırıldığında bu aracın farklılıklarını ve araçları açıklayan iyi bir iş yapar. (benimkini vurgulayın):

Sistem saatini ağ üzerinden senkronize etmek için yeni bir "systemd-timesyncd" arka plan programı eklendi. Bir SNTP istemcisi uygular . Chrony veya NTP referans sunucusu gibi NTP uygulamalarının aksine, bu yalnızca bir istemci tarafı uygular ve tam bir NTP karmaşıklığı ile uğraşmaz, yalnızca bir uzak sunucudan zamanı sorgulamaya ve yerel saati senkronize etmeye odaklanır . Ağa bağlı istemcilere NTP sunmak istemiyorsanız veya yerel donanım saatlerine bağlanmak istemiyorsanız, bu basit NTP istemcisi çoğu kurulum için uygun olandan daha fazla olmalıdır. [...]

Bu kurulum, bir sunucu filosundaki çoğu ana bilgisayar için yaygın bir kullanım durumudur. Genellikle, kendilerini donanım dahil olmak üzere birden çok kaynaktan senkronize edilen yerel NTP sunucularından senkronize edilirler. systemd-timesyncd, bu yaygın kullanım durumu için kullanımı kolay bir çözüm sağlamaya çalışır.


Özel sorularınızı yanıtlamaya çalışın:

Doğruluk açısından ikisi arasındaki gerçek dünya farkları nelerdir?

Sistemd-timesyncd için özellikle desteklenen bir kullanım durumu olmayan birden fazla kaynaktan senkronizasyon verileri alarak daha yüksek doğruluk elde edebileceğinizi düşünüyorum. Ancak, güvenilir dahili ağınıza bağlı merkezi NTP sunucularından senkronizasyon verileri almak için kullandığınızda, birden fazla kaynak kullanmak gerçekten alakalı değildir ve tek bir kaynaktan iyi doğruluk elde edersiniz.

Sunucunuzu yerel bir ağdaki ve aynı veri merkezindeki güvenilir bir sunucudan senkronize ediyorsanız , NTP ve SNTP arasındaki doğruluk farkı neredeyse hiç olmayacaktır. NTP RTT'yi hesaba katabilir ve zaman ölçümleri yapabilir, ancak RTT'niz gerçekten küçük olduğunda, bu da hızlı bir yerel ağ ve yakındaki bir makine için yararlı değildir. Kullandığınız kaynağa güvenebiliyorsanız, birden fazla kaynağa da ihtiyacınız yoktur.

Verimlilik farkları nelerdir?

Hangi kaynakların diğerlerinden daha iyi olduğuna karar vermeniz ve muhtemelen birden çok kaynaktan gelen bilgileri birleştirmeniz gerekmediğinden, tek bir kaynaktan senkronizasyon almak, onu birden çok kaynaktan almaktan çok daha basittir. Algoritmalar çok daha basittir ve basit durum için daha az CPU yükü gerektirir.

NTP istemcisi olarak chrony için "basit olmayan" zaman senkronizasyonu ihtiyacı nedir?

Bu, yukarıdaki alıntıda ele alınmıştır, ancak her durumda bunlar, systemd-timesyncd tarafından kapsanmayan Chrony için kullanım durumlarıdır:

  • NTP sunucusu çalıştırmak (böylece diğer ana bilgisayarlar bu ana bilgisayarı senkronizasyon kaynağı olarak kullanabilirler);
  • NTP senkronizasyon bilgilerinin birden çok kaynaktan elde edilmesi (bu bilgilerin internetteki ortak sunuculardan alınması ana bilgisayarlar için önemlidir); ve
  • genellikle uydulardan doğru zaman bilgisi alabilen GPS cihazları gibi özel donanımları içeren yerel saatten senkronizasyon bilgisi almak.

Bu kullanım durumları Chrony veya ntpd veya benzerlerini gerektirir.


1
Ayrıntılı cevabınız için çok teşekkürler ve sorularımı özel olarak ele aldığınız için teşekkürler. Bunun üzerinde durmak için: - - 1. Doğruluk deltasının büyüklük sırası nedir. Bunun bilinmesi kesinlikle karar vermeye biraz madde katacaktır. 10 ^ -9 veya 10 ^ -1 saniyeden mi bahsediyoruz? - - 2. Verimlilikle ilgili cevabınız beni daha da saygılı kıldı: - küfürlü bir şekilde - birkaç sayının ortalamasının alınması, CPU yüküne o kadar çok katkıda bulunuyor ki, Ubuntu sürüm notlarında belirtmeniz gerekiyor mu?
wedi

3
@ wedi: timesyncd'nin doğruluğu esas olarak sunucuya ve ağa bağlı olacaktır. Sadece tek bir sunucuyla, sunucunun sahte veri döndürüp döndürmediğini anlamanın bir yolu yoktur, bu yüzden tam olarak güvenmeniz gerekir. (Bundan maksimum hata sınırsızdır). Elde edebileceğiniz maksimum doğruluk, sizinle sunucu arasındaki ağ değişkeni tarafından belirlenir (birkaç milisaniye veya daha fazla olabilir).
TooTea

1
Teşekkürler, @TooTea! Tamam. Anlıyorum. Böylece artan doğruluk, birden fazla kaynak kullanmaktan kaynaklanır ve tek bir kaynakla yaptığı herhangi bir özel sihir ihmal edilebilir. Benim anlayışım: - - 1. Bir GCE örneği üzerinde tek bir zaman sunucusu metadata.google.internal kullanılması => doğrulukta ölçülebilir bir fark yok (zaman ölçümünü ve diğerlerini hariç tutalım) - - 2. Bir vm'de büyük bir üne sahip üç zaman sunucusunu kullanma bazı yerleşik hosting şirketi => bir fark görüyorsunuz ama "çok" değil (ne olursa olsun) - - 3. Bazı ISS ile bağlı bir raspi üzerinde pool.ntp.org kullanarak => larry alabilirsiniz kadar mutlu.
wedi

Her üç @ de doğru söyleyebilirim. Özellikle (1), makinenizle aynı "yerel ağda" ve esas olarak aynı veri merkezinde (çok düşük rtt ve çok düşük titreşim) bir zaman sunucusu kullanıyorsanız, NTP'nin ve SNTP'ye karşı zaman ölçümünün doğrulukla ilgili faydalarını, çok düşük olacak. Bu nedenle NTP'yi (SNTP'yi değil) çalıştırmak için çok az neden var!
filbranden

@wedi Cevabı, yerel bir ağda güvenilen bir sunucu kullanarak açıkça belirtmek için güncelledi.
filbranden

14

Diğer cevap doğru bir şekilde belirtildiği gibi, chronyNTP ve systemd-timesyncdSNTP'yi uygular .

Zaman hizmeti istemcisinin bakış açısından:

SNTP uygulanması çok daha basit bir protokoldür;
NTP zamanında adım adım artışlara / düzeltmelere izin verir. NTP'nin önemli bir avantajı, daha kesin bir zaman elde etmek için cevabın RTT'sini de dikkate almasıdır.

Gönderen https://www.meinbergglobal.com/english/faq/faq_37.htm

Tam özellikli bir NTP sunucusu veya istemcisi çok yüksek bir doğruluk seviyesine ulaşırken ve farklı matematiksel ve istatistiksel yöntemler ve sorunsuz saat hızı ayarlamaları kullanarak mümkün olduğunca ani zaman adımlarından kaçınırken, SNTP yalnızca gereksinimlerin olduğu basit uygulamalar için önerilebilir doğruluk ve güvenilirlik çok zorlayıcı değildir. Sürüklenme değerlerini göz ardı ederek ve sistem saati ayarlama yöntemlerinin basitleştirilmiş yollarını kullanarak (genellikle basit zaman adımı), SNTP tam bir NTP uygulamasıyla karşılaştırıldığında yalnızca düşük kaliteli bir zaman senkronizasyonu sağlar.

SNTP çok daha basit bir yaklaşım benimser. NTP algoritmasının karmaşıklıklarının çoğu kaldırılır. Eğriltme süresinden ziyade, birçok SNTP istemcisi adım adım. Bu, basit bir zaman damgasının gerekli olduğu birçok uygulama için uygundur. Ayrıca, SNTP birden fazla NTP sunucusunu izleme ve filtreleme özelliğine de sahip değildir. Genellikle basit bir round-robin yaklaşımı kullanılır, burada bir sunucu başarısız olursa, listedeki bir sonraki kullanılır.

Gönderen https://www.masterclock.com/company/masterclock-inc-blog/ntp-vs-sntp

NTP, SNTP'den çok daha doğru ve hassastır ve bu da onu çoğu kurumsal uygulamada fiili kazanan yapar. Öte yandan, SNTP'nin sadeliği IP kameralar, DVR'ler ve bazı ağ anahtarları için daha uygun hale getirir. Bu tür donanımlar, daha karmaşık protokolleri işlemek için işlem kaynaklarından yoksundur, ancak bağlı cihazlar giderek daha güçlü hale geldikçe, bu değişebilir.

SNTP'nin önemli bir zayıf noktası, Ağ Zaman Protokolü'nün varsayılan olarak yaptığı gibi birden fazla kaynaktan zaman alarak bunu daha doğru hale getirememenizdir.

VM zamanını değiştirmeye çalışan hem hipervizör hem de NTP arka plan programınız olduğunda, NTP'den daha fazla sorun veren SNTP uygulamalarının sanallaştırmada olduğunu görebileceğim bir diğer önemli nokta. Özellikle bazı yanlış konfigürasyonlarla zamanında anlaşmamaları, her ikisinin de aktif olmasına neden olur, büyük sorunlara neden olabilir. (Yetkili sistem yöneticileri zamanla senkronizasyon için yalnızca bir yöntem etkin kalırken, her ikisi de bir yapılandırma hatasıyla etkin olabilir).

PS systemd-timesyncdkullanılmadığında tavsiye edilen bir alternatif olmamalıdır systemd.


1
Tamamen belli değil. Teorik olarak, systemd-timesyncdprogram başka bir servis yöneticisi altında çalıştırılabilir . service-manager2018'den beri nosh araç setinin altında çalıştırmak için bir hizmet paketi sağladım. Kaçırdığınız şey, sistemd kişilerinin (Debian bug # 812522'ye göre) VirtualBox konuk hizmetlerini ve diğerlerini systemd-timesyncdkullanımını önlemek için açıkça hizmetle çatışmaya teşvik etmesidir. sanal makinelerde.
JdeBP

@JdeBP İlginç bir açıklama Debian'ı kullanmadan kullanıyorum systemd.... Bununla birlikte, vmtools timesync devre dışı bırakılabilir ve devre dışı bırakılabilir ve NTP hizmetleri (örneğin NTP sunucu VM'leri) yapan sunucularda devre dışı bırakılmalıdır ve bazı sistem yöneticileri vmtools tarafından senkronize edilmeye devam eder, diğerleri vmtools timesync'i devre dışı bırakan VmWare belgelerini takip ederler (yalnızca ne yaptığınızı biliyorsanız kullanılmalıdır). Bu hata çözülecek doğrusal değildir ve vmtools timesync kullanmama tavsiyelerini izleyen insanlar tarafından kolayca gözden kaçan ekstra bir yapılandırma noktası olacaktır.
Rui F Ribeiro

(yorumunuzun ışığında cevabımı düzenleyin, vmtools vs (S) NTP'yi yönetme ve daha açık hale getirme hakkındaki bir metinde bir hata vardı)
Rui F Ribeiro

1
@wedi Hipervizörlü VmWare timesync durumunda hem Vcenter'da, VM görüntü konfigürasyonunda hem de Linux tarafında devre dışı bırakılabilir. bkz. ilgili unix.stackexchange.com/questions/492487/…vmware-toolbox-cmd timesync disable VmWare'lerin bu VM'ler için zaman senkronizasyonu devre dışı bırakıp bırakmadıkları her zaman NTP sunucularımda yapıyorum. (Ayrıca genellikle Chrony'yi bir NTP istemcisi olarak kullanmayı tercih ederim)
Rui F Ribeiro

1
Olası zaman senkronizasyonu yarışına dikkat çektiğiniz için mutluyum! Bunu akılda tutmak güzel!
wedi

0

chronybir çatal formu değildir ntpdancak sıfırdan uygulanır. Hem uygular istemci ve sunucu tam NTPv4 protokolü (şekillerini RFC5905 ). Kurumsal sınıf kullanıcıları, biz geleneksel bir eğilim geçiş görüyoruz ntpdiçin chronyRed Hat (itibaren RHEL 7) ve (SLES 15) SuSE gibi.

systemd-timesyncdyalnızca SNTP protokolü ( RFC4330 ) istemci modunu uygulayın. Bu nedenle karmaşık kullanım durumları kapsam dışıdır systemd-timesyncd. Örneğin, SNTP varsayılan olarak NTP gibi birden çok kaynaktan zaman alarak bunu daha doğru yapamaz. Sonuç systemd-timesyncdolarak yüksek hassasiyet süresi sağlayamaz chrony.


1
Mmmh. Kimsenin kronik olduğunu iddia eden bir çatal olduğunu fark etmedim ve sorumda chrony'nin sunucu ve istemciyi uygularken, systemd-timesyncd sadece istemci olduğunu belirtti. İlgili RFC'lerden bahsettiğiniz için teşekkür ederiz.
wedi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.