Linux服务器时间同步——Chronyd
需求:现有三台服务器,想要确保服务器间时间保持一致。
一、安装Chronyd
确认是否安装了chronyd服务
systemctl status chronyd
如果Linux系统中没有安装,可以通过如下命令进行安装:
yum install chrony -y
注:确保需要进行时间同步的服务器都安装了chrony服务
时间同步配置有多种方式
一、服务器联网情况下,可直接使用阿里云时间服务器作为时钟服务器进行同步。
二、未联网情况下,可从局域网内任选一台服务器作为时间服务器进行同步。(后续称作为时间服务器同步源的服务器为主节点,主节点需要修改一些配置。如果使用外部时间服务器,即全部服务器都为子节点)
二、搭建时钟服务器
注:如果提供外部时间服务器地址,可忽略此步骤,直接进行子节点配置chronyd服务。
选取任一节点作为时钟服务器。
chronyd配置文件的路径是/etc/chrony.conf,修改配置文件时建议先进行备份。
备份文件:
cp /etc/chrony.conf /etc/chrony.conf.bak
停止chronyd:
systemctl stop chronyd
vi编辑文件:
vi /etc/chrony.conf
对chronyd.conf进行如下修改,注释掉原有的时间同步服务器,新增网段配置。
# 自身作为时间服务器
pool 127.127.1.0 iburst # 允许访问的IP段
allow 172.30.0.0/16# 优先等级
local stratum 3
配置行解释:
-
pool 127.127.1.0 iburst
这行配置了一个本地时间源。127.127.1.0 是一个伪 NTP 服务器地址,表示Chrony 使用系统自身的硬件时钟或内置时钟源作为时间源。 iburst 选项使得在第一次同步时发送多个请求来加速同步过程。
解释:配置Chrony 使用本地系统的硬件时钟或内置时钟源来同步时间。 -
allow 172.30.0.0/16
该行配置允许来自 IP 范围 172.30.0.0/16 的主机访问该系统的NTP服务。172.30.0.0/16 表示整个 172.30.0.0 网络,子网掩码为 255.255.0.0,即从 172.30.0.0 到 172.30.255.255 的地址范围。
解释:允许来自 IP 地址范围为 172.30.0.0/16 的设备作为 NTP客户端访问本机的时间服务。 -
local stratum 3
这行配置指定了本地时钟的 stratum 值为 3。stratum 值指的是时钟源的层级,3表示该时钟源是比较接近标准时间源的。通常,stratum 1 是直接连接到外部时间源的服务器,stratum 2 是从 stratum 1服务器获取时间的服务器,依此类推。
解释:设置本地时钟为 stratum 3,表示系统的时间源比直接从外部NTP服务器获取的时间源(stratum 1 或 stratum 2)更远,但仍然可用。
配置文件chronyd.conf 例:
手动设置时间,无网环境下执行,以实际时间为准:
date -s "2025-11-17 20:22:00"
设置开机启动并启动服务:
systemctl enable chronyd && systemctl start chronyd
确认服务状态:
systemctl status chronyd
三、子节点配置chronyd服务
修改chrony配置:
vi /etc/chrony.conf
chrony.conf进行如下修改,注释掉原有的时间同步服务器,添加新的源时间服务器,如下图:172.30.166.223为主节点的IP,需按实际IP进行修改。
pool 172.30.166.223 iburst
配置文件chronyd.conf 例:
设置开机启动并启动服务:
systemctl enable chronyd && systemctl start chronyd
确认服务状态:
systemctl status chronyd
四、子节点手动同步时间
手动更新一次时间:
chronyc -a makestep
确认各个节点时间是否一致
五、查验chrony配置
重启chronyd服务:
systemctl restart chronyd
查看chrony配置:
chronyc sources -v
chronyd -p
查看时间状态
timedatectl
六、测试
手动调整某子节点服务器时间,观察过段时间后是否会自动更新成一致时间。如果时间差距过大,所需的调整时间会变长。