管理时间同步服务

为解决因时间不同步导致的定时任务错乱、日志时间戳不一及分布式系统时钟紊乱等问题,可配置时间同步服务,为实例自动校准时间。

工作原理

image
  • NTP (Network Time Protocol):网络时间协议,它通过计算网络延迟,实现客户端与服务器之间毫秒级的时间同步。

  • 阿里云NTP服务器:阿里云部署的NTP服务器,提供专有网络(VPC)内网的接入点,能让ECS实例在极低的网络延迟下与服务器进行时间同步。

  • chrony/ntpd/W32time:时间同步服务,负责使用NTP协议将实例系统时间与NTP服务器进行同步。在 Linux/Unix 系统上,chrony性能优于ntpd,Windows系统使用内置的W32time服务。

配置时间同步

Linux(chrony)

阿里云公共镜像中包含了默认的时间同步配置,基于公共镜像创建的ECS实例会默认运行chrony进行时间同步。

部分老旧的公共镜像默认运行的是ntpd,可使用ps -C chronyd,ntpd -o comm=查看,若返回进程为ntpd则说明默认运行的是ntpd,需参见Linux(ntpd)配置时间同步。

1. 检查并配置NTP服务器地址

  1. 编辑chrony配置文件。

    Alibaba Cloud Linux/CentOS/RHEL

    sudo vim /etc/chrony.conf

    Ubuntu/Debian

    sudo vim /etc/chrony/chrony.conf
  2. 配置阿里云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
  3. 保存配置文件并退出,重启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服务器地址

  1. 编辑NTP配置文件。

    sudo vim /etc/ntp.conf
  2. 配置阿里云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
  3. 保存配置文件并退出,重启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为例)。

  1. 在任务栏的通知区域,单击日期和时间,并单击日期和时间设置

    image

  2. 在设置页面,单击相关设置>添加不同时区的时钟

  3. 日期和时间里,单击Internet 时间>更改设置(C)...

  4. Internet 时间设置对话框里,勾选Internet时间服务器同步(S),填写ntp.cloud.aliyuncs.com,并单击立即更新,然后单击确定

  5. 验证时间同步。当出现时钟与对应服务器同步成功时表示已与服务器进行时间同步,若时间同步失败,请检查防火墙或安全软件是否阻止了UDP 123端口。

    image

命令提示符

1. 配置 NTP 服务器

建议将 Windows Server 默认的NTP服务器 (time.windows.com) 更改为阿里云NTP服务器(以Windows Server 2022为例)。

  1. Win + R,输入cmd,然后按Enter,打开命令提示符。

  2. 设置 NTP 服务器。以 ntp11.cloud.aliyuncs.com 为例。

     w32tm /config /manualpeerlist:"ntp11.cloud.aliyuncs.com" /syncfromflags:manual /reliable:YES /update
  3. 重启时间服务。

     net stop w32time
     net start w32time
  4. NTP服务器同步时间。

    w32tm /resync

2. 验证时间同步

运行命令w3tm /query /status:如果显示为 Local CMOS Clock,而不是匹配置的NTP服务器地址,则说明同步失败。

 w32tm /query /status

image

常见问题

如何强制手动同步系统时间?

为了避免时间跳变的风险,不建议手动同步时间。若系统时间与标准时间的偏差非常大(例如,几分钟甚至几小时),并且业务能够容忍一次时间跳变时,可执行手动同步时间。

Linux(chrony)

  1. 停止chrony

    sudo systemctl stop chronyd.service
  2. 手动同步时间。

    sudo chronyd -q
  3. 启动chrony

    sudo systemctl start chronyd.service

Linux(ntpd)

Alibaba Cloud Linux/CentOS/RHEL

  1. 停止ntpd

    sudo service ntpd stop
  2. 手动同步时间。

    sudo service ntpdate start
  3. 启动ntpd

    sudo service ntpd start

Ubuntu/Debian

  1. 停止ntpd

    sudo service ntp stop
  2. 手动同步时间。

    sudo ntpdate ntp.cloud.aliyuncs.com ntp7.cloud.aliyuncs.com ntp10.cloud.aliyuncs.com ntp11.cloud.aliyuncs.com ntp12.cloud.aliyuncs.com
  3. 启动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。

  1. 卸载 ntp 服务。

    Alibaba Cloud Linux/CentOS/RHEL
    sudo yum remove ntp
    Ubuntu/Debian
    sudo apt remove ntp
  2. 安装Chrony

    如果下载失败,参见CentOS6(停止维护)导致的yum下载chrony失败如何解决?

    Alibaba Cloud Linux/CentOS/RHEL
    sudo yum install chrony
    Ubuntu/Debian
    sudo apt update
    
    sudo apt install chrony
  3. 配置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 个请求)来快速获取服务器的时间,确保在短时间内迅速获得准确的时间。

  4. 启动chrony服务。

    1. 启动Chrony 服务并设置为开机自启动。

      # 启动 chrony 服务
      sudo service chronyd start
      
      # 设置 chrony 在系统启动时自动启动
      sudo chkconfig chronyd on
    2. 检查chrony状态。使用 chronyc 工具来检查 chrony 的状态和同步情况。

      # 检查服务状态
      sudo service chronyd status
    3. 验证时间同步。执行命令查看主服务器的状态以及本地时钟与时间服务器之间的偏差。

      sudo chronyc tracking

CentOS6(停止维护)导致的yum下载chrony失败如何解决?

  1. 清理旧的repo配置。

    sudo mkdir -p /etc/yum.repos.d/backup && sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
  2. 创建指向官方存档的新配置。 直接运行下面的命令,它会创建一个新的 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
  3. 清理缓存并重建。

    sudo yum clean all && sudo yum makecache
  4. 下载chrony

    sudo yum install chrony

相关文档

如需了解更多关于Linux时间的相关概念及操作,或者想了解关于Linux公共镜像中时间配置的变化,请参见Linux时间和时区说明