服務(wù)部署-Chrony時間同步服務(wù)
一、軟件介紹
Chrony 是一個開源的自由軟件,它能幫助你保持系統(tǒng)時鐘與時鐘服務(wù)器同步,因此讓你的時間保持精確。它由兩個程序組成,分別是 chronyd 和 chronyc。
工作模式
chronyd是一個后臺運行的守護(hù)進(jìn)程,用于調(diào)整內(nèi)核中運行的系統(tǒng)時鐘和時鐘服務(wù)器同步。它確定計算機增減時間的比率,并對此進(jìn)行補償。
chronyc提供了一個用戶界面,用于監(jiān)控性能并進(jìn)行多樣化的配置。它可以在chronyd實例控制的計算機上工作,也可以在一臺不同的遠(yuǎn)程計算機上工作。
軟件優(yōu)勢
在初始同步后,它不會停止時鐘,以防對需要系統(tǒng)時間保持單調(diào)的應(yīng)用程序造成影響。 在應(yīng)對臨時非對稱延遲時(例如,在大規(guī)模下載造成鏈接飽和時)提供了更好的穩(wěn)定性。 無需對服務(wù)器進(jìn)行定期輪詢,因此具備間歇性網(wǎng)絡(luò)連接的系統(tǒng)仍然可以快速同步時鐘。 能夠更好地響應(yīng)時鐘頻率的快速變化,這對于具備不穩(wěn)定時鐘的虛擬機或?qū)е聲r鐘頻率發(fā)生變化的節(jié)能技術(shù)而言非常有用。 更快的同步只需要數(shù)分鐘而非數(shù)小時時間,從而最大程度減少了時間和頻率誤差,這對于并非全天 24 小時運行的臺式計算機或系統(tǒng)而言非常有用。
二、安裝啟用
CentOS7 已經(jīng)默認(rèn)安裝有 Chrony 工具,其既可作時間服務(wù)器服務(wù)端,也可作客戶端。而且性能比 ntp 要好很多、配置簡單、管理方便。
[1] 安裝啟動
# 安裝服務(wù)
yum install -y chrony
# 啟動服務(wù)
systemctl start chronyd.service
# 設(shè)置開機自啟動,默認(rèn)就是enable的
systemctl enable chronyd.service
[2] 防火墻配置
# 因NTP使用123/UDP端口協(xié)議,所以允許NTP服務(wù)即可
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
chronyc -a makestep
[3] 設(shè)置時區(qū)
# 查看日期時間、時區(qū)及NTP狀態(tài)
timedatectl
# 查看時區(qū)列表
timedatectl list-timezones
# 修改時
timedatectl set-timezone Asia/Shanghai
# 修改日期時間
timedatectl set-time "2015-01-21 11:50:00"
# 設(shè)置完時區(qū)后,強制同步下系統(tǒng)時鐘
chronyc -a makestep
[4] 圖形化界面
yum -y install system-config-date
三、主要配置
當(dāng) Chrony 啟動時,它會讀取 /etc/chrony.conf 配置文件中的設(shè)置,配置內(nèi)容格式和 ntpd 服務(wù)基本相似。
主要配置選項

這里使用的是網(wǎng)絡(luò)上提供的時間服務(wù),如果本局域網(wǎng)內(nèi)有對時服務(wù)開啟的話,通過將上面的幾條serer記錄刪除,增加指定局域網(wǎng)內(nèi)的對時服務(wù)器并restart chrony服務(wù)即可。
[root@localhost ~]# cat /etc/chrony.conf |grep -v ^#|grep -v ^$
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
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
四、查看狀態(tài)
[1] 檢查 ntp 源服務(wù)器狀態(tài)
[root@localhost ~]# chronyc sourcestats
210 Number of sources = 3
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
dns.sjtu.edu.cn 4 3 302 6.440 90.221 +13ms 694us
dns1.synet.edu.cn 0 0 0 0.000 2000.000 +0ns 4000ms
202.118.1.130 7 5 323 -0.174 7.323 -8406ns 303us
[2] 檢查 ntp 詳細(xì)同步狀態(tài)
[root@localhost ~]# chronyc sources -v
210 Number of sources = 3
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| / xxxx = adjusted offset,
|| Log2(Polling interval) -. | yyyy = measured offset,
|| \ | zzzz = estimated error.
|| | |
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- dns.sjtu.edu.cn 3 7 13 20 +11ms[ +11ms] +/- 98ms
^? dns1.synet.edu.cn 0 8 0 10y +0ns[ +0ns] +/- 0ns
^* 202.118.1.130 2 6 377 125 -122us[ -305us] +/- 31ms
[3] 設(shè)置硬件時間
# 硬件時間默認(rèn)為UTC
$ timedatectl set-local-rtc 1
# 啟用或關(guān)閉NTP時間同步
$ timedatectl set-ntp yes|flase
# 校準(zhǔn)時間服務(wù)器
$ chronyc tracking
五、工具使用
可以通過運行 chronyc 命令來修改設(shè)置,以下是常用命令。
accheck
檢查 NTP 訪問是否對特定主機可用
activity
該命令會顯示有多少 NTP 源在線/離線
add server
手動添加一臺新的 NTP 服務(wù)器
clients
在客戶端報告已訪問到服務(wù)器
delete
手動移除 NTP 服務(wù)器或?qū)Φ确?wù)器
settime
手動設(shè)置守護(hù)進(jìn)程時間
tracking
顯示系統(tǒng)時間信息
help
可以查看更多 chronyc 的交互命令
[root@localhost ~]# chronyc
chrony version 1.29.1
Copyright (C) 1997-2003, 2007, 2009-2013 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> activity
200 OK
3 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
chronyc> help
Commands:
accheck <address> : Check whether NTP access is allowed to <address>
activity : Check how many NTP sources are online/offline
add peer <address> ... : Add a new NTP peer
add server <address> ... : Add a new NTP server
allow [<subnet-addr>] : Allow NTP access to that subnet as a default
allow all [<subnet-addr>] : Allow NTP access to that subnet and all children
burst <n-good>/<n-max> [<mask>/<masked-address>] : Start a rapid set of measurements
clients : Report on clients that have accessed the server
.......
文章作者:Escape
鏈接:https://escapelife.github.io/posts/9587ae84.html
整理:微信公眾號,開源Linux
關(guān)注「開源Linux」加星標(biāo),提升IT技能


