当前位置:

首页 > 系统应用 > Linux服务器如何配置TimeSync 解决集群服务器时间不一致【指南】

Linux服务器如何配置TimeSync 解决集群服务器时间不一致【指南】

Linux集群时间同步问题需使用chronyd解决,而非仅作为客户端的systemd-timesyncd或已过时的ntpd。主服务器需配置chronyd为本地时间源,设置allow指令限定网段并添加localstratum10声明权威性,同时移除外部时间源。客户端应仅指向主服务器,使用makestep参数快速校正时间,并避免与systemd-timesync

Linux服务器集群时间不同步,这事儿在分布式环境里可大可小。日志时间戳对不上、证书验证失败、数据库主从复制出问题,追查起来往往都是时间差那几秒钟惹的祸。直接用系统自带的systemd-timesyncd?它本质上只是个轻量级客户端,没法充当时间服务器给其他节点提供同步服务。真想解决集群内的时间一致性问题,还得靠chronyd——让一台机器作为主时间源,其他所有节点都指向它,这才是正解。

Linux服务器如何配置TimeSync 解决集群服务器时间不一致【指南】

为什么不用 ntpd 或 systemd-timesyncd

先说ntpd,这个老牌服务在主流新系统里已经“退居二线”了。像RHEL 8/CentOS 8、Ubuntu 20.04这些版本,默认都不再安装它。除了配置复杂,它调整时钟的方式也偏“保守”,步进慢,在需要快速对齐的集群环境里不够利索。

那systemd-timesyncd呢?它设计初衷就是简单、省资源,所以只实现了客户端功能。这意味着它自己能去同步外部时间,但无法响应来自局域网内其他服务器的同步请求。你想在集群里自建一个时间锚点?它根本做不到。

所以,答案很明确:集群内时间同步,chronyd是当前的首选。它同时支持服务端和客户端模式,收敛速度快,对虚拟化环境的适应性也更好。不过,有几个细节容易踩坑:

  • chronyd服务启动后,默认确实会监听UDP 323端口,但如果不显式配置bindcmdaddress和allow指令,它不会理睬来自其他机器的查询。
  • 如果你的服务器前面有防火墙或者处于NAT网络,记住要放行的是UDP 323端口,不是传统的NTP 123端口。
  • 别在systemd-timesyncd的配置文件里白费功夫了。即便你在/etc/systemd/timesyncd.conf里设置了NTP=指向你的chrony服务器,它也认不了。它只认标准的NTP v4服务器,而且不支持服务器池(pool)配置。

主服务器:配置 chronyd 为可被访问的时间源

主服务器的配置,核心目标是让它成为一个稳定、可信的本地时间源。编辑/etc/chrony.conf文件,确保以下几项配置到位(顺序可以调整,但内容缺一不可):

server 216.239.35.0 iburst minpoll 4 maxpoll 6
keyfile /etc/chrony.keys
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
allow 192.168.10.0/24  # 替换为你的集群网段
local stratum 10

这里有几个关键点:

  • 关于allow指令:务必指定具体的子网,比如192.168.10.0/24。图省事写成allow 0.0.0.0/0会开放给所有IP,安全风险太高,不推荐。
  • 关于local stratum 10:这行配置至关重要。它告诉chronyd,即使没有连接GPS或原子钟这类高精度硬件,也以“第10层”的层级对外宣告自己是权威时间源。没有这个设置,其他客户端可能会因为觉得这个源层级太高(不够精确)而拒绝同步。
  • 关于上游源:作为集群的“时间锚点”,主服务器本身不应该再去同步外部时间源。因此,需要把配置文件中所有以pool或server开头的、指向外部的行都注释掉或删除。

配置完成后,重启并启用服务:sudo systemctl restart chronyd && sudo systemctl enable chronyd。

客户端:强制只从集群内主服务器同步

客户端的配置思路正好相反:要让它“心无旁骛”,只认我们指定的主服务器。同样使用chronyd,配置文件需要更严格地约束。

pool 192.168.10.1 iburst minpoll 4 maxpoll 6  # 主服务器 IP
keyfile /etc/chrony.keys
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
rtcsync
makestep 1.0 -1
# 注释或删掉所有其他 server/pool 行

客户端配置的要点如下:

  • 强制快速同步:makestep 1.0 -1这个参数是关键。它表示只要检测到系统时间偏差超过1秒,就立即进行“阶跃式”校正,而不是花很长时间慢慢调整。这对于刚启动的服务器,或者从休眠中恢复的虚拟机来说,能迅速将时间拉回正轨。
  • 同步硬件时钟:rtcsync指令会让chronyd定期将校正后的系统时间写回硬件时钟(RTC)。这样可以避免服务器重启后,系统时间又回到一个错误的状态。
  • 保持配置纯净:务必注释或删除配置文件中其他所有指向外部NTP服务器的server或pool行,确保客户端同步来源的唯一性。

配置好后,如何验证?可以运行chronyc tracking查看同步状态,关注System time是否显示为OK。更详细的可以用chronyc sources -v,确认列表中只有你配置的主服务器IP。

另外,一个常见的冲突点是:不要使用timedatectl set-ntp true这个命令。因为它默认启用的是systemd-timesyncd服务,会和chronyd产生冲突,争夺时间控制权。

最后,真正考验人的往往是验证和排错环节。chronyd默认的日志级别不记录详细的同步过程,如果临时需要调试,可以在配置中加上logchange 0.5来获取更详细的变化日志,同时用chronyc activity检查连接状态。

还有一个虚拟化环境下的特例:如果KVM虚拟机开启了宿主机时间同步(比如libvirt配置了clock=host),这个机制会干扰chronyd的工作。在这种情况下,通常需要在虚拟机内部禁用或调整宿主机提供的时间同步功能,才能让chronyd正常发挥作用。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
系统应用 Linux
相关文章 更多
Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。