NTP neden uzak sunucu yerine LOCAL ile eşitleniyor?


11

Bu yüzden, mevcut NTP kurulumumda hata ayıklamaya çalışıyorum ve yapılandırılmış tek sunucumdan 3 saniyenin üzerinde olduğunu ve ayarlanmadığını gördüm. Ntpq çıktısındaki LOCAL (0) üzerindeki yıldız işareti, sistemin 10.130.33.201 sunucusu (sistemimizde her şeyin senkronize edilmesini istediğimiz başka bir linux kutusu) yerine kendisiyle mutlu bir şekilde senkronize olduğunu gösteriyor.

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.130.33.201   LOCAL(0)         9 u   49   64  377    0.242  -3742.2   1.049
*LOCAL(0)        .LOCL.          10 l    2   64  377    0.000    0.000   0.001

Ve bu benim ntp.conf dosyam. Başka biri tarafından yazılmış, bu yüzden her şeyin doğru olduğundan% 100 emin değilim.

server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift

restrict -4 default  nomodify nopeer notrap
restrict -6 default  ignore

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

Patlama ve iburst ve minpoll / maxpoll hakkında okudum, bu yüzden bunların gerekli olmayabileceğini fark ettim, ancak mevcut sorunumla ilgili bir şey olduğunu düşünmüyorum.

Ayrıca, nasıl dağıtıldığı için, bu yapılandırma dosyasının değiştirilmesi çok iş alacaktır, bu yüzden umarım gerçekten değiştirilmesi gereken bir şey yoktur. NTP'nin nasıl çalıştığını anlamadığım bir durum olduğunu umuyorum.


DÜZENLE -

Yani, bu bu sorunun bir kopyası gibi görünüyor , ama posterin yeterli bir cevap aldığını hissetmiyorum, bu yüzden hala yerel saatin neden sunucuya tercih edildiğini bilmek istiyorum . Ayrıca, aşağıdaki cevaplardan birine göre, preferyapılandırmanın sunucu satırında anahtar kelimeyi kullanmaya ve yeniden başlatmaya çalıştım , ancak bunun bir etkisi yok gibi görünüyor.

Diğer sorunun yanıtı olarak yapılandırmadaki tüm "yerel" satırları kaldırırsam, sunucuya erişilemezse ne olur? NTP ölüyor mu yoksa sadece denemeye devam ediyor mu?


ÖNEMLİ DÜZENLEME -

Tamam, normalde, 10.130.33.201 ("Sunucu") internete erişemez ve kullanılacak bir GPS zaman kaynağı yoktur. Önemli olan, sistemdeki tüm cihazların o zamanın ne kadar doğru olduğuna bakılmaksızın sunucu ile aynı zamana sahip olmasıdır.

Yani, sadece ne olacağını görmek için, NTP havuz sunucularından birini sunucunun yapılandırma dosyasına ekledim, böylece yerelden zaman almak yerine oradan zaman alacaktı. Artık doğru şekilde NTP zaman sunucusundan zaman alıyor.

Bunu yaptıktan sonra istemciler artık LOCAL (0) yerine sunucu ile eşitleniyor

 ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.130.33.201   38.229.71.1      3 u   58   64  377    0.216  715621.   1.001
 LOCAL(0)        .LOCL.          10 l   18   64  377    0.000    0.000   0.001

YENİ SORU - Sunucum yerel kullanırken (verilen orijinal örnek), istemciler "Oh, 10.130.33.201 LOCAL (0) kullanıyor. Hmm, ayrıca bir LOCAL (0) sunucum var - - Aynı bilgiyi 10.130.33.201 aracılığıyla almak yerine doğrudan kullanacağım. "

Durum bu mu? Yanlış olarak LOCAL (0) olan "doğrudan kaynağa" gitmeye mi çalışıyorlar? LOCAL (0) 'dan zaman almak için sunucuma ihtiyacım var ve sunucudan zaman almak için istemcilere ihtiyacım var. Şu anda "yerel" sunucuyu istemci yapılandırma dosyalarından kaldırmak tek seçenektir, ancak bunun neden olduğunu anlamak istiyorum ve mümkünse yapılandırmalarını değiştirmekten kaçının (yapılandırma değişikliği nedeniyle çok iş olacak çevremiz...).

Ayrıca, bu iyi bir cevap olmadan başka bir kopya gibi görünüyor.


Ayrıca, her zaman 10.130.33.201 ağ erişimine sahipseniz, yerel saat kaynağını kaldırmayı düşünün.
Aaron Copley

Yanıtlar:


9

Yalnızca bir NTP sunucusu yapılandırıldığında, algoritma kime güveneceğinden tam olarak emin değildir. Stratum uzak ana bilgisayarla daha düşük olmasına rağmen, algoritmanın yerel zamanın daha güvenilir olduğunu düşündüğüne eminim.

