Synchronizácia času pomocou NTP

Táto stránka hovorí o tom, ako na počítači udržať presný čas. Presný čas je pri serveroch dôležitý, ale na bežných počítačoch na ňom až tak nezáleží.

NTP je súčasťou TCP/IP protokolu a slúži na synchronizáciu času cez sieť. V princípe si klient vyžiada od servera a použije ho na nastavenie svojich hodín.

Za týmto jednoduchým opisom sa však nachádza dosť komplikovaný systém: Existuje niekoľko úrovní NTP serverov, pričom NTP servery prvej úrovne sú pripojené k atómovým hodinám (často prostredníctvom GPS) a servery na úrovniach dva a tri slúžia na rozloženie záťaže a spracovávajú požiadavky prichádzajúce z celého Internetu. Tiež softvér na strane klienta je o niečo zložitejší, ako sa na prvý pohľad javí - je tu problém oneskorenia komunikácie a nastavenia času tak, aby sa to neprejavilo na chode ostatných procesov, ktoré sú na serveri spustené. Všetky tieto komplikované veci sú však našťastie skryté pred naším zrakom!

Ubuntu umožňuje automaticky nastavovať čas dvoma spôsobmi: pomocou ntpdate a ntpd.

ntpdate

Ubuntu je štandardne dodávané s ntpdate, ktoré spustí jednorázovo pri zavádzaní systému a nastaví čas podľa prednastaveného NTP servera. Keďže medzi jednotlivými reštartami servera sa môžu hodiny stať veľmi nepresnými, je dôležité upraviť čas aj počas behu servera. Najjednoduchším spôsobom, akým sa to dá urobiť, je naplánovať denné spúšťanie ntpdate pomocou plánovača cron. Otvoríme náš obľúbený editor s právami root (pri spustení použijeme sudo) a vytvoríme súbor /etc/cron.daily/ntpdate s nasledujúcim obsahom:

ntpdate ntp.ubuntu.com

Súbor /etc/cron.daily/ntpdate musíme nastaviť ako spustiteľný:

sudo chmod 755 /etc/cron.daily/ntpdate

ntpd

ntpdate je trochu obmedzený nástroj - môže nastavovať čas iba raz za deň a vykonať jednu veľkú korekciu. Démon ntpd je oveľa presnejší. Vypočíta, o koľko sa hodiny oneskorujú/predbiehajú a nepretržite ich opravuje, takže nenastane žiadny veľký posun, ktorý by mohol viesť k nekonzistencii záznamov. Je to síce za cenu malého zníženia výkonu procesora a kapacity pamäte, ale pri moderných serveroch je to zanedbateľné.

Nástroj ntpd nainštalujeme pomocou príkazu:

sudo apt-get install ntp

Zmena časových serverov

V oboch uvedených prípadoch systém použije predvolený NTP server ntp.ubuntu.com. To je OK, ale môžeme používať viacero serverov a zvýšiť tak presnosť a odolnosť. Môžeme použiť servery, ktoré sú geograficky blízke a máme k nim rýchlejšie pripojenie. Ak chceme servery zmeniť, pre ntpdate to môžeme urobiť v súbore /etc/cron.daily/ntpdate napríklad takto:

ntpdate ntp.ubuntu.com pool.ntp.org 

Pre ntpd to zase môžeme urobiť v súbore /etc/ntp.conf napríklad takto:

server ntp.ubuntu.com
server pool.ntp.org

Všimnime si adresu pool.ntp.org použitú v príkladoch. Je to naozaj veľmi dobrý nápad, pri ktorom DNS server systémom Round-Robin (ide Pešek okolo) vráti adresu NTP servera zo zoznamu dostupných NTP serverov, a tak rozdeľuje záťaž medzi všetky servery. Ešte lepším riešením je použiť zoznam len určitého regiónu - napríklad, ak sa nachádzame na Slovensku, môžete použiť sk.pool.ntp.org miesto pool.ntp.org . Viac informácii sa dozvieme na stránke http://www.pool.ntp.org/.

Môžeme tiež pomocou Google skúsiť nájsť NTP servery v našom regióne a pridať ich do našej konfigurácie. Ak chceme otestovať, či server funguje, stačí zadať sudo ntpdate meno.ntp.servera a sledovať, čo sa bude diať.

Podobné stránky