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

六、测试

手动调整某子节点服务器时间,观察过段时间后是否会自动更新成一致时间。如果时间差距过大,所需的调整时间会变长。