Bunu tercihli bir zaman kaynağı olarak ayarlamak için preferanahtar kelimenizi ifadenizle birlikte kullanmayı deneyin server.


DÜZENLE -

Yani, bu bu sorunun bir kopyası gibi görünüyor, ama posterin yeterli bir cevap aldığını hissetmiyorum, bu yüzden hala yerel saatin neden sunucuya tercih edildiğini bilmek istiyorum.

Gerçekten yeterli bir cevap için, çok karmaşık bir algoritmanın bağırsaklarına gireceksiniz. Belgeler çok spesifik bile değil ama eminim orada bir teknik belge veya şartname var.

Diğer sorunun yanıtı olarak yapılandırmadaki tüm "yerel" satırları kaldırırsam, sunucuya erişilemezse ne olur? NTP ölüyor mu yoksa sadece denemeye devam ediyor mu?

NTP arka plan programı ölmez veya durmaz, ancak uzak sunucuya erişemediğinde eşitleme zamanından çıkar. Bu nedenle en iyi uygulamalar, ağ bağlantısı kesilmedikçe LCL'yi kullanmamanız için en az üç uzak sunucu önerecektir. Üç sunucu önerilmektedir çünkü sadece iki tane olduğunda ve aynı fikirde olmadıklarında hangisini seçecekler? Üçüncü sunucu, algoritmanın sahte sunucuyu ortadan kaldırmasına yardımcı olmalıdır.

Son olarak, bir driftfile. Bu yardımcı olabilir mi?


İki tabaka (ums) arasındaki farkı yapmak bunu hiç etkiler mi? Sunucunun 9'dan küçük olması yardımcı olur mu?
JPhi1618

Olabilir. Kuşkusuz, algoritmanın kendisinin iç kısımları hakkında çok şey bilmiyorum. Ancak, tabakayı geçmeniz gereken tek şey yerel saattir. Uzak bir sunucuyu düzeltme olarak geçmenizi tavsiye edemem. Minimum müdahale ile en iyi kaynağı belirlemek için NTP'ye güvenilmelidir. Sadece biraz itmeniz gereken bir vakanız var.
Aaron Copley

Önerileriniz için teşekkürler. Bir drift dosyası vardı, ama yaratılmadı, bu yüzden ne olacağını görmek için kaldırıldım. Yerel satırı kaldırmak, sunucuyla senkronize olmasını sağlar, bu yüzden bu bir şeydir. Ntpd'nin "uzak sunucuya ulaşamadıktan sonra senkronizasyon süresinden çıkacağını", ancak sunucuya ulaşıldıktan sonra yeniden başlayacağını mı söylüyorsunuz? Geçici bir ağ kesintisi durumunda güvende olmak istiyorum.
JPhi1618

Hayır, tekrar başlamayacak. Sadece vazgeçiyor. Bu sinir bozucu ve benim için de bir catch-22 oldu. Artık ağ bağlantısı kesilirse NTP'yi yeniden başlatmayı biliyoruz. Driftfile büyük olasılıkla oluşturulmuyor çünkü ntp yol iznine sahip değil. Bunu tekrar kontrol edin.
Aaron Copley

7

Bana ofset aralığı (sistem saatiniz ile NTP hosttime zamanı arasındaki fark) NTP'nin düzgün ayarlaması için çok farklı gibi görünüyor.

Benim önerim,

 1. Stop the NTP service
 2. As root ntpdate -bs 10.130.33.201 to reset your time to something close
 3. Start the NTP service

Bundan sonra hiç problem yaşamamalısın.


2
Makine bir VM olursa veya ciddi bir şekilde kırılmış zamana neden olan başka bir duruma sahipse, ntp tinker panic 0seçeneğini NTP'yi ofsetleri kabul etmeye zorlayacak şekilde ayarlayabilirsiniz . Ancak bunu yalnızca kötü zaman döndürmeyeceğinizden emin olduğunuz NTP sunucularıyla kullanın.
Zoredache

Tamam, ben bir sorun daha önce 1000s kapalı olması gerektiğini düşündüm, ve sonra sunucu # işareti ile listeleneceğini düşündüm? Durum böyle değil mi? "Ofset" saniye veya milisaniye cinsinden mi?
JPhi1618

Ofset çok yüksek olduğu için şu anda 10.130.33.201 ile senkronize edilmeyecek, ancak bu, LCL'nin daha arzulanan hale geldiği ilk aşamada yeterince sürüklendiği gerçeğini düzeltmeyecek. Bence bu, çalışan bir drift dosyası ve preferhile yapardı.
Aaron Copley

Ofsetin neden çok yüksek olduğunu açıklayabilir misiniz? 1000'den az (çok daha az) ve # işareti yok. Ayrıca, her iki sistemde de gerçek zamanı doğruladım ve yaklaşık 4 saniye arayla.
JPhi1618

