centos8时间同步——chrony

2023-11-15 13:58:09 3092

centos8时间同步——chrony

chrony的优点:

  • 时间同步的速度比 ntpd 更快

  • chrony 很好的处理了同步延迟以及网络延迟

  • 即使出现网络降级,chrony 仍然能正常工作

  • 本地机器可以作为时间服务器,其他机器从这台服务器上同步时间

在新的 Linux 发行版(centos8、Ubuntu 20.04、Fedora 30)及以后的版本中,系统默认已经安装了 chrony,在这之前的版本是没有安装的,可以使用下面的命令进行安装

yum install chrony

安装完成后,chrony 服务默认会自动加到 systemctl 中管理,下面列出了一些常用的命令

#查询 chronyd 服务状态

systemctl status chronyd    

#启动 chronyd 服务

systemctl start chronyd  

#关闭 chronyd 服务

systemctl stop chronyd  

#重启 chronyd 服务

systemctl restart chronyd  

#设置 chronyd 服务开机自启

systemctl enable chronyd

systemctl daemon-reload

注意:ntpd 和 timesyncd 都是时间同步工具,但是它们和 chrony 冲突,只能启动其中一个服务

chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的,具体如下图

image.png

chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.conf

chronyc 通过 323 端口与 chrond 交互,可监控 chronyd 的性能并在运行时更改各种操作参数

chronyc 通过下面的方式访问 chronyd

配置chrony时间同步服务器10.0.0.15 客户端10.0.0.13 10.0.0.14

安装客户端服务器

yum install chrony

客户端配置

# 同步时间的服务器 IP 或 域名

server 10.0.0.15 iburst

 

# 系统时钟的预估漂移保存到指定的文件中,是为了在下次启动时能稳定的同步

driftfile /var/lib/chrony/drift

 

# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许 chronyd

# 通过步进而不是回转来快速纠正它

makestep 1 3

 

# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间

# 增加了一种 rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟里

rtcsync

 

# 日志

logdir /var/log/chrony

服务器配置

安装 chrony 之后,默认的配置是客户端的启动配置的,要想作为一个时间服务器来运行的话, 需要在配置中增加 allow 配置项,它表示允许客户端通过该地址和服务器同步时间

另外,时间服务器的时间也需要从网络上其他的时间服务器进行同步,这里直接用默认的即可,具体的配置如下

# 同步时间的服务器 IP 或 域名

pool 0.centos.pool.ntp.org iburst

pool 1.centos.pool.ntp.org iburst

pool 2.centos.pool.ntp.org iburst

pool 3.centos.pool.ntp.org iburst

 

# 为了在下次启动时稳定的同步,系统时钟的预估漂移需要保存到指定的文件中

driftfile /var/lib/chrony/drift

 

# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许 chronyd

# 通过步进而不是回转来快速纠正它,这个过程将花费很长时间

makestep 1 3

 

# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间

# 增加了一种 rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟里

rtcsync

 

# 允许客户端通过该地址和服务器同步时间,其实这里配置的就是时间服务器的地址

allow 10.0.0.0/24

处理防火墙

时间服务器如果有开启防火墙的话,需要开启 UDP 协议 的 123 端口,以允许客户端向服务器发送获取时间的请求

firewall-cmd --permanent --add-port=123/udp

firewall-cmd --reload

重启chrony

systemctl restart chronyd

查询信息

在服务器端输入 chronyc clients 命令查看同步的客户端信息

在客户端输入 chronyc sources 命令查查看时间服务器的信息

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: