时间漂移的表现与影响
时间漂移的典型表现是日志时间戳与实际不符、集群节点之间时间差达到秒级、依赖证书与令牌校验的业务开始报错。对认证、审计和分布式事务而言,时间是最基础的假设之一,同步失败往往不会直接报错,而是以难以解释的业务异常呈现。
先看服务再看源
排查顺序是:同步服务是否在运行,配置的时钟源是否可达,是否已经选中并收敛到某个源。内网隔离环境最常见的原因是配置里仍写着公网时钟源,网络不通导致长期不同步;其次是防火墙没放行同步端口,域名能解析不代表协议可用。
基本信息
| 常用服务 | chrony,服务名 chronyd |
|---|---|
| 配置路径 | /etc/chrony.conf,含时钟源与漂移文件 |
| 协议与端口 | NTP 使用 UDP 123 |
| 关键命令 | chronyc tracking、chronyc sources -v、chronyc makestep |
典型使用场景
- 集群节点时间差过大导致业务校验失败
- 内网隔离环境无法访问公网时钟源,需要改指向内网源
- 虚拟机快照回滚后时间倒退,需要立即校正
- 审计要求提供时间同步的配置与运行状态证据
- 排查证书报错时先确认系统时间是否准确
诊断
诊断
systemctl status chronyd --no-pager | head # 服务是否运行
chronyc tracking # 偏差、参考源与同步状态
chronyc sources -v # 各时钟源状态,看是否选中
chronyc sourcestats | head # 各源统计与估计偏差
timedatectl # 系统时间与同步开关处置
处置
vim /etc/chrony.conf # 换成可达的内网时钟源
systemctl restart chronyd
chronyc sources -v && chronyc tracking # 观察是否选中并逐渐收敛
chronyc makestep # 偏差过大时立即校正(需配置允许)
firewall-cmd --add-port=123/udp --permanent && firewall-cmd --reload # 放行同步端口输出项读法
| 字段 | 含义 | 正常表现 |
|---|---|---|
| Reference ID | 当前使用的参考源 | 为配置的可用源,非默认占位值 |
| Stratum | 距离基准源的层级 | 数值较小且稳定 |
| System time | 与参考源的时间偏差 | 在毫秒级并持续收敛 |
| sources 前缀符号 | 源的状态标识 | 出现表示已被选中的标记 |
| Leap status | 闰秒处理状态 | Normal |
隔离内网要指定内网时钟源或本地时钟源;虚拟机场景还要注意宿主机时间策略,宿主机自身不准时,guest 同步到外部源也只是把误差搬了个位置。