首页 guides 服务器时间不同步怎么办:chrony 排障与配置实战

服务器时间不同步怎么办:chrony 排障与配置实战

服务器时间不同步是很多站长容易忽略、却直接影响业务稳定性的基础配置。当服务器时钟发生漂移,日志时间错乱、SSL(安全传输协议)证书校验失败、数据库主从复制中断、定时任务提前或延后执行,这些问题排查起来往往非常耗时。本文不重复讲 chrony 的基础安装,而是聚焦”时间已经不同步了怎么排查、怎么修”,从配置到排障一步步给出可执行的命令,帮助你快速定位并解决时间不同步带来的连锁故障。如果你正在规划服务器的基础运维,可以先参考 香港云主机VPS与独立服务器对比,了解不同方案在运维管理上的差异。

什么是 NTP 与 chrony

NTP(网络时间协议)是让服务器与标准时间源保持一致的协议,它通过 UDP 123 端口与上游时间服务器通信,把本地时钟校准到毫秒级精度。chrony 是新一代的 NTP 实现,相比传统 ntpd,它在网络抖动、间歇性断网环境下同步精度更高,启动后收敛更快,因此成为主流 Linux 发行版的默认时间同步工具。对运行在 VPS(虚拟专用服务器)或独立服务器上的业务来说,稳定的时间同步是日志审计、证书校验和分布式协作的基础。如果你还不清楚服务器基础配置如何规划,可以先阅读我们的 服务器运维分类文章,了解常见的基础设施管理要点。

安装与基础配置

chrony 在 Debian/Ubuntu 系统上,安装只需一条命令:

sudo apt update && sudo apt install -y chrony

在 CentOS/RHEL 系系统上,则使用:

sudo yum install -y chrony

安装完成后,主配置文件位于 /etc/chrony/chrony.conf(Debian 系)或 /etc/chrony.conf(CentOS 系)。核心配置项是 pool 指令,它指定上游时间服务器。默认配置通常已经包含一组公共 NTP 服务器,例如:

pool 2.debian.pool.ntp.org iburst

iburst 参数让 chrony 在启动时快速发送多个同步请求,缩短首次收敛时间。如果你希望使用更稳定的国内时间源,可以把 pool 换成 ntp.aliyun.com 或 ntp.tencent.com 等国内公共服务器,减少跨地域网络延迟带来的抖动。配置完成后,重启服务并设为开机自启:

sudo systemctl restart chrony
sudo systemctl enable chrony

验证时间同步是否生效

部署完成后,验证同步状态是判断配置是否生效的关键一步。使用 chronyc 命令查看同步源:

chronyc sources -v

输出中每一行代表一个上游时间源,^* 表示当前正在使用的同步源,^+ 表示候选源,^? 表示不可达。如果没有任何源被标记为 ^*,说明同步尚未建立。接着查看同步精度:

chronyc tracking

tracking 输出中的 System time 字段表示本地时钟与标准时间的偏差,正常应保持在毫秒级。Leap status 为 Normal 表示系统处于正常同步状态。你还可以用 timedatectl 确认系统时间与硬件时间(RTC)是否一致:

timedatectl

如果 System clock synchronized: yes 且 NTP service: active,说明时间同步链路已经打通。若显示 no,则需要继续排查,进入下一节的排障流程。

chrony 时间同步流程示意图

时钟漂移的常见排障实战

即使配置正确,服务器仍可能出现时间不同步。下面按故障现象给出对应的排查路径。

现象一:chronyc sources 显示所有源不可达。当 chronyc sources -v 输出全部为 ^? 时,最常见的原因是 UDP 123 端口被防火墙拦截。先检查防火墙规则:

sudo ufw status
sudo iptables -L -n | grep 123

如果发现 123 端口被 DROP,需要放行出站 UDP 123。以 ufw 为例:

sudo ufw allow out 123/udp

部分云厂商的安全组也会在更外层拦截 UDP 123,此时需要登录云控制台,在安全组规则中放行出站 UDP 123。放行后重启 chrony 并重新查看 chronyc sources -v,确认源是否变为 ^*。

现象二:时间偏差过大,chrony 拒绝大幅调整。如果服务器时钟与标准时间偏差超过几分钟甚至几小时,chrony 默认的 makestep 策略可能不会立即大幅跳变,导致同步迟迟无法收敛。此时可以手动强制校准一次:

sudo chronyc makestep

makestep 会立即把本地时钟跳到标准时间。若希望系统在启动时自动处理大幅偏差,可在 chrony.conf 中启用:

makestep 1 3

这表示在启动后的前 3 次同步中,如果偏差超过 1 秒就立即跳变,避免长时间缓慢收敛。

现象三:硬件时钟(RTC)与系统时间不一致。服务器重启后时间回退,通常是硬件时钟与系统时间不同步导致。用 hwclock 把系统时间写入硬件时钟:

sudo hwclock --systohc

同时确认系统时区设置正确,避免时区错误导致日志时间看起来错乱。关于服务器整体运维和监控,可以参考 使用美国虚拟主机对网站安全的影响,把时间同步纳入日常巡检的一部分。

时间不同步的影响往往不是立刻显现的,而是累积的。比如日志时间错乱会让排障时无法按时间线定位问题,SSL 证书校验失败会让站点在浏览器里报安全警告,数据库主从复制中断则可能导致数据不一致。这些问题的共同点是:表面看是各自独立的故障,根因却是同一个时钟漂移。所以建议把时间同步状态纳入日常巡检,定期用 chronyc tracking 检查偏差,一旦发现超过毫秒级就及时处理,避免小偏差演变成大故障。

时钟漂移排障示意图

总结与行动建议

服务器时间同步并不复杂,核心就三步:安装 chrony、配置上游时间源、验证同步状态。建议你按这份清单逐项执行,遇到时钟漂移时先检查防火墙是否放行 UDP 123,再检查偏差是否过大需要手动校准,最后确认硬件时钟与系统时间一致。如果你需要一台支持 root 权限、方便配置时间同步的服务器,可以考虑 Hostease 的 VPS 或独立服务器方案,它们都提供完整的 root 权限,方便你自由配置 chrony 等系统服务。先把时间同步配好,再逐步完善其他运维项,你的服务器稳定性就能明显提升。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://hostease.webhostingtalk.cn/guides/server-time-sync-chrony-fix-practical/

作者: wht-he-admin

下一篇
chrony 时间同步配置教程 封面配图

已经没有了

返回顶部