伺服器時間同步架構與實現chrony
實驗背景
模擬企業局域伺服器時間同步,保障各伺服器系統準確性和時間一致性。
時間伺服器系統搭建
實驗架構圖
環境設備
設備IP規劃
-
中國互聯網NTP伺服器
ntp.aliyun.com #阿里雲NTP授時伺服器地址 ntp.tencent.com #騰訊雲NTP授時伺服器地址 ntp.ntsc.ac.cn #中國科學院國家授時中心NTP授時伺服器地址 time.edu.cn #教育網內的授時伺服器
-
企業外網NTP伺服器
192.168.100.30 #NTPserver1,os:centos8 192.168.100.31 #NTPserver2,os:rocklinux8
-
企業內網區域網NTP客戶端
192.168.100.10 #NTPClient1 192.168.100.11 #NTPClient2 192.168.100.12 #NTPClient3
時間同步系統實現
-
對NTPserver1、NTPserver2、NTPClient1、NTPClient2、NTPClient3安裝chronyd同步數據軟體。
yum install chrony -y #centos,yum安裝chronyd軟體 #apt install chrony -y #Ubuntu,yum安裝chronyd軟體
-
配置NTPserver1、NTPserver2同步互聯網NTP伺服器,並授權允許同步時鐘的客戶端網段。
編輯配置文件:/etc/chrony.conf
#1、禁用默認的國外時間伺服器地址 #pool 2.centos.pool.ntp.org iburst #2、添加中國互聯網時間伺服器域名地址 server ntp.aliyun.com iburst server ntp.tencent.com iburst server ntp.ntsc.ac.cn iburst server time.edu.cn iburst #3、添加允許客戶端同步時鐘的網段 allow 0.0.0.0/0 #4、設置即使server指令中時間伺服器不可用,也允許將本地時間作為標準時間授時給其它客戶端 local stratum 10
-
允許NTPserver1、NTPserver2的chrony服務,
systemctl start chronyd
-
驗證配置文件是否配置成功,並查看服務狀態是否運行,查看udp埠123是否開啟,是否運行任何IP訪問(0.0.0.0)
systemctl status chronyd ss -anu
-
查看NTPserver1、NTPserver2是否已正常同步互聯網時間伺服器
chronyc sources -V
-
配置客戶端:NTPClient1、NTPClient2、NTPClient3同步NTPserver1和NTPserver2
#1、centos7系統配置,禁用系統默認時間伺服器地址 #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 #或centos8禁用默認的國外時間伺服器地址 #pool 2.centos.pool.ntp.org iburst #2、添加企業外網時間同步伺服器地址 server 192.168.100.30 iburst server 192.168.100.31 iburst
-
重啟客戶端chrony服務
systemctl restart
-
驗證客戶端NTPClient1、NTPClient2、NTPClient3是否同步NTPserver1和NTPserver2時間伺服器
chronyc sources -V
-
可在NTPserver1和NTPserver2驗證接入哪些客戶端連接
chronyc clients
命令和配置文件及詳解
-
chrony介紹
-
兩個主要程式:chronyd和chronyc
chronyd:後台運行的守護進程,用於調整內核中運行的系統時鐘和時鐘伺服器同步。它確定電腦增減時間的比率,並對此進行補償 chronyc:命令行用戶工具,用於監控性能並進行多樣化的配置。它可以在chronyd實例控制的電腦上工作,也可在一台不同的遠程電腦上工作
-
服務unit 文件: /usr/lib/systemd/system/chronyd.service
-
監聽埠: 服務端: 123/udp,客戶端: 323/udp
-
配置文件: /etc/chrony.conf
-
-
配置文件chrony.conf
server #可用於時鍾伺服器,iburst 選項當伺服器可達時,發送一個八個數據包而不是通常的一個數據 包。 包間隔通常為2秒,可加快初始同步速度 pool #該指令的語法與server 指令的語法相似,不同之處在於它用於指定NTP伺服器池而不是單個 NTP伺服器。池名稱應解析為隨時間可能會變化的多個地址 driftfile #根據實際時間計算出電腦增減時間的比率,將它記錄到一個文件中,會在重啟後為系統時鐘作 出補償 rtcsync #啟用內核模式,系統時間每11分鐘會拷貝到實時時鐘(RTC) allow / deny #指定一台主機、子網,或者網路以允許或拒絕訪問本伺服器 cmdallow / cmddeny #可以指定哪台主機可以通過chronyd使用控制命令 bindcmdaddress #允許chronyd監聽哪個介面來接收由chronyc執行的命令 makestep # 通常chronyd將根據需求通過減慢或加速時鐘,使得系統逐步糾正所有時間偏差。在某些特定 情況下,系統時鐘可能會漂移過快,導致該調整過程消耗很長的時間來糾正系統時鐘。該指令強制chronyd在 調整期大於某個閥值時調整系統時鐘 local stratum 10 #即使server指令中時間伺服器不可用,也允許將本地時間作為標準時間授時給其它 客戶端
-
chronyc 可以運行在互動式和非互動式兩種方式
help 命令可以查看更多chronyc的交互命令 accheck 檢查是否對特定主機可訪問當前伺服器 activity 顯示有多少NTP源在線/離線 sources [-v] 顯示當前時間源的同步資訊 sourcestats [-v]顯示當前時間源的同步統計資訊 add server 手動添加一台新的NTP伺服器 clients 報告已訪問本伺服器的客戶端列表 delete 手動移除NTP伺服器或對等伺服器 settime 手動設置守護進程時間 tracking 顯示系統時間資訊
-
判斷時間客戶端是否連接上時間伺服器:chronyc sources -v
[21:28:46 root@rocky8 ~]#chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^+ 203.107.6.88 2 9 377 451 +2493us[+2375us] +/- 39ms ^* 139.199.215.251 2 9 337 206 +205us[ +145us] +/- 49ms ^+ 114.118.7.161 1 9 231 259 +22ms[ +22ms] +/- 50ms ^? 202.112.0.7 0 9 0 - +0ns[ +0ns] +/- 0ns #-------------------------------------------- ^+ 203.107.6.88 #表示可用時間伺服器地址 ^* 139.199.215.251 #表示客戶端正在連接同步時間的伺服器地址 ^? 202.112.0.7 #表示不可用的伺服器地址