Sinkronisasi Waktos Linux: NTP, Chrony sareng systemd-timesyncd

Sinkronisasi Waktos Linux: NTP, Chrony sareng systemd-timesyncd
Kalolobaan jalma ngalacak waktos. Urang bangun dina waktuna pikeun ngarengsekeun ritual isuk urang jeung indit ka pagawean, nyandak putus dahar beurang, minuhan deadlines proyék, ngagungkeun ultah jeung libur, naek pesawat, jeung saterusna.

Leuwih ti éta: sababaraha urang obsessed jeung waktu. Arloji kuring didamel ku tanaga surya sareng nampi waktos akurat ti National Institute of Standards and Technology (NIST) ka Fort Collins, Colorado via radio gelombang panjang WWVB. Sinyal waktos disingkronkeun sareng jam atom, ogé aya di Fort Collins. Fitbit abdi nyingkronkeun sareng telepon abdi anu nyingkronkeun sareng server NTP, nu ahirna nyingkronkeun jeung jam atom.

Alat ogé ngalacak waktos

Aya seueur alesan kunaon alat sareng komputer urang peryogi waktos anu akurat. Salaku conto, dina perbankan, pasar saham, sareng usaha kauangan sanés, transaksi kedah dilaksanakeun dina urutan anu leres, sareng urutan waktos anu akurat penting pikeun ieu.

Telepon, tablet, mobil, sistem GPS sareng komputer urang sadayana peryogi setélan waktos sareng tanggal anu akurat. Abdi hoyong jam dina desktop komputer kuring nunjukkeun waktos anu leres. Abdi hoyong panginget muncul dina kalénder lokal kuring dina waktos anu pas. Waktos anu leres ogé mastikeun yén padamelan cron sareng systemd jalan dina waktos anu leres.

Kaping sareng waktos ogé penting pikeun logging, janten langkung gampang pikeun milarian log anu tangtu dumasar kana tanggal sareng waktos. Contona, kuring sakali digawé di DevOps (eta teu disebut éta dina waktu éta) jeung ieu nyetel hiji sistem email di nagara bagian Propinsi Sulawesi Tenggara. Kami biasa ngolah langkung ti 20 juta email sadinten. Nyukcruk e-mail ngaliwatan runtuyan server, atawa nangtukeun runtuyan pasti kajadian ngagunakeun file log on sarwa geografi dispersed, bisa jadi loba gampang lamun komputer masing-masing anu nyingkronkeun dina waktu.

Hiji waktu - loba jam

Host Linux kedah tumut kana akun yén aya waktos sistem sareng waktos RTC. RTC (Real Time Jam) nyaéta ngaran rada aneh jeung teu akurat pisan pikeun jam hardware.

Jam hardware jalan terus sanajan komputer dipareuman, ngagunakeun batré dina motherboard sistem. Fungsi utama RTC nyaéta pikeun nyimpen waktos nalika sambungan ka server waktos henteu sayogi. Dina poé nalika teu mungkin pikeun nyambung ka server waktu ngaliwatan Internet, unggal komputer kudu boga jam internal akurat. Sistem operasi kedah ngaksés RTC dina waktos boot sareng pangguna kedah nyetél waktos sistem sacara manual nganggo antarmuka konfigurasi hardware BIOS pikeun mastikeun éta leres.

jam hardware teu ngarti konsép zona waktu; RTC ngan nyimpen waktos, sanes zona waktos atanapi offset ti UTC (Coordinated Universal Time, ogé katelah GMT atanapi Greenwich Mean Time). Anjeun tiasa masang RTC nganggo alat anu kuring bakal nutupan engké dina tulisan ieu.

Waktu sistem nyaéta waktos anu dipidangkeun OS dina jam GUI dina desktop anjeun, dina kaluaran paréntah tanggal, dina cap waktu log. Ieu ogé lumaku pikeun nalika file dijieun, dirobah, jeung dibuka.

Dina halaman lalaki pikeun rtc aya katerangan lengkep ngeunaan RTC sareng jam sistem.

