准确--CentOS 7 配置 Chrony 同步阿里云 NTP 时间服务器及手动同步指南
本文档介绍如何在 CentOS 7 系统上配置 chrony
服务,使其与阿里云 NTP 时间服务器保持时间同步,并说明如何在需要时手动触发一次立即同步。
前提条件:
- 拥有一台 CentOS 7 服务器。
- 拥有 root 权限或可以使用
sudo
命令。 - 服务器可以访问互联网 (使用公共 NTP 地址) 或阿里云内网 (使用内网 NTP 地址)。
第一部分:配置 Chrony 与阿里云 NTP 服务器同步
-
安装 Chrony (如果尚未安装)
检查chrony
是否已安装:rpm -q chrony
如果未安装,使用 yum 进行安装:
sudo yum install chrony -y
-
配置 Chrony 使用阿里云 NTP 服务器
-
备份原始配置文件 (推荐):
sudo cp /etc/chrony.conf /etc/chrony.conf.bak
-
编辑配置文件:
sudo vi /etc/chrony.conf
-
修改服务器地址:
找到以server
开头的行,将它们注释掉(在行首加#
)或删除。然后添加阿里云的 NTP 服务器地址。iburst
选项有助于加快初始同步速度。- 选项 A: 使用阿里云公共 NTP 服务器 (适用于任何网络环境)
# 注释掉或删除默认服务器 # server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst# 添加阿里云公共 NTP 服务器 server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst server ntp4.aliyun.com iburst server ntp5.aliyun.com iburst server ntp6.aliyun.com iburst server ntp7.aliyun.com iburst
- 选项 A: 使用阿里云公共 NTP 服务器 (适用于任何网络环境)
-
-
启动并设置 Chrony 服务开机自启
- 启动 chronyd 服务:
sudo systemctl start chronyd
- 设置 chronyd 服务开机自启:
sudo systemctl enable chronyd
- 重启 chronyd 服务 (使配置生效):
如果服务已在运行,修改配置后需重启:sudo systemctl restart chronyd
- 启动 chronyd 服务:
-
验证同步状态
等待片刻让chrony
开始同步,然后检查:- 检查服务状态:
确保状态为sudo systemctl status chronyd
active (running)
。 - 查看同步源:
观察chronyc sources -v
S
列,应有*
(主同步源) 或+
(备选源)。Reach
值应逐渐增长至377
。Last sample
显示时间偏差。 - 查看跟踪信息:
查看chronyc tracking
Reference ID
,Stratum
,Last offset
等信息。Last offset
应逐渐趋近于零。 - 检查系统时间:
date
- 检查服务状态:
第二部分:手动立即同步时间
通常 chronyd
会在后台平滑地调整时间(slewing)。但如果初始时间偏差较大(例如几秒钟),或者你希望立即将时间校准,可以手动触发一次时间步进(stepping)。
-
方法一:使用
chronyc makestep
(推荐)
这是与正在运行的chronyd
服务交互的标准方法。- 确保
chronyd
正在运行:sudo systemctl status chronyd
- 执行命令强制同步:
此命令会指示sudo chronyc makestep
chronyd
立即将系统时间调整到它认为正确的最新时间。 - 再次验证时间:
date chronyc tracking
Last offset
应非常接近零。
- 注意: 时间步进会导致系统时间瞬间跳变,可能影响对时间跳变敏感的应用。但对于几秒的调整通常是安全的。
- 确保
-
方法二:使用
ntpdate
(不推荐,除非chronyd
无法使用)
ntpdate
是一个旧工具,会强制设置时间,但不能与chronyd
同时运行。- 停止
chronyd
:sudo systemctl stop chronyd
- 使用
ntpdate
同步 (选择一个阿里云服务器):sudo ntpdate ntp1.aliyun.com # 或内网地址 (如果在ECS上): # sudo ntpdate ntp.cloud.aliyuncs.com
- 重新启动
chronyd
:sudo systemctl start chronyd
- 注意: 此方法中断了
chrony
的连续监控和调整,一般不推荐在已配置chrony
的系统上使用。
- 停止
第三部分:防火墙配置 (通常不需要)
chrony
作为客户端,通常只需要允许 出站 UDP 端口 123 的流量。- CentOS 7 默认的
firewalld
防火墙通常允许所有出站连接,因此一般无需额外配置。 - 如果你的防火墙策略非常严格,限制了出站流量,请确保允许
chronyd
进程或目标端口为 UDP 123 的出站连接。