前言:
官方參考文檔: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite
在IT領域,出于多種原因,準确計時很重要。例如,在網絡中,資料包和日志中需要準确的時間戳。在 Linux 系統中,該NTP協定由運作在使用者空間中的守護程序實作。
使用者空間守護程序更新核心中運作的系統時鐘。系統時鐘可以通過使用各種時鐘源來計時。通常使用時間戳計數器( TSC )。TSC 是一個 CPU 寄存器,用于計算自上次複位以來的周期數。它非常快,具有高分辨率,并且沒有中斷。
有兩個時間同步守護程序可供選擇:ntpd和chronyd。不能同時存在,隻能用其中一個.
兩個服務的優缺點可以在官方文檔中檢視,這裡不細說,直接說如何使用。
簡介
Chrony是一個開源自由的網絡時間協定 NTP 的用戶端和伺服器軟軟體。它能讓計算機保持系統時鐘與時鐘伺服器(NTP)同步,是以讓你的計算機保持精确的時間,Chrony也可以作為服務端軟體為其他計算機提供時間同步服務。
Chrony由兩個程式組成,分别是chronyd和chronyc
chronyd是一個背景運作的守護程序,用于調整核心中運作的系統時鐘和時鐘伺服器同步。它确定計算機增減時間的比率,并對此進行補償。
chronyc提供了一個使用者界面,用于監控性能并進行多樣化的配置。它可以在chronyd執行個體控制的計算機上工作,也可以在一台不同的遠端計算機上工作。
NTP 是網絡時間協定(Network Time Protocol)的簡稱,通過 udp 123 端口進行網絡時鐘同步。
RHEL7中預設使用chrony作為時間伺服器,也支援NTP,需要額外安裝。
安裝與配置chrony
安裝chrony
# yum install chrony
配置解釋
Chrony的配置檔案是/etc/chrony.conf
# 使用 pool.ntp.org 項目中的公共伺服器。以server開,理論上想添加多少時間伺服器都可以。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# 根據實際時間計算出伺服器增減時間的比率,然後記錄到一個檔案中,在系統重新開機後為系統做出最佳時間補償調整。
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# 如果系統時鐘的偏移量大于1秒,則允許系統時鐘在前三次更新中步進。
# Allow the system clock to be stepped in the first three updates if its offset is larger than 1 second.
makestep 1.0 3
# 啟用實時時鐘(RTC)的核心同步。
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# 通過使用 hwtimestamp 指令啟用硬體時間戳
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust the system clock.
#minsources 2
# 指定 NTP 用戶端位址,以允許或拒絕連接配接到扮演時鐘伺服器的機器
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# 指定包含 NTP 身份驗證密鑰的檔案。
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# 指定日志檔案的目錄。
# Specify directory for log files.
logdir /var/log/chrony
# 選擇日志檔案要記錄的資訊。
# Select which information is logged.
#log measurements statistics tracking
配置
伺服器端設定
# 加一行國内的阿裡雲時間伺服器
server ntp.aliyun.com iburst
allow 192.168.0.0/24
啟動并設定開機自啟動
sudo systemctl enable --now chronyd
開通防火牆允許用戶端通路
sudo firewall-cmd --permanent --zone=public --add-port=123/udp
sudo firewall-cmd --reload
用戶端設定
編輯配置檔案
# 192.168.0.80為伺服器端的位址
server 192.168.0.80
allow 192.168.0.80
設定開機自啟動,并重新開機
systemctl enable --now chronyd
systemctl restart chronyd
檢視時間同步設定
timedatectl status
開啟網絡時間同步
timedatectl set-ntp true
檢查 chrony 是否已同步
要檢查是否chrony是同步的,利用的tracking,sources和sourcestats指令。
chronyc tracking
chronyc sources
chronyc sourcestats
手動調整系統時鐘
要立即步進系統時鐘,繞過任何正在進行的調整,請發出以下指令
`chronyc makestep`