云服务器时间总跑偏?用 chrony 做时间同步与排错
【摘要】 服务器时间跑偏会影响日志、证书与定时任务。本文介绍 chrony 的安装启用、上游源配置与 UDP 123、服务冲突、时区偏差等常见排错方法。
服务器时间跑偏看起来是小事,实际上会连锁影响日志对齐、证书校验、定时任务和分布式事务。本文用 chrony 做一次完整的时间同步与排错,适合新装的云服务器照着做。
先看现状
先确认当前时间、时区和同步状态,不要一上来就改配置:
date; timedatectl; chronyc tracking; chronyc sources -v
重点看三项:系统时间与标准时间是否接近;时区是不是 Asia/Shanghai;chrony 是否已经在同步。如果 timedatectl 显示 NTP service 为 inactive,说明还没有启用同步。
安装并启用 chrony
主流发行版可以直接安装并设为开机自启:
# Debian / Ubuntu
sudo apt update && sudo apt install -y chrony
# RHEL / CentOS / openEuler
sudo dnf install -y chrony
sudo systemctl enable --now chronyd
sudo systemctl status chronyd
注意服务名在不同发行版可能是 chronyd 或 chrony,status 报错时先用 systemctl list-units | grep chrony 确认。
配一个可靠的上游源
默认源通常可用,但跨地域或内网环境建议显式配置。编辑 /etc/chrony.conf,保留一到两个可达的上游,例如:
pool pool.ntp.org iburst
server time1.cloud.tencent.com iburst
makestep 1.0 3
rtcsync
makestep 的含义是:开机后如果偏差超过 1 秒,在前 3 次更新内允许直接跳变,而不是慢慢追赶。这对刚启动、偏差较大的云服务器很友好。改完配置要重启服务并重新观察:
sudo systemctl restart chronyd
sleep 5; chronyc tracking; chronyc sources
常见排错清单
- 防火墙或安全组拦截:NTP 走 UDP 123,出方向被拦截时 sources 会一直显示问号,先放行出方向 UDP 123 再看。
- 多个时间服务冲突:ntpd、systemd-timesyncd 和 chrony 不要同时跑,留一个即可,否则会互相抢占。
- 虚拟化时间漂移:宿主机时间本身不准时,客户机再怎么同步也难稳定,先确认宿主机或云平台的时间源。
- 时区不对:date 显示 UTC 但业务按北京时间判断时,先用 timedatectl set-timezone Asia/Shanghai 修正,再核对日志时间。
- 偏差过大:偏差超过几分钟时,先用 chronyc makestep 手动跳变一次,再让 chrony 进入正常跟踪。
上线前核对表
- timedatectl 显示 System clock synchronized: yes;
- chronyc tracking 的 Leap status 为 Normal;
- 重启一次服务后,5 分钟内仍能保持同步;
- 关键定时任务的下次执行时间与预期一致。
把时间同步当作服务器的基线配置做进初始化脚本,后续排查日志、证书和定时任务时,至少不会先被时间问题带偏。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)