一、簡單介紹:
Chrony是NTP(Network Time Protocol,網絡時間協議,服務器時間同步的一種協議)的另一種實現,與ntpd不同,它可以更快且更准確地同步系統時鍾,最大程度的減少時間和頻率誤差。
Chrony包括兩個核心組件:
1、chronyd:一個后台運行的守護進程,用於調整內核中運行的系統時鍾與NTP服務器同步。它確定服務器增減時間的比率,並對此進行調整補償;
2、chronyc:提供用戶界面,用於監控性能並進行多樣化的配置。它可以在chronyd實例控制的服務器上工作,也可以在一台不同的遠程服務器上工作。
二、演示環境:
IP |
主機名 |
操作系統 |
服務器角色 |
描述 |
時間同步方式 |
192.168.1.146 |
ntp-server |
CentOS 7.6 |
內網NTP Server |
向阿里雲提供的公網NTP服務器同步時間 作為內網NTP Server,內網中的其它服務器向其同步時間 |
chronyd服務平滑同步 |
192.168.1.147 |
ntp-client1 |
CentOS 7.6 |
內網NTP Client |
向內網NTP Server 192.168.1.146同步時間 |
chronyd服務平滑同步 |
192.168.1.148 |
ntp-client2 |
CentOS 7.6 |
內網NTP Client |
向內網NTP Server 192.168.1.146同步時間 |
crontab + ntpdate強制同步 |
備注:使用chronyd服務平滑同步時間的方式要優於crontab + ntpdate,因為ntpdate同步時間會造成時間的跳躍,對一些依賴時間的程序和服務會造成影響,例如:sleep、timer等,且chronyd服務可以在修正時間的過程中同時修正CPU tick。
三、192.168.1.146配置內網NTP Server:
1、關閉firewalld防火牆
2、關閉SELinux
3、配置主機名ntp-server:
# echo "192.168.1.146 ntp-server" >> /etc/hosts
# vim /etc/hostname --> ntp-server
# hostnamectl set-hostname ntp-server
# logout
Ctrl + Shift + r
# hostname
4、查看當前服務器時間:# date
5、安裝並配置chrony:
# yum -y install chrony
# mv /etc/chrony.conf /etc/chrony.conf.bak
# vim /etc/chrony.conf,新增如下代碼:
# 指定上層NTP服務器為阿里雲提供的公網NTP服務器
server ntp1.aliyun.com iburst minpoll 4 maxpoll 10
server ntp2.aliyun.com iburst minpoll 4 maxpoll 10
server ntp3.aliyun.com iburst minpoll 4 maxpoll 10
server ntp4.aliyun.com iburst minpoll 4 maxpoll 10
server ntp5.aliyun.com iburst minpoll 4 maxpoll 10
server ntp6.aliyun.com iburst minpoll 4 maxpoll 10
server ntp7.aliyun.com iburst minpoll 4 maxpoll 10
# 記錄系統時鍾獲得/丟失時間的速率至drift文件中
driftfile /var/lib/chrony/drift
# 如果系統時鍾的偏移量大於10秒,則允許在前三次更新中步進調整系統時鍾
makestep 10 3
# 啟用RTC(實時時鍾)的內核同步
rtcsync
# 只允許192.168.1網段的客戶端進行時間同步
allow 192.168.1.0/24
# 阿里雲提供的公網NTP服務器不可用時,采用本地時間作為同步標准
local stratum 10
# 指定包含NTP驗證密鑰的文件
keyfile /etc/chrony.keys
# 指定存放日志文件的目錄
logdir /var/log/chrony
# 讓chronyd在選擇源時忽略源的層級
stratumweight 0.05
# 禁用客戶端訪問的日志記錄
noclientlog
# 如果時鍾調整大於0.5秒,則向系統日志發送消息
logchange 0.5
備注:詳細指令參數可以使用命令# man chrony.conf查看
6、啟動chronyd服務:
# systemctl start chronyd.service
# systemctl status chronyd.service
# ss -tunlp | grep chronyd
# systemctl enable chronyd.service
7、查看時間同步源:# chronyc sources -v
備注:120.25.115.20為ntp1.aliyun.com域名解析后的地址,203.107.6.88為ntp2.aliyun.com~ntp7.aliyun.com域名解析后的地址
8、查看時間同步源狀態:# chronyc sourcestats -v
說明:
^* #已同步
^? #未同步
192.168.2.25 #時間服務器IP
備注:可直接輸入命令chronyc進入交互式模式
常用指令說明:
Ø help:查看完整的命令幫助列表
Ø tracking:顯示系統時間信息
Ø activity:檢查多少NTP源在線/離線
Ø add server:手動添加一台新的NTP服務器
Ø delete:手動移除NTP服務器或對等服務器
Ø accheck:檢查NTP訪問是否對特定主機可用
Ø clients:在客戶端報告已訪問到的服務器
說明:chronyd和chronyc的詳細使用方法可以使用命令# man chronyd和# man chronyc查看
四、192.168.1.147配置內網NTP Client:
1、關閉firewalld防火牆
2、關閉SELinux
3、配置主機名ntp-client1:
# echo "192.168.1.147 ntp-client1" >> /etc/hosts
# vim /etc/hostname --> ntp-client1
# hostnamectl set-hostname ntp-client1
# logout
Ctrl + Shift + r
# hostname
4、查看當前服務器時間:# date
5、安裝並配置chrony:
# yum -y install chrony
# mv /etc/chrony.conf /etc/chrony.conf.bak
# vim /etc/chrony.conf,新增如下代碼:
server 192.168.1.146 iburst
driftfile /var/lib/chrony/drift
makestep 10 3
rtcsync
local stratum 10
keyfile /etc/chrony.keys
logdir /var/log/chrony
stratumweight 0.05
noclientlog
logchange 0.5
6、啟動chronyd服務:
# systemctl start chronyd.service
# systemctl status chronyd.service
# ss -tunlp | grep chronyd
# systemctl enable chronyd.service
7、查看時間同步源:# chronyc sources -v
8、查看時間同步源狀態:# chronyc sourcestats -v
五、192.168.1.148配置內網NTP Client:
1、關閉firewalld防火牆
2、關閉SELinux
3、配置主機名ntp-client2:
# echo "192.168.1.148 ntp-client2" >> /etc/hosts
# vim /etc/hostname --> ntp-client2
# hostnamectl set-hostname ntp-client2
# logout
Ctrl + Shift + r
# hostname
4、查看當前服務器時間:# date
5、安裝ntpdate:# yum -y install ntpdate
6、編寫定時任務,實現每3分鍾向192.168.1.146同步一次時間,並將系統時間設置為硬件時間
# crontab -e --> */3 * * * * /usr/sbin/ntpdate 192.168.1.146 &> /dev/null;/usr/sbin/hwclock -w
# crontab -l
# systemctl enable crond.service
7、測試定時任務:將時間調慢,觀察服務器時間是否會自動同步
8、檢查3台服務器的時間是否一致:
六、Windows 10自動定期同步阿里雲Windows公共NTP服務器:
Win + r --> control panel --> 查看方式選擇“類別”--> 時鍾和區域 --> 日期和時間 --> Internet時間 --> 更改設置 --> 輸入阿里雲Windows公共NTP服務器地址time.pool.aliyun.com --> 立即更新
systemctl restart chronyd ###重起時間同步服務
systemctl stop firewalld ###火牆沒關的話需要關閉
timedatectl set-timezone Asia/Shanghai ###更改當前時區為東8區【統一時區,亞洲上海】
在客戶端上:
vim /etc/chrony.conf ###編輯時間同步配置文件
server ip iburst ###選擇要同步的服務器【本機立即同步該ip主機的時間】
systemctl restart chronyd ###重起時間同步服務
timedatectl set-timezone Asia/Shanghai ###更改當前時區為東8區【統一時區,亞洲上海】
客戶端測試:
chronyc sources -v ###結果為^*則同步完成
:
1.服務器編輯同步配置文件,重起服務,關閉火牆,修改時區
2.客戶端編輯配置文件,重起服務,設置時區
3.客戶端測試:chronyc sources -v【注意左下角^*】
同步完成,客戶時間已經同步服務器。
二:時間設定:\color{blue}{二:時間設定:}二:時間設定:
vim /etc/adjtime ###查看系統默認時間顯示的是哪個區域的【UTC】
timedatectl set-time "2019-04-13 10:10:10" ###更改時間
timedatectl set-timezone Asia/Shanghai ###更改時區
timedatectl list-timezone ###查看支持的所有時區
timedatectl set-local -rtc 0|1 ###設定/etc/adjtime中的時間顯示格式
【是否使用UTC時間,0為使用,1為不使用】
演示:
1. vim /etc/adjtime ###查看系統默認時間顯示的是哪個區域的【UTC】
2. timedatectl set-local -rtc 0|1 ###設定/etc/adjtime中的時間顯示格式
其他不做在此演示。