Ubuntu 上使用 chrony 并配置阿里云的时间服务器作为上游时间源,以下步骤进行设置。

1. 安装 chrony

首先,确保系统已安装 chrony

1
2
sudo apt update
sudo apt install chrony

2. 配置 chrony

编辑 chrony 的配置文件 /etc/chrony/chrony.conf

1
sudo nano /etc/chrony/chrony.conf

在配置文件中,找到或添加以下内容,将默认的时间服务器条目替换为阿里云的时间服务器:

1
2
3
4
5
6
7
8
# 注释掉默认的时间服务器条目
# pool 2.debian.pool.ntp.org iburst

# 配置阿里云的时间服务器,客户端配置这个为服务器地址
server ntp.aliyun.com iburst

# 允许本地网络中的客户端访问时间服务器(可选,根据需要配置)
# allow 192.168.60.0/24

在这里,iburst 选项用于加速首次时间同步。

注释或删除不必要的配置项

  • 如果你不需要使用 Ubuntu 默认提供的 NTP 服务器,或不需要通过 DHCP 获取时间源,可以将这些相关配置项注释掉或删除,保持配置文件简洁。例如:
1
2
3
4
5
#Use time sources from DHCP.
# sourcedir /run/chrony-dhcp

# Use NTP sources found in /etc/chrony/sources.d.
# sourcedir /etc/chrony/sources.d

3. 启动并启用 chrony

完成配置后,重启 chrony 服务,并将其设置为开机启动:

1
2
sudo systemctl restart chrony
sudo systemctl enable chrony

4. 验证配置

可以通过以下命令查看 chrony 是否正确同步到阿里云的时间服务器:

1
chronyc sources -v

输出的结果应当显示 ntp.aliyun.com 作为时间源,并且同步状态应为正常。

5. 确保防火墙允许 NTP 流量

如果你的服务器有启用防火墙(如 ufw),需要确保允许 NTP 流量(UDP 123 端口):

1
2
sudo ufw allow 123/udp
sudo ufw reload

==============

手动更改esxi系统时间

1
esxcli system time set -d 30 -H 14 -m 19 -M 04 -y 2020

同步主板时间到esxi系统上

1
esxcli system time get
1
2
3
4
[root@localhost:/vmfs/volumes/5dd78cd7-2b752f03-d715-14187750f218/time] esxcli system time set -d 30 -H 14 -m 19 -M 04 -y 2020
[root@localhost:/vmfs/volumes/5dd78cd7-2b752f03-d715-14187750f218/time] esxcli system time get
2020-04-30T14:19:46Z
[root@localhost:/vmfs/volumes/5dd78cd7-2b752f03-d715-14187750f218/time]

image-20240812152125889

linux 客户端配置测试

为了测试时间服务器在客户端是否已经生效,可以将客户端的时间手动修改为一个明显不正确的时间,然后观察 chronysystemd-timesyncd 是否能够将客户端的时间正确地同步回来。这是一种常见的测试方法。下面是详细的步骤:

测试步骤

1. 手动设置客户端的系统时间为不正确的时间

你可以使用 date 命令将客户端的时间设置为一个明显错误的时间,例如提前或推迟几个小时:

1
sudo date -s "2024-08-12 01:00:00"

此命令会将系统时间设置为 2024-08-12 01:00:00,这通常与正确时间相差较大。

2. 强制同步时间

如果你使用的是 chrony,可以通过以下命令强制同步时间:

1
sudo chronyc makestep

如果你使用的是 systemd-timesyncd,可以通过重启 systemd-timesyncd 服务来强制同步:

1
sudo systemctl restart systemd-timesyncd

3. 验证时间是否已同步

执行以下命令查看当前时间是否已被同步回正确的时间:

1
date

你也可以使用以下命令查看同步状态:

  • 对于 chrony:

    1
    chronyc sources -v

    这将显示当前的 NTP 源和同步状态。

  • 对于 systemd-timesyncd:

    1
    timedatectl status

    这将显示系统时间、RTC 时间、NTP 服务状态和同步状态。

预期结果

  • 如果时间服务器在客户端上配置正确并正常工作,系统时间应该很快被同步回正确的时间。
  • chronyc sources -vtimedatectl status 的输出中应显示 NTP 服务是活动的,并且系统时钟已同步。

其他检查方法

  1. 检查日志:

    • 对于 chrony,你可以查看 chrony 的日志文件 /var/log/chrony(如果启用了日志记录)。

    • 对于 systemd-timesyncd,你可以查看系统日志来检查同步情况:

      1
      journalctl -u systemd-timesyncd
  2. 查看同步偏差:

    • 使用 chronyc tracking 命令查看系统时间与 NTP 服务器时间的偏差,确认同步是否成功:

      1
      chronyc tracking
    • timedatectl 也会显示系统时间是否同步。

总结

通过手动设置客户端的时间为一个不正确的时间,然后强制同步,你可以验证时间服务器在客户端是否已经生效。如果客户端能够在短时间内将时间纠正回来,那么时间服务器配置是正确且有效的。