一、前言:为什么集群必须统一时间?

在大数据、服务器集群、分布式项目中,时间同步是最基础、也最关键的环境配置

如果多台服务器时间不一致,会出现大量诡异问题:

  • Hadoop、Spark、Flink 任务日志时间错乱、任务异常失败

  • Kafka 消息时间戳混乱、数据消费异常

  • 分布式锁、事务、日志排查完全对不上

  • 集群节点之间判定心跳超时、节点掉线

CentOS7/8/9 默认放弃了传统的 ntpd,改用 chrony作为默认时间同步服务,占用资源更低、同步精度更高、联网断网都能用,是目前企业集群的标准方案。

二、方案目标

1. 安装 chrony 时间同步服务

2. 注释系统默认时间源,替换为阿里云公共 NTP 时间源(速度快、延迟低)

3. 设置开机自启,保证服务器重启不失效

4. 强制立即同步最新时间

5. 系统时间写入硬件时钟,避免关机断电时间回退

三、完整一键部署脚本(可直接复制执行)

# 1. 安装chrony时间同步工具 
yum install chrony -y 

# 2. 修改配置:注释系统默认时间源,替换为阿里云时间源 
sed -i 's/^pool/#pool/' /etc/chrony.conf 
echo "server ntp.aliyun.com iburst" >>/etc/chrony.conf 

# 3. 启动服务并设置开机自启 
systemctl enable --now chronyd 

# 4. 强制立即同步一次网络时间 
chronyc -a makestep 

# 5. 将系统时间写入硬件时钟,断电不回退 
hwclock -w

四、逐行代码详细解析

1. 安装 chrony 服务

yum install chrony -y

CentOS 官方默认时间同步软件,轻量化、稳定,适配所有集群环境。

2. 替换为阿里云时间源(核心步骤)

sed -i 's/^pool/#pool/' /etc/chrony.conf 
echo "server ntp.aliyun.com iburst" >>/etc/chrony.conf
  • sed 命令:批量注释配置文件中所有以 pool 开头的默认国外时间源

  • ntp.aliyun.com:阿里云公共免费 NTP 服务器,国内同步速度最快

  • iburst:开机快速同步,缩短时间校准延迟

3. 启动并开机自启

systemctl enable --now chronyd

enable --now 代表:立刻启动服务 + 设置开机自启,一步到位。

4. 强制立即同步时间

chronyc -a makestep

默认 chrony 是渐进式微调时间,该命令可以强制立刻校准时间,适合初次配置、时间偏差较大的服务器。

5. 写入硬件时钟(防时间回退)

hwclock -w

服务器关机断电后,靠硬件时钟维持时间。该命令把当前同步好的系统时间写入主板硬件时钟,彻底解决断电时间重置问题。

五、验证时间同步是否成功

1. 查看时间同步状态

chronyc sources

出现 ntp.aliyun.com 即为配置成功。

2. 查看系统时间

date

六、常见问题总结

  • 为什么不用默认时间源? 默认是国外时间服务器,国内延迟高、同步失败概率大,阿里云源稳定高速。

  • 为什么要执行 hwclock -w? 只同步系统时间,断电后硬件时间错乱,重启后时间再次出错,必须写入硬件时钟。

  • 集群只需要配置一台吗? 建议所有节点全部执行一遍,保证所有服务器时间完全一致。

七、总结

Chrony 是 Linux 集群最优时间同步方案,这套脚本实现了 安装→换国内源→启动→强制同步→固化硬件时间 全套流程,一次配置永久生效,是大数据、服务器运维、分布式项目的环境必备操作

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