Linux中使用Chrony同步时间
Chrony是什么?
Chrony 是网络时间协议(NTP)的一种实现。可以使用 Chrony:
- 将系统时钟与
NTP服务器同步, - 将系统时钟与参考时钟同步,如ASCII 接收器.
- 要将系统时钟与手动时间输入同步,
- 作为
NTPv4(RFC 5905)服务器或对等服务器,为网络中的其他计算机提供时间服务。
简而言之,Chrony是一个NTP协议的实现,能够同步其他NTP服务器的时间,也可以作为NTP服务器供其他服务器同步时间。
Chrony怎么用?
假设你的所有服务器都在 10.0.0.0/8 网段中,且此网段中所有服务器之间的网络策略是互通的。此时你可以将一台服务器作为Chrony服务器让其他服务器同步它的时间。
例如,我在 10.0.0.0/8 网段中选择 10.10.2.101作为Chrony服务器,然后允许本网段中其他服务器来同步时间,那么配置如下:
服务端:
备份并修改chrony配置文件
cp /etc/chrony.conf /etc/chrony.conf_bak
vim /etc/chrony.conf文件内容:
# 手动控制时间源(用于手工调整)
manual
# 修改 chrony 对外服务端口(默认 123 → 改为 11123)
# 可以不修改,也可以修改,看需求
port 11123
# 允许 10 段网段访问
allow 10.0.0.0/8
# driftfile 和日志
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
# 启用本地时间源,即使没有外部同步源也能提供服务
local stratum 10
# 外部同步源,如果有外部时间源,chrony服务器也可以通过外部时间来更新自己的时间,没有的话就注释
# 如果服务器通互联网,也可以配置互联网上的 ntp 服务器地址
#server 10.15.163.89 iburst修改完成后保存退出,重启chrony服务即可:
systemctl restart chronyd客户端:
备份并修改chrony配置文件
cp /etc/chrony.conf /etc/chrony.conf_bak
vim /etc/chrony.conf文件内容:
server 10.10.2.101 port 11123 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony修改完成后保存退出,重启chrony服务即可:
systemctl restart chronyd配置成功后可以通过这条指令来查看当前同步状态
chronyc tracking输出示例:
[root@server1 ~]# chronyc tracking
Reference ID : 0A055046 (10.10.2.101)
Stratum : 11
Ref time (UTC) : Wed Nov 19 02:11:31 2025
System time : 0.000006415 seconds slow of NTP time
Last offset : -0.000008004 seconds
RMS offset : 0.000010776 seconds
Frequency : 3.412 ppm fast
Residual freq : -0.001 ppm
Skew : 0.013 ppm
Root delay : 0.000045834 seconds
Root dispersion : 0.000062100 seconds
Update interval : 260.9 seconds
Leap status : Normal其中查看最后一行的 Leap status ,如果是Normal则证明与 Reference ID中的IP同步成功,否则代表不成功。
使用下面这条指令可以手动同步一次时间
chronyc makestep执行以下指令会打印出chrony正在访问的时间源的信息
chronyc sources -v输出示例:
[root@server1 ~]# chronyc sources -v
210 Number of sources = 1
.-- 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
|| 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
===============================================================================
^* 10.10.2.101 10 8 377 170 -5891ns[ -14us] +/- 23us其中最后列出的 IP 之前 如果显示 ^*则代表与当前时间源正常同步,如果显示^?则代表未正常同步。
参考链接:
