chrony是现代linux集群时间同步的首选方案,因其支持持续跟踪时钟漂移、平滑调整时间、适应虚拟化与网络波动,而ntpdate仅单次硬调且已被主流发行版废弃。

生产环境集群时间同步不能只靠“能用”,得兼顾精度、稳定性、故障恢复能力。ntpdate已不适用于长期运行的集群,它只是单次硬调,容易引发应用异常;chrony才是现代Linux集群的首选方案,尤其适合虚拟化、网络波动或时钟漂移大的场景。
为什么ntpdate不该用于集群同步
ntpdate执行一次就退出,无法持续跟踪时钟漂移。它直接跳跃修改系统时间,在数据库事务、Kafka消息时间戳、HTTPS证书校验等场景下极易出错。RHEL 8+、Ubuntu 20.04+等主流发行版已将其标记为废弃工具。若仅用于维护窗口内的临时校准(如重启后手动拉齐),可保留备用,但绝不可作为集群常态化同步手段。
Chrony服务端-客户端架构部署
在集群中选定一台稳定主机(如跳板机或专用NTP节点)作为chrony服务端,其余节点作为客户端。这种结构避免所有节点直连公网NTP源,降低出口带宽压力和防火墙策略复杂度。
- 服务端配置:编辑/etc/chrony.conf,启用本地权威时间源并开放内网访问
local stratum 10
allow 192.168.10.0/24(替换为实际业务网段) - 客户端配置:注释掉默认pool行,改为指向服务端IP
server 192.168.10.1 iburst - 两端均需放行UDP 123端口:
firewall-cmd --permanent --add-service=ntp && firewall-cmd --reload - 重启服务并设开机自启:
systemctl restart chronyd && systemctl enable chronyd
关键参数调优与精度保障
默认配置对大多数场景足够,但生产集群建议显式强化以下几项:
- makestep 1.0 -1:允许开机或服务启动时,对任意大小偏差(不限于1秒)立即步进调整,避免因硬件时钟严重偏移导致chronyd拒绝同步
- rtcsync:让chronyd每11分钟将系统时间写入硬件时钟(RTC),防止重启后时间大幅回退
- logdir /var/log/chrony + log measurements statistics tracking:开启详细日志,便于排查长期漂移趋势
验证是否生效:
chronyc tracking 查看Offset(当前偏差,理想值<5ms)、Skew(频率误差,越小越好)
chronyc sources -v 确认服务端IP状态为^*(优选源)且延迟Low
故障应急与日常巡检建议
集群时间同步不是“配完就完事”。建议纳入运维SOP:
- 每日定时检查:
chronyc tracking | grep -E "(Offset|Skew)" 输出存入监控平台 - 发现Offset持续>50ms或Skew突增,立即执行:
chronyc makestep 强制即时修正 - 禁止混用chronyd、ntpd、systemd-timesyncd——同一台机器只能运行一个时间服务
- 虚拟机集群务必在宿主机启用chrony,并在客户机中禁用“时间同步”相关VMware Tools/QEMU Guest Agent功能,避免双重干预造成震荡