+/- 1000 ms ... +/- 1000 sn değil . -3742 ms'de .
Aaron Copley

2

LOCAL sunucusu olarak 10.130.33.201 katmanı 9'dur ve bu hesaplanan yerel katmanı (9 + 1 = 10) katman 10'daki yerel LOCAL sunucusuyla rekabet ettirir. ntpd için uzak olandan biraz daha iyi görünebilir.

Bu yapılandırmanın çalışmasını istiyorsanız, 'ana' LOCAL sunucusunu 9'dan daha düşük bir katmana ayarlayın. Tabaka 1 sunucusuna izlenebilir bir zamanın tercih edilmesini istiyorsanız çok düşük değildir.


Teşekkürler. En kısa zamanda bunu kontrol edeceğim. Umut verici görünüyor.
JPhi1618

Görünüşe göre daha önce 10.130.33.201 LOCAL sunucusunun katmanını düşürmeye çalıştım. Şu anda, 5 olarak ayarlanmış, istemci 6 olarak görüyor, ancak yine de 10 katmanı olan kendi YERELİNİ tercih ediyor. Bu yapılandırma günlerdir uygulanmaktadır.
JPhi1618

2

Bunun eski olduğunu biliyorum, ama haklı olduğunu düşünüyorum. Hiç kimse ntpd sorunları hata ayıklamak için herhangi bir yol göstermez. Bunun yapılabilir olduğu ortaya çıkıyor.

Yerel olarak ve akış yukarı sunucuda LOCAL (0) kullanımının sorun olabileceğinden şüphelendiğinizde doğru yolda olduğunuzu düşünüyorum.

Kesinlikle benzer bir sorunu vardı 4 sunucuları bir zaman adada oldu. Bunların hepsi birbirinizin akranları olarak ayarlanmıştı, bu yüzden muhtemelen sizinki için farklı bir sorun.

İlk olarak, son birkaç yılın ntpd sürümleriyle desteklenen yetim modu adı verilen zaman adalarını işlemenin daha iyi bir yolu var:

Doc.ntp.org adresindeki yetim modu

Başlangıçta 4 sunucunun hepsi aynı tabakaya 10 sahipti ve yerel saatlerini tercih ettiler. Bunu düzelttim ve yine de yerel saatlerini tercih ettiler (stratum olsa da önemli görünüyor).

Ntpq komut pe (peer), rv olarak neler olup bittiğini ele almak için kullandım. Sunucunun bilgileri dökümü için ilişkilendirme numarasında rv (readvar) kullanmanız gerekir. pe ve aynı dizine göre sıralanmış gibi görünüyor, böylece bu şekilde as numarası alabilirsiniz. olarak, sunucuyu beğenmediğinde değeri reddetme durumunu gösterebilecek koşul adı verilen bir alan vardır.

RV çıkışında flash adı verilen bir alandır. Her şey yolundaysa, bu sıfır olacaktır. Değilse, sorunların bir bit maskesi (onaltılık olarak görüntülenir). Buradan bakılabilirler:

ntpd dahili kod çözme

Sahip olduğum sorun 0800 peer_loop idi. Saatin yenilenmesinin önemli olduğu ortaya çıktı. Hem yerel saatte hem de uzak sunucuda LOCAL (0) görünmesi, bir döngü olduğunu düşünerek ntpd'ye sahipti. David Mills, comp.protocols.time 'NTP'de döngüden nasıl kaçınılacağını' yazıyor (2 bağlantı sınırıma ulaştım, üzgünüm!)

Benzersiz refid ayarlamak için geçiştirmek için refid argümanını kullanmak işe yaramadı - yine de alıcıda LOCAL (0) olarak görünüyor.

İşe yarayan şey, yerel sürücü için benzersiz örnek numaraları kullanmaktı. 127.127.1. [0-3]. Hem sunucuda hem de geçiş satırında aynı kimliği kullanın. Bunu yaptığımda, sunucular genellikle yerel saatini kullanan en düşük katman sunucusuyla senkronize edilir. Ancak bazen onu kaynak olarak kullanan diğer sunuculardan birini kullanmaya çalıştı. Ancak zaman senkronize var ve bu şekilde kalıyor gibi görünüyor.

Muhtemelen yardım etmek için çok geç, ama NTP'nin mantık ve sorun giderme için uygun olduğunu göstermek için teklif ediyorum. Yanıtla deneme yanılma yoluyla ulaştım ve daha sonra belgeleri buldum.


-1

Bir istek başarısız olsa bile sunucuyu NTP isteğini istenen NTS'ye göndermeye zorlamak için iburst komutunu kullanın


Bunun daha iyi bir açıklamaya ihtiyacı var.
Sven
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.