为解决因时间不同步导致的定时任务错乱、日志时间戳不一及分布式系统时钟紊乱等问题,可配置时间同步服务,为实例自动校准时间。
工作原理
配置时间同步
Linux(chrony)
阿里云公共镜像中包含了默认的时间同步配置,基于公共镜像创建的ECS实例会默认运行chrony
进行时间同步。
部分老旧的公共镜像默认运行的是ntpd
,可使用ps -C chronyd,ntpd -o comm=
查看,若返回进程为ntpd
则说明默认运行的是ntpd
,需参见Linux(ntpd)配置时间同步。
1. 检查并配置NTP服务器地址
编辑
chrony
配置文件。Alibaba Cloud Linux/CentOS/RHEL
sudo vim /etc/chrony.conf
Ubuntu/Debian
sudo vim /etc/chrony/chrony.conf
配置阿里云NTP服务器。
以
#
注释文件中所有以 server 开头的行,将下面内容复制到配置文件中。配置多个NTP服务器,可通过冗余实现容错,并通过择优提升时间精度与效率。
# 配置信息,包含了 NTP 服务器地址,最小轮询间隔,最大轮询间隔等信息。 server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
保存配置文件并退出,重启
chrony
。sudo systemctl restart chronyd.service
2. 验证时间同步
重启后的服务会逐步平滑地调整时间,可通过执行sudo chronyc tracking
来验证时间同步状态。
sudo chronyc tracking
输出中的System time 字段(本示例中的0.000036150 seconds fast of NTP time
表示当前系统时间比NTP服务时间快)能精确显示当前系统时间与NTP时间的微小偏差。
当系统时间偏差过大(达数分钟或数小时)且业务能容忍一次时间跳变时,可以考虑手动同步时间。
Reference ID : 64643D58 (100.100.61.88)
Stratum : 2
Ref time (UTC) : Sat Sep 20 07:55:33 2025
System time : 0.000036150 seconds fast of NTP time
Last offset : +0.000031322 seconds
RMS offset : 0.000044841 seconds
Frequency : 43.592 ppm slow
Residual freq : +0.000 ppm
Skew : 0.005 ppm
Root delay : 0.000228760 seconds
Root dispersion : 0.010518964 seconds
Update interval : 1029.1 seconds
Leap status : Normal
Linux(ntpd)
阿里云ECS实例中部分老旧的公共镜像(如CentOS 6)默认配置了ntpd
服务。由于NTP官方已停止维护,建议将其升级为Chrony以获得更好的性能和安全性。
1. 检查并配置NTP服务器地址
编辑
NTP
配置文件。sudo vim /etc/ntp.conf
配置阿里云NTP服务器。
以
#
注释文件中所有以 server 开头的行,将下面内容复制到配置文件中。配置多个NTP服务器,可通过冗余实现容错,并通过择优提升时间精度与效率。
# 配置信息,包含了 NTP 服务器地址,最小轮询间隔,最大轮询间隔等信息。 server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
保存配置文件并退出,重启
ntpd
。Alibaba Cloud Linux/CentOS/RHEL
sudo service ntpd restart
Ubuntu/Debian
service ntp restart
2. 验证时间同步
重启后的服务会逐步平滑地调整时间,可通过执行sudo ntpq -p
来验证时间同步状态,其输出中的offset 字段以表示本地时间和服务器时间的差异。主要参数如下:
offset
:系统时间与服务器时间的差值(以毫秒为单位)。offset
越接近于0,系统就和服务器的时间越接近。jitter
:时间延迟的变化程度。这个数值的绝对值越小系统时间就越精确。
当系统时间偏差过大(达数分钟或数小时)且业务能容忍一次时间跳变时,可以考虑手动同步时间。
sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) .LOCL. 10 l 17 64 1 0.000 0.000 0.000
+100.100.3.1 10.137.55.181 2 u 8 16 1 30.426 -307.76 0.153
*100.100.3.2 10.137.55.181 2 u 5 16 1 26.845 -309.25 0.221
+100.100.3.3 10.137.55.181 2 u 4 16 1 28.819 -309.37 0.187
-100.100.5.1 203.107.7.88 2 u 3 16 1 50.478 -310.70 0.164
-100.100.5.2 203.107.7.88 2 u 2 16 1 47.235 -311.89 0.246
100.100.5.3 203.107.7.88 2 u 1 16 1 53.661 -310.50 0.119
Windows
图形化界面
建议将 Windows Server 默认的NTP服务器 (time.windows.com) 更改为阿里云NTP服务器(以Windows Server 2022为例)。
在任务栏的通知区域,单击日期和时间,并单击日期和时间设置。
在设置页面,单击相关设置>添加不同时区的时钟。
在日期和时间里,单击Internet 时间>更改设置(C)...。
在Internet 时间设置对话框里,勾选与Internet时间服务器同步(S),填写
ntp.cloud.aliyuncs.com
,并单击立即更新,然后单击确定。验证时间同步。当出现时钟与对应服务器同步成功时表示已与服务器进行时间同步,若时间同步失败,请检查防火墙或安全软件是否阻止了UDP 123端口。
命令提示符
1. 配置 NTP 服务器
建议将 Windows Server 默认的NTP服务器 (time.windows.com) 更改为阿里云NTP服务器(以Windows Server 2022为例)。
按
Win + R
,输入cmd
,然后按Enter
,打开命令提示符。设置 NTP 服务器。以
ntp11.cloud.aliyuncs.com
为例。w32tm /config /manualpeerlist:"ntp11.cloud.aliyuncs.com" /syncfromflags:manual /reliable:YES /update
重启时间服务。
net stop w32time net start w32time
与NTP服务器同步时间。
w32tm /resync
2. 验证时间同步
运行命令w3tm /query /status
:如果源显示为 Local CMOS Clock,而不是匹配置的NTP服务器地址,则说明同步失败。
w32tm /query /status
常见问题
如何强制手动同步系统时间?
为了避免时间跳变的风险,不建议手动同步时间。若系统时间与标准时间的偏差非常大(例如,几分钟甚至几小时),并且业务能够容忍一次时间跳变时,可执行手动同步时间。
Linux(chrony)
停止
chrony
。sudo systemctl stop chronyd.service
手动同步时间。
sudo chronyd -q
启动
chrony
。sudo systemctl start chronyd.service
Linux(ntpd)
Alibaba Cloud Linux/CentOS/RHEL
停止
ntpd
。sudo service ntpd stop
手动同步时间。
sudo service ntpdate start
启动
ntpd
。sudo service ntpd start
Ubuntu/Debian
停止
ntpd
。sudo service ntp stop
手动同步时间。
sudo ntpdate ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com
启动
ntpd
。sudo service ntp start
如何确保ECS集群时间同步是正确的?
默认情况下,ECS实例已配置了统一的阿里云NTP服务,无需修改。在为集群自定义NTP配置时,为保证配置统一并避免手动操作失误,建议使用云助手执行批量修改。
阿里云NTP服务器域名有哪些?
各网络下的阿里云NTP服务器地址(仅支持IPv4协议)如下表所示。
阿里云ECS实例:推荐使用VPC内网域名,以获得更低的网络延迟。
非阿里云实例:可使用公网域名进行同步。
专有网络VPC内网 | 公网 |
ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp8.cloud.aliyuncs.com ntp9.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com | ntp.aliyun.com ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com |
阿里云NTP服务器是否收费?
不收费。阿里云公共镜像中包含了默认的时间同步配置,基于公共镜像创建的ECS实例会默认运行Chrony或者NTP服务进行时间同步。
如何将ntpd
升级为chrony
?
阿里云ECS实例中,CentOS 6等部分老旧镜像配置为NTP服务,当前NTP服务官方已经不再维护。如果ECS实例使用的是NTP服务,且业务不依赖NTP服务,建议升级为Chrony。
卸载
ntp
服务。Alibaba Cloud Linux/CentOS/RHEL
sudo yum remove ntp
Ubuntu/Debian
sudo apt remove ntp
安装
Chrony
。如果下载失败,参见CentOS6(停止维护)导致的yum下载chrony失败如何解决?
Alibaba Cloud Linux/CentOS/RHEL
sudo yum install chrony
Ubuntu/Debian
sudo apt update sudo apt install chrony
配置
Chrony
。编辑配置文件
Alibaba Cloud Linux/CentOS/RHEL
sudo vim /etc/chrony.conf
Ubuntu/Debian
sudo vim /etc/chrony/chrony.conf
在此文件中,可添加 NTP 服务器和其他配置。这是一个简单的
chrony.conf
示例:# NTP server settings server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst # 指定漂移文件的位置 driftfile /var/lib/chrony/drift # 允许从本地查询 chronyd allow 127.0.0.1
配置文件的参数解析:
参数
说明
server ntp.cloud.aliyuncs.com
这是 NTP 服务器的域名。
chrony
将连接到这个服务器以获取时间同步。minpoll 4
指定最小的轮询间隔(以 2 的幂为单位)。
minpoll 4
表示最小的轮询间隔为 2⁴=16 秒。这意味着chrony
至少每 16 秒就会与此服务器进行一次同步请求。maxpoll 10
指定最大的轮询间隔。
maxpoll 10
表示最大的轮询间隔为 2¹⁰=1024 秒。iburst
这是一个补充参数,用于加快初次同步过程。当
chrony
启动后,它会通过发送一组快速请求(通常是 8 个请求)来快速获取服务器的时间,确保在短时间内迅速获得准确的时间。启动
chrony
服务。启动
Chrony
服务并设置为开机自启动。# 启动 chrony 服务 sudo service chronyd start # 设置 chrony 在系统启动时自动启动 sudo chkconfig chronyd on
检查
chrony
状态。使用chronyc
工具来检查chrony
的状态和同步情况。# 检查服务状态 sudo service chronyd status
验证时间同步。执行命令查看主服务器的状态以及本地时钟与时间服务器之间的偏差。
sudo chronyc tracking
CentOS6(停止维护)导致的yum
下载chrony失败如何解决?
清理旧的
repo
配置。sudo mkdir -p /etc/yum.repos.d/backup && sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
创建指向官方存档的新配置。 直接运行下面的命令,它会创建一个新的
CentOS-Vault.repo
文件。sudo tee /etc/yum.repos.d/CentOS-Vault.repo <<'EOF' [C6.10-base] name=CentOS-6.10 - Base baseurl=http://vault.centos.org/6.10/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 [C6.10-updates] name=CentOS-6.10 - Updates baseurl=http://vault.centos.org/6.10/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 [C6.10-extras] name=CentOS-6.10 - Extras baseurl=http://vault.centos.org/6.10/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 EOF
清理缓存并重建。
sudo yum clean all && sudo yum makecache
下载chrony
sudo yum install chrony
相关文档
如需了解更多关于Linux时间的相关概念及操作,或者想了解关于Linux公共镜像中时间配置的变化,请参见Linux时间和时区说明。