Linux 時間同步 05 chrony時間同步
目錄
實現NTP協議的的自由軟件。可使系統時鍾與NTP服務器,參考時鍾(例如GPS接收器)以及使用手表和鍵盤的手動輸入進行同步。還可以作為NTPv4(RFC 5905)服務器和對等體運行,為網絡中的計算機提供時間服務。設計用於在各種條件下良好運行,包括間歇性和高度擁擠的網絡連接,溫度變化(計算機時鍾對溫度敏感),以及不能連續運行或在虛擬機上運行的系統。通過Internet同步的兩台機器之間的典型精度在幾毫秒之內,在LAN上,精度通常為幾十微秒。利用硬件時間戳或硬件參考時鍾,可實現亞微秒的精度。
chrony 的優勢:
- 更快的同步只需要數分鍾而非數小時時間,從而最大程度減少了時間和頻率誤差,對於並非全天 24 小時運行的虛擬計算機而言非常有用。
- 能夠更好地響應時鍾頻率的快速變化,對於具備不穩定時鍾的虛擬機或導致時鍾頻率發生變化的節能技術而言非常有用。
- 在初始同步后,它不會停止時鍾,以防對需要系統時間保持單調的應用程序造成影響。
- 在應對臨時非對稱延遲時(例如,在大規模下載造成鏈接飽和時)提供了更好的穩定性。
- 無需對服務器進行定期輪詢,因此具備間歇性網絡連接的系統仍然可以快速同步時鍾。
chrony官網:https://chrony.tuxfamily.org
chrony官方文檔:https://chrony.tuxfamily.org/documentation.html
chrony包介紹
兩個主要程序:
- chronyd:后台運行的守護進程,用於調整內核中運行的系統時鍾和時鍾服務器同步。它確定計算機增減時間的比率,並對此進行補償。
- chronyc:命令行用戶工具,用於監控性能並進行多樣化的配置。它可以在chronyd實例控制的計算機上工作,也可在一台不同的遠程計算機上工作。
服務unit文件: /usr/lib/systemd/system/chronyd.service
監聽端口: 323/udp,123/udp
配置文件: /etc/chrony.conf
安裝chrony
yum -y install chrony
配置與外部時間服務器進行時間同步的客戶端主機
1、修改chronyd配置文件 /etc/chrony.conf
server 210.72.145.44 prefer # 這是中國國家授時中心的IP
server ntp1.aliyun.com iburst # iburst代表快速同步時間
server ntp2.aliyun.com iburst
# allow 172.16.1.0/24 # 允許此IP地址段訪問
allow 0.0.0.0/0 # 允許所有主機訪問
local stratum 10 # 本地局域網同步時間服務器(第十層的局域網主機),打開注釋即可。
2、啟動chronyd服務,並設置為開機啟動。
systemctl start chronyd
systemctl enable chronyd
配置其他客戶端與以上客戶端主機時間同步
其他客戶端只需要與代表的客戶端(即與服務器端時間同步的客戶端主機)進行同步即可(即使用上面客戶端IP地址:172.16.1.41進行時間同步)。
1、修改chronyd配置文件 /etc/chrony.conf
server 172.16.1.41 iburst # 刪掉其他的,添加要同步時間的客戶端主機ip
2、啟動chronyd服務,並設置為開機啟動。
systemctl start chronyd
systemctl enable chronyd
chronyc命令
chronyc -a makestep 立即手工同步
accheck 檢查是否對特定主機可訪問當前服務器
activity 顯示有多少NTP源在線/離線
sources [-v] 顯示當前時間源的同步信息
sourcestats [-v] 顯示當前時間源的同步統計信息
add server 手動添加一台新的NTP服務器
clients 報告已訪問本服務器的客戶端列表
delete 手動移除NTP服務器或對等服務器
settime 手動設置守護進程時間
tracking 顯示系統時間信息
/etc/chrony.conf 配置詳解
- server - 可以多次用於添加時鍾服務器,必須以"server "格式使用。一般而言,你想添加多少服務器,就可以添加多少服務器
- iburst 選項當服務器可達時,發送一個八個數據包而不是通常的一個數據包。 包間隔通常為2秒,可加快初始同步速度
- driftfile - 根據實際時間計算出計算機增減時間的比率,將它記錄到一個文件中,會在重啟后為系統時鍾作出補償,甚至可能的話,會從時鍾服務器獲得較好的估值
- rtcsync - 啟用內核模式,系統時間每11分鍾會拷貝到實時時鍾(RTC)
- allow / deny - 指定一台主機、子網,或者網絡以允許或拒絕訪問本服務器
- cmdallow / cmddeny - 可以指定哪台主機可以通過chronyd使用控制命令
- bindcmdaddress - 允許chronyd監聽哪個接口來接收由chronyc執行的命令
- makestep - 通常chronyd將根據需求通過減慢或加速時鍾,使得系統逐步糾正所有時間偏差。在某些特定情況下,系統時鍾可能會漂移過快,導致該調整過程消耗很長的時間來糾正系統時鍾。該指令強制chronyd在調整期大於某個閥值時調整系統時鍾
- local stratum 10 - 即使server指令中時間服務器不可用,也允許將本地時間作為標准時間授時給其它客戶端