Naon sareng NTP?

Komputer di sakuliah dunya ngagunakeun NTP (Network Time Protocol) pikeun nyingkronkeun waktosna sareng jam rujukan standar dina Internét nganggo hirarki server NTP. Pangladén waktos utama aya dina lapisan 1 sareng aranjeunna langsung nyambung ka sagala rupa jasa waktos nasional di lapisan 0 via satelit, radio atanapi modem malah dina saluran telepon. Lapisan 0 jasa waktos tiasa jam atom, panarima radio nu disetel ka sinyal dikirimkeun ku jam atom, atawa panarima GPS nu ngagunakeun sinyal jam akurat pisan dikirimkeun ku satelit GPS.

Seuseueurna pangladén rujukan ngagaduhan sababaraha rébu server NTP stratum 2 umum anu dibuka pikeun umum. Seueur organisasi sareng pangguna (kaasup kuring sorangan) sareng seueur host anu peryogi server NTP milih nyetél server waktos sorangan sahingga ngan ukur hiji host lokal ngaksés stratum 2 atanapi 3. Aranjeunna teras ngonpigurasikeun titik sésana dina jaringan pikeun ngagunakeun lokal. server waktos. Dina kasus jaringan asal kuring, ieu mangrupikeun server lapisan 3.

Rupa-rupa palaksanaan NTP

Palaksanaan asli NTP nyaéta ntpd. Ieu lajeng ngagabung ku dua leuwih anyar, chronyd na systemd-timesyncd. Katiluna nyingkronkeun waktos host lokal sareng server waktos NTP. Ladenan systemd-timesyncd henteu tiasa dipercaya sapertos chronyd, tapi cukup saé pikeun kalolobaan tujuan. Upami RTC teu sinkron, éta laun tiasa nyaluyukeun waktos sistem pikeun nyingkronkeun sareng server NTP nalika waktos sistem lokal rada ngalayang. Ladenan systemd-timesync teu tiasa dianggo salaku pangladén waktos.

Krony nyaéta palaksanaan NTP anu ngandung dua program: daemon chronyd sareng antarmuka garis paréntah anu disebut chronyc. Chrony gaduh sababaraha fitur anu penting dina sababaraha kasus:

  • Chrony tiasa nyinkronkeun sareng server waktos langkung gancang tibatan jasa ntpd lami. Ieu saé pikeun laptop atanapi desktop anu henteu tiasa dianggo unggal waktos.
  • Éta tiasa ngimbangan turun naek jam, sapertos nalika host nuju bobo atanapi asup kana mode sare, atanapi nalika jam robih kusabab frekuensi hopping, anu ngalambatkeun jam dina beban anu rendah.
  • Éta ngarengsekeun masalah waktos anu aya hubunganana sareng sambungan jaringan anu teu stabil atanapi kamacetan jaringan.
  • Ieu ngatur reureuh jaringan.
  • Saatos nyingkronkeun waktos awal, Chrony henteu kantos ngeureunkeun jam. Ieu nyadiakeun timeslots stabil sarta konsisten pikeun loba jasa sistem jeung aplikasi.
  • Chrony tiasa dianggo sanajan tanpa sambungan jaringan. Dina hal ieu, host atanapi server lokal tiasa diropéa sacara manual.
  • Chrony tiasa janten server NTP.

Sakali deui, NTP mangrupikeun protokol anu tiasa dilaksanakeun dina host Linux nganggo Chrony atanapi systemd-timesyncd.

NTP, Chrony, sareng systemd-timesyncd RPM sayogi dina repositori Fedora standar. Systemd-udev RPM mangrupikeun manajer acara kernel anu dipasang sacara standar dina Fedora, tapi opsional.

