Linux服务器如何配置NTP从服务器 实现多层级时间同步

Linux服务器如何配置NTP从服务器 实现多层级时间同步

系统教程

必须用ntpd而非仅ntpdate+cron,因ntpdate硬同步导致时间跳变,引发sleep/timer/ZooKeeper/Kafka等服务异常,且无法补偿硬件漂移、不记录drift值;ntpd与ntpdate端口冲突,共存时ntpdate报错“no server suitable for synchronization found”。

必须用 ntpd,不能只靠 ntpdate 定时脚本;否则时间会跳变、服务异常、日志错乱。

为什么不能只用 ntpdate + cron

常见错误是写个每5分钟跑一次 ntpdate 192.168.10.1 的定时任务。这会导致:

  • ntpdate 是“硬同步”:直接把系统时间秒级跳变,sleeptimer、ZooKeeper 会话、Kafka 时间戳等全受影响
  • 无法补偿硬件时钟漂移,重启后时间偏差立刻回归
  • 不记录 drift 值,下次同步仍从零开始校准
  • ntpdatentpd 不能共存——端口 123/udp 冲突,启动 ntpdntpdate 会报 no server suitable for synchronization found

ntpd 配置成从服务器的关键项

在客户端(即“从服务器”)的 /etc/ntp.conf 中,核心配置只有三类:

  • 删掉或注释掉所有 server 127.127.1.0fudge 行——这是本地时钟源,仅主服务器才需要
  • 只保留上游服务器条目,例如:server 192.168.10.1 iburstiburst 加速初始同步)
  • 加上 driftfile /var/lib/ntp/drift:必须是绝对路径、ntpd 进程可写,否则无法持续学习本地晶振偏差

不需要配 restrict ——从服务器不对外提供服务,restrict default ignore 可加可不加,但别漏掉 driftfile

启动前必须检查的 4 件事

否则 ntpd 启动成功但实际不工作:

会译·对照式翻译

会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

下载

  • 确认防火墙放行 UDP 123 端口:iptables -I INPUT -p udp --dport 123 -j ACCEPT(CentOS 7+ 若用 firewalld,则用 firewall-cmd --add-service=ntp --permanent
  • 确保系统时区正确:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,否则 ntpq -p 显示的 offset 会失真
  • 首次启动前手动快同步一次(避免 ntpd 因偏差过大拒绝同步):systemctl stop ntpd && ntpdate -s 192.168.10.1 && systemctl start ntpd
  • 检查 /var/lib/ntp/drift 所在目录权限是否为 ntpd:ntpd,否则 drift 值写不进去,长期运行后偏差累积

验证是否真正同步成功

ntpq -p 输出里最关键的不是 reach,而是这三项:

  • st(stratum)值应 ≥2:如果是 1,说明它误把自己当主服务器了(多半因残留 server 127.127.1.0
  • offset 应在 ±10ms 内波动:超过 ±50ms 说明网络延迟高或上游不稳定
  • jitter 应 iburst

如果 ntpq -p 无输出或显示 ***,先执行 ntpq -c rv 查看 sys.peer 是否为空,再查 journalctl -u ntpd -n 50 看是否因权限/路径/防火墙被拒。

多层级部署最易忽略的是 drift 文件路径权限和首次 ntpdate -s 强制对齐——这两点不处理,ntpd 会静默降级为“假同步”,表面正常实则 drift 不收敛。

本文地址:https://www.sztg.com.cn/article/654155.html

如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!

猜您喜欢