天天看點

使用Chrony配置 NTP

前言:

官方參考文檔: 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`
           

繼續閱讀