Skip to content

Linux CentOS 时间同步

约 1111 字大约 4 分钟

腾讯云云服务器CVMLinux

2022-05-12

ntpd(Network Time Protocol daemon)是 Linux 操作系统的一个守护进程,用于校正本地系统与时钟源服务器之间的时间,完整的实现了 NTP 协议。

通常情况下,腾讯云服务器开通后,系统时间无需人工干预,但也可以通过 ntpd 来实现时间的同步。

说明:NTP 服务的通信端口为 UDP 123,设置 NTP 服务之前,请确保您已经开放 UDP 123 端口。

安装 ntpd

执行以下命令,判断是否安装 ntpd。

rpm -qa | grep ntp

如果返回类似如下结果,表示已安装 ntpd。

1.jpg

如果未安装 ntpd,请使用 yum install ntp 安装 ntpd。

yum -y install ntp

配置 NTP

1、执行以下命令,打开 NTP 服务配置文件。

vi /etc/ntp.conf

2、按 i 切换至编辑模式,找到 server 相关配置,将 server 修改为您需要设置的目标 NTP 时钟源服务器(例如 time1.tencentyun.com 等),并删除暂时不需要的 NTP 时钟源服务器。如下图所示:

2.jpg

3.jpg

腾讯云提供了内网 NTP 服务器供腾讯云内网设备使用,对于非腾讯云设备,可以使用腾讯云提供的公网 NTP 服务器。

内网 NTP 服务器

time1.tencentyun.com
time2.tencentyun.com
time3.tencentyun.com
time4.tencentyun.com
time5.tencentyun.com

外网 NTP 服务器

ntp.tencent.com
ntp1.tencent.com
ntp2.tencent.com
ntp3.tencent.com
ntp4.tencent.com
ntp5.tencent.com

3、按 Esc,输入 :wq,保存文件并返回。

启动 ntpd

执行以下命令,重启 ntpd 服务。

systemctl restart ntpd.service

检查 ntpd 状态

根据实际需求,执行以下不同的命令,检查 ntpd 的状态。

执行以下命令,查看 NTP 服务端口 UDP 123 端口是否被正常监听。

netstat -nupl

返回类似如下结果,表示监听正常。

4.jpg

执行以下命令,查看 ntpd 状态是否正常。

service ntpd status

返回类似如下结果,表示 ntpd 状态正常。

5.jpg

执行以下命令,获取更详细的 NTP 服务信息。

ntpq -p

返回类似如下结果:

6.jpg

详细参数介绍如下

  • (星号*) : 表示目前使用的 NTP 服务器。
  • remote:响应这个请求的 NTP 服务器的名称。
  • refid:NTP 服务器使用的上一级 NTP 服务器。
  • st:remote 远程服务器的级别。服务器从高到低级别设定为 1 - 16,为了减缓负荷和网络堵塞,原则上建议避免直接连接到级别为 1 的服务器。
  • when:上一次成功请求之后到现在的秒数。
  • poll:本地机和远程服务器多少时间进行一次同步(单位为秒)。初始运行 NTP 时,poll 值会比较小,和服务器同步的频率增加,建议尽快调整到正确的时间范围。调整之后,poll 值会逐渐增大,同步的频率也将会相应减小。
  • reach:八进制值,用来测试能否和服务器连接。每成功连接一次,reach 的值将会增加。
  • delay:从本地机发送同步要求到 NTP 服务器的 round trip time。
  • offset:主机通过 NTP 时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset 越接近于 0,主机和 NTP 服务器的时间越接近。
  • jitter:用来做统计的值。统计在特定连续的连接数里 offset 的分布情况。即 jitter 数值的绝对值越小,主机的时间就越精确。

设置 ntpd 为开机启动

1、 执行以下命令,将 ntpd 设置为开机自启动。

systemctl enable ntpd.service

2、执行以下命令,查看 chrony 是否被设置为开机启动。

systemctl is-enabled chronyd.service

7.jpg

如果状态为未启用,则无需执行下面的命令。

如果 chrony 被设置为开机启动,因 chrony 与 ntpd 冲突,可能引起 ntpd 开机启动失败。请执行以下命令,将 chrony 从开机启动中移除。

systemctl disable chronyd.service

测试时间同步是否生效

1、输入 date 命令,查看当前时间

date

8.jpg

2、人工修改错误时间

将当前时间设置为 2008 年(错误时间用于测试),查看时间修改成功。

9.jpg

3、重启 ntpd 服务,查看时间

systemctl restart ntpd.service

date

10.jpg

总结

ntpd 服务可以实现时间的自动同步,也可以结合计划任务定期运行。