簡介
Chrony
是一個開源的自由軟件,它能保持系統時鐘與時鐘服務器(NTP)
同步,讓時間保持精確。
Chrony
分爲守護進程chronyd
,用於調整內核中運行的系統時間和時間服務器同步 以及 用於監控性能並進行多樣化的配置的chronyc
環境信息
[root@suhw ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@suhw ~]# uname -a
Linux suhw 3.10.0-1062.4.3.el7.x86_64 #1 SMP Wed Nov 13 23:58:53 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
安裝
[root@suhw ~]# yum install chrony -y
設置開機啓動
[root@suhw ~]# systemctl enable chronyd.service
[root@suhw ~]# systemctl restart chronyd.service
[root@suhw ~]# systemctl status chronyd.service
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-06-04 10:12:10 CST; 4s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 11520 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 11516 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 11518 (chronyd)
Tasks: 1
Memory: 804.0K
CGroup: /system.slice/chronyd.service
└─11518 /usr/sbin/chronyd
Jun 04 10:12:10 suhw systemd[1]: Starting NTP client/server...
Jun 04 10:12:10 suhw chronyd[11518]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
Jun 04 10:12:10 suhw systemd[1]: Started NTP client/server.
防火牆設置
$ firewall-cmd --add-service=ntp --permanent
$ firewall-cmd --reload
因NTP
使用123/UDP
端口協議,所以允許NTP
服務即可。
配置參數
完整參數介紹參考:https://chrony.tuxfamily.org/doc/3.4/chrony.conf.html
默認配置在/etc/chrony.conf
中,參考如下
# server 用於添加 ntp 服務器
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
# 記錄系統時鐘增益/損失時間的速率
driftfile /var/lib/chrony/drift
# 允許跳躍式校時 如果在前 3 次校時中時間差大於 1.0s
makestep 1.0 3
# 同步時間至 RTC
rtcsync
# 在支持它的所有接口上啓用硬件時間戳。
#hwtimestamp *
# 增加調整系統時鐘所需的最小可選源數。
#minsources 2
# 允許那些客戶端訪問 NTP
#allow 192.168.0.0/16
# 即使未同步到時間源,也會提供時間。
#local stratum 10
# 指定 NTP 認證的 key 存在的文件
#keyfile /etc/chrony.keys
# 爲日誌文件指定目錄
logdir /var/log/chrony
# 選擇要被記錄的信息
#log measurements statistics tracking
Server
server hostname [option]…
默認配置中默認使用四組官方的NTP
服務器
0.centos.pool.ntp.org
1.centos.pool.ntp.org
2.centos.pool.ntp.org
3.centos.pool.ntp.org
iburst
是爲了縮短初始同步所花費的時間,該參數一般爲server
的默認選項。
driftfile
根據實際時間計算修正值,並將補償參數記錄在該指令指定的文件裏,默認爲 driftfile var/lib/chrony/drift
[root@suhw ~]# cat /var/lib/chrony/drift
7.843162 0.028786
makestep
用法:makestep threshold limit
根據需要通過加速或減慢時鐘來逐漸校正任何時間偏移。例如:
makestep 1.0 3
就表示當頭三次校時,如果時間相差 1.0s
, 則跳躍式校時。
rtcsync
rtcsync
指令會將內核時間與RTC( Real_Time Clock)
進行同步
RTC
:實時時鐘芯片
allow / deny
這裏你可以指定一臺主機、子網,或者網絡以允許或拒絕NTP
連接到扮演時鐘服務器的機器。例如
allow 192.168.4.5
deny 192.168/16
commandkey
如果在/etc/chrony.conf
中指定generatecommandkey
參數,那麼將 在/etc/chrony.keys
中生成一個密碼,或者也可以自己手動在chrony.keys
中添加指定密碼。commandkey
後跟的數字就代表使用chrony.keys
中的哪個密碼,默認值爲1。
local stratum 10
由於NTP
是層型結構,有頂端的服務器,多層的Relay Server
再到客戶端,所以服務器從高到低級別可以設定爲1-16。0層爲高精度計時設備,從1層開始,每層設備的時間都向前一層設備同步時間。(stratum 2
從stratum 1
同步時間,以此類推)
爲了減緩負荷和網絡堵塞,原則上應該避免直接連接到級別爲1的服務器。此處的就設置的是當前本地NTP
服務器的層數。
bindaddress
將chronyd
監聽NTP
請求的socket
綁定到計算機的本地地址。
配置示例
以下示例中 ntp server
機器地址爲 10.91.156.174
,client
爲10.47.119.96
設置本地作爲NTP server
例如要將本地設置爲NTP
服務器。該機器地址爲10.91.156.174
修改配置文件/etc/chrony.conf
# 配置 本地 作爲 ntp 服務器
server 127.0.0.1 iburst
# 計算時間補償
driftfile /var/lib/chrony/drift
# 如果前三次校時相差大於1s,則使用跳躍校時來校正時間
makestep 1.0 3
# 同步時間到 RTC
rtcsync
# 日誌存放在 /var/log/chrony
logdir /var/log/chrony
bindaddress ::
# 表示所有人都可訪問本機提供的ntp服務
allow
重啓服務
[root@ntp-server ~]# systemctl restart chronyd
查看ntp
服務器狀態
[root@ntp-server ~]# chronyc sourcestats
210 Number of sources = 1
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
localhost 2 0 65 +0.000 2000.000 -6105ns 4000ms
設置NTP server
將第二臺10.47.119.96
的NTP server
設置爲第一臺機器
[root@ntp-client ~]# cat /etc/chrony.conf
server 10.91.156.174 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
keyfile /etc/chrony.keys
bindaddress ::
allow
同樣重啓生效
chronyc
常用用法
注:詳細解釋參考man chronyc
交互式使用
chronyc
可以交互式使用,直接輸入chronyc
後,輸入對應命令即可
[root@ntp-server ~]# chronyc
chrony version 3.4
Copyright (C) 1997-2003, 2007, 2009-2018 Richard P. Curnow and others
chrony comes with ABSOLUTELY NO WARRANTY. This is free software, and
you are welcome to redistribute it under certain conditions. See the
GNU General Public License version 2 for details.
chronyc> sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* localhost 10 9 377 117m -6818ns[ -14us] +/- 32us
chronyc>
查看NTP server
信息
[root@ntp-client ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.91.156.174 11 6 377 42 -645us[-1177us] +/- 14ms
檢查NTP server
狀態
顯示當前在線和脫機的源
[root@ntp-client ~]# chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
檢查NTP
是否對特定主機可用
[root@ntp-server ~]# chronyc accheck 10.47.119.96
208 Access allowed
獲取ntp client
此命令顯示通過NTP
或命令端口訪問服務器的客戶端列表
[root@ntp-server ~]# chronyc clients
Hostname NTP Drop Int IntL Last Cmd Drop Int Last
===============================================================================
localhost 30 0 8 - 49 0 0 - -
10.47.119.96 17 0 6 - 37 0 0 - -
查看系統時鐘性能
[root@ntp-client ~]# chronyc tracking
# 同步到的 ntp server 信息
Reference ID : 0A5B9CAE (10.91.156.174)
# 所在層數
Stratum : 12
Ref time (UTC) : Fri Jun 05 03:07:36 2020
System time : 0.000000380 seconds fast of NTP time
Last offset : -0.000264585 seconds
RMS offset : 0.001242722 seconds
Frequency : 37.658 ppm slow
Residual freq : -0.189 ppm
Skew : 2.847 ppm
Root delay : 0.021106269 seconds
Root dispersion : 0.004897448 seconds
Update interval : 64.3 seconds
Leap status : Normal
查看時間同步命令
timedatectl
查看系統時區信息
[root@suhw ~]# timedatectl status
Local time: Thu 2020-06-04 17:34:02 CST
Universal time: Thu 2020-06-04 09:34:02 UTC
RTC time: Thu 2020-06-04 09:35:04
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
查看可用時區
[root@suhw ~]# timedatectl list-timezones | grep Shanghai
Asia/Shanghai
設置系統時區
[root@suhw ~]# timedatectl set-timezone Asia/Shanghai
可以先將本地服務器時區設置爲Asia/Shanghai
,再啓動NTP
服務