Anjeun tiasa install tilu sarta pindah antara aranjeunna, tapi ieu bakal nyieun hiji lieur tambahan. Janten langkung saé henteu. Kaluaran modern Fedora, CentOS, sareng RHEL parantos ngalih ka Chrony salaku palaksanaan standar, sareng aranjeunna ogé ngagaduhan systemd-timesyncd. Kuring mendakan Chrony tiasa dianggo saé, nyayogikeun antarbeungeut anu langkung saé tibatan layanan NTP, nyayogikeun langkung seueur inpormasi sareng kontrol, anu pasti bakal dinikmati ku administrator sistem.

Nonaktipkeun Layanan NTP

Ladenan NTP mungkin parantos dijalankeun dina host anjeun. Upami kitu, anjeun kedah nganonaktipkeun sateuacan ngalih ka anu sanés. Kuring kungsi chronyd ngajalankeun jadi kuring dipaké paréntah di handap pikeun ngeureunkeun jeung nganonaktipkeun eta. Jalankeun paréntah anu cocog pikeun daemon NTP anu anjeun jalankeun dina host anjeun:

[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#

Pariksa yén jasa dieureunkeun sareng ditumpurkeun:

[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:chronyd(8)
             man:chrony.conf(5)
[root@testvm1 ~]#

Pariksa status sateuacan peluncuran

Status sinkronisasi jam sistem ngidinan Anjeun pikeun nangtukeun lamun layanan NTP jalan. Kusabab anjeun henteu acan ngamimitian NTP, paréntah timesync-status bakal nunjukkeun ieu:

[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.

Paménta status langsung nyayogikeun inpormasi anu penting. Contona, paréntah timedatectl kalawan euweuh argumen atawa pilihan executes status subcommand sacara standar:

[root@testvm1 ~]# timedatectl status
           Local time: Fri 2020-05-15 08:43:10 EDT  
           Universal time: Fri 2020-05-15 12:43:10 UTC  
                 RTC time: Fri 2020-05-15 08:43:08      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: no                          
              NTP service: inactive                    
          RTC in local TZ: yes                    

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#

Ieu bakal masihan anjeun waktos lokal pikeun host anjeun, waktos UTC, sareng waktos RTC. Dina hal ieu, waktos sistem disetel ka zona waktos Amérika / New_York (TZ), RTC disetel ka waktos dina zona waktos lokal, sareng jasa NTP henteu aktip. Waktos RTC parantos rada nyimpang tina waktos sistem. Ieu normal pikeun sistem anu jamna teu acan disingkronkeun. Jumlah offset on host gumantung kana waktu nu geus kaliwat saprak sistem panungtungan nyingkronkeun.

Kami ogé nampi peringatan ngeunaan ngagunakeun waktos lokal pikeun RTC - ieu manglaku ka parobahan zona waktos sareng setélan DST. Upami komputer dipareuman nalika parobihan kedah dilakukeun, RTC moal robih. Tapi pikeun server atawa host séjén anu ngajalankeun sabudeureun jam, ieu teu masalah pisan. Salaku tambahan, jasa naon waé anu nyayogikeun sinkronisasi waktos NTP bakal nyaluyukeun waktos host salami fase ngamimitian awal, janten waktosna bakal leres deui saatos ngamimitian réngsé.

Nyetél zona waktos

Biasana, anjeun netepkeun zona waktos salami prosedur pamasangan sareng anjeun henteu ngagaduhan tugas ngarobih engké. Nanging, aya waktos anjeun kedah ngarobih zona waktos. Aya sababaraha alat anu tiasa ngabantosan. Linux nganggo file zona waktos pikeun nangtukeun zona waktos lokal host. Berkas ieu aya dina diréktori /usr/share/zoneinfo. Sacara standar, pikeun zona waktos abdi, sistem prescribes ieu: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Tapi anjeun teu kedah terang subtleties sapertos pikeun ngarobah zona waktos.

Hal utama nyaéta terang nami zona waktos resmi pikeun lokasi anjeun sareng paréntah anu saluyu. Anggap anjeun hoyong ngarobih zona waktos ka Los Angeles:


[root@testvm2 ~]# timedatectl list-timezones | column
<SNIP>
America/La_Paz                  Europe/Budapest
America/Lima                    Europe/Chisinau
America/Los_Angeles             Europe/Copenhagen
America/Maceio                  Europe/Dublin
America/Managua                 Europe/Gibraltar
America/Manaus                  Europe/Helsinki
<SNIP>

Ayeuna anjeun tiasa nyetél zona waktos. Kuring nganggo paréntah tanggal pikeun mariksa parobahan, tapi anjeun ogé tiasa nganggo timedatectl:

[root@testvm2 ~]# date
Tue 19 May 2020 04:47:49 PM EDT
[root@testvm2 ~]# timedatectl set-timezone America/Los_Angeles
[root@testvm2 ~]# date
Tue 19 May 2020 01:48:23 PM PDT
[root@testvm2 ~]#

Ayeuna anjeun tiasa ngarobih zona waktos host anjeun deui ka waktos lokal.

systemd-timesyncd

Daemon timesync systemd nyayogikeun palaksanaan NTP anu gampang diurus dina kontéks systemd. Éta dipasang sacara standar dina Fedora sareng Ubuntu. Nanging, éta ngan ukur dimimitian sacara standar dina Ubuntu. Kaula teu yakin kana distribusi séjén. Anjeun tiasa pariksa sorangan:

[root@testvm1 ~]# systemctl status systemd-timesyncd

Ngonpigurasikeun systemd-timesyncd

Berkas konfigurasi pikeun systemd-timesyncd nyaéta /etc/systemd/timesyncd.conf. Ieu mangrupikeun file saderhana sareng pilihan anu langkung sakedik diaktipkeun tibatan NTP sareng jasa chronyd anu lami. Ieu eusi file ieu (tanpa modifikasi salajengna) dina Fedora VM kuring:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

Hijina bagian eta ngandung, sagigireun komentar, nyaeta [Waktos]. Kabéh garis séjén commented kaluar. Ieu mangrupikeun nilai standar sareng henteu kedah dirobih (kacuali anjeun gaduh alesan). Upami anjeun teu gaduh server waktos NTP anu didefinisikeun dina garis NTP=, Fedora ingkar kana server waktos Fedora fallback. Kuring biasana nambahkeun server waktos abdi:

NTP=myntpserver

Ngajalankeun timesync

Anjeun tiasa ngamimitian sareng ngadamel systemd-timesyncd aktip sapertos kieu:

[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Created symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service → /usr/lib/systemd/system/systemd-timesyncd.service.
[root@testvm2 ~]# systemctl start systemd-timesyncd.service
[root@testvm2 ~]#

Nyetel jam hardware

Ieu kumaha kaayaan sapertos saatos ngajalankeun timesyncd:

[root@testvm2 systemd]# timedatectl
               Local time: Sat 2020-05-16 14:34:54 EDT  
           Universal time: Sat 2020-05-16 18:34:54 UTC  
                 RTC time: Sat 2020-05-16 14:34:53      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: no    

Mimitina, bédana antara RTC sareng waktos lokal (EDT) kirang ti sadetik, sareng bédana ningkat ku sababaraha detik deui dina sababaraha dinten ka hareup. Kusabab teu aya konsép zona waktos di RTC, paréntah timedatectl kedah ngalakukeun perbandingan pikeun nangtukeun zona waktos anu leres. Upami waktos RTC henteu cocog sareng waktos lokal, maka éta ogé henteu cocog sareng zona waktos lokal.

Milarian inpormasi langkung seueur, kuring pariksa status systemd-timesync sareng mendakan ieu:

[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2020-05-16 13:56:53 EDT; 18h ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 822 (systemd-timesyn)
     Status: "Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org)."
      Tasks: 2 (limit: 10365)
     Memory: 2.8M
        CPU: 476ms
     CGroup: /system.slice/systemd-timesyncd.service
             └─822 /usr/lib/systemd/systemd-timesyncd

May 16 09:57:24 testvm2.both.org systemd[1]: Starting Network Time Synchronization...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: System clock time unset or jumped backwards, restoring from recorded timestamp: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: Started Network Time Synchronization.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#

Perhatikeun pesen log anu nyarioskeun waktos sistem teu acan disetel atanapi parantos direset. Ladenan Timesync nyetél waktos sistem dumasar kana timestamp. Cap waktu dijaga ku daemon timesync sareng didamel dina unggal singkronisasi anu suksés.

Paréntah timedatectl teu aya cara pikeun nyandak nilai jam hardware tina jam sistem. Éta ngan ukur tiasa nyetél waktos sareng kaping tina nilai anu diasupkeun dina garis paréntah. Anjeun tiasa nyetél RTC kana nilai anu sami sareng waktos sistem nganggo paréntah hwclock:

[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
               Local time: Mon 2020-05-18 13:56:46 EDT  
           Universal time: Mon 2020-05-18 17:56:46 UTC  
                 RTC time: Mon 2020-05-18 13:56:46      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: yes

Pilihan --localtime nyarioskeun ka jam hardware pikeun nunjukkeun waktos lokal, sanés UTC.

Naha anjeun peryogi RTC pisan?

Sakur palaksanaan NTP bakal nyetél jam sistem dina waktos ngamimitian. Jeung naha lajeng RTC? Ieu teu sagemblengna bener: ieu ngan bakal lumangsung lamun boga sambungan jaringan ka server waktos. Sanajan kitu, loba sistem teu salawasna boga aksés ka sambungan jaringan, jadi jam hardware mangpaat pikeun Linux Ubuntu dipaké pikeun nyetel waktos sistem. Ieu langkung saé tibatan nyetél waktos sacara manual, sanaos tiasa nyimpang tina waktos nyata.

kacindekan

Tulisan ieu parantos marios sababaraha alat pikeun ngamanipulasi tanggal, waktos, sareng zona waktos. Alat systemd-timesyncd nyayogikeun klien NTP anu tiasa nyinkronkeun waktos dina host lokal sareng server NTP. Tapi, systemd-timesyncd henteu nyayogikeun jasa server, janten upami anjeun peryogi server NTP dina jaringan anjeun, anjeun kedah nganggo anu sanés, sapertos Chrony, pikeun janten pangladén.

Abdi langkung resep gaduh palaksanaan tunggal pikeun jasa naon waé dina jaringan kuring, janten kuring nganggo Chrony. Upami anjeun henteu peryogi server NTP lokal, atanapi upami anjeun henteu kapikiran nganggo Chrony salaku server sareng systemd-timesyncd salaku klien SNTP. Barina ogé, henteu kedah nganggo fitur tambahan Chrony salaku klien upami anjeun puas sareng fungsionalitas systemd-timesyncd.

Catetan sanésna: anjeun henteu kedah nganggo alat systemd pikeun nerapkeun NTP. Anjeun tiasa nganggo versi ntpd, Chrony, atanapi palaksanaan NTP anu sanés. Barina ogé, systemd diwangun ku sajumlah ageung jasa; loba di antarana anu pilihan, jadi Anjeun bisa mareuman aranjeunna sarta ngagunakeun hal sejenna gantina. Ieu sanes monster monolithic badag. Anjeun bisa jadi teu resep systemd atawa bagian tina eta, tapi anjeun kudu nyieun kaputusan informed.

Kuring resep palaksanaan systemd tina NTP, tapi kuring resep Chrony sabab cocog sareng kabutuhan kuring langkung saé. Ieu Linux, orok -)

salaku iklan

nawaran VDSina server pikeun tugas naon, Pilihan badag tina sistem operasi pikeun instalasi otomatis, kasebut nyaéta dimungkinkeun pikeun masang sagala OS ti anjeun sorangan ISO, sreg panel kontrol ngembangkeun sorangan jeung pangmayaran poean. Inget yen urang boga server langgeng anu pasti timeless 😉

Sinkronisasi Waktos Linux: NTP, Chrony sareng systemd-timesyncd

sumber: www.habr.com

Tambahkeun komentar