本文以CentOS 7.8系统为例介绍如何修改Linux系统的ECS实例的时区,以及如何开启、配置及使用Chrony服务,保证实例本地时间精确同步。

# 背景信息

目前,所有地域下ECS实例默认采用CST(China Standard Time)时区,您也可以根据自己的业务需求为ECS实例设置或者修改时区。 CentOS 7版本中使用Chrony工具实现本地时间与标准时间同步。与CentOS 6版本中的NTP服务不同,Chrony可以更快更准确地同步系统时钟,最大程度的减少时间和频率误差。Chrony包含了两个核心程序:

chronyd是后台运行的守护进程。用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行修正。
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd控制的服务器上工作;也可以在一台不同的远程服务器上工作。

更多详情,请参见Chrony。

# 修改Linux系统实例时区

运行以下命令查看时区列表。

ls /usr/share/zoneinfo/<时区文件夹名称>
1

例如,运行以下命令可以在时区列表中查看到Hong_Kong时区。

ls /usr/share/zoneinfo/Asia
1

运行以下命令修改时区。

ln -sf /usr/share/zoneinfo/Asia/Hong-Kong /etc/localtime
1

运行以下命令更新硬件时钟(RTC)。

hwclock -w
1

运行以下命令查看时区。

timedatectl status
1

查询结果如下所示,时区已修改为Hong_Kong。

[root@k8s-node1 ~]# timedatectl status
      Local time: 四 2022-10-20 09:02:37 CST
  Universal time: 四 2022-10-20 01:02:37 UTC
        RTC time: 四 2022-10-20 00:56:54
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
1
2
3
4
5
6
7
8
9

# 启用Chrony服务

运行以下命令启动chronyd服务并设置开机自启动。

systemctl start chronyd.service
systemctl enable chronyd.service
1
2

运行以下命令查看本机时间同步状态,用于验证服务是否已启动。

chronyc tracking
1

运行以下命令查看时间同步服务器列表。

chronyc -n sources -v
1

# 配置Chrony服务

运行以下命令打开chrony配置文件。

vim /etc/chrony.conf
1

找到 server <NTP服务器> minpoll 4 maxpoll 10 iburst 的信息后,按i键开始编辑文件,给您暂时不需要的NTP服务器句首加上#隐藏起来。 新添加一行NTP服务器信息,格式为:server <需要添加的NTP服务器> minpoll 4 maxpoll 10 iburst。完成编辑后按Esc键并输入:wq保存退出。 NTP服务器信息,请参见阿里云NTP服务器。

运行以下命令启动chronyd服务并设置开机自启动。

systemctl start chronyd.service
systemctl enable chronyd.service
1
2

运行以下命令查看时间同步服务器列表。

chronyc -n sources -v
1

# 手动同步时钟

运行以下命令进入Chrony工具。

chronyc
1

在Chrony工具内,运行以下命令同步时钟。

makestep
1

# 来源