Linux上怎么配置NTP时间同步
关注
“脚本之家
”,与百万开发者在⼀起
作者 | 枫叶
出品 | Linux开发那些事⼉(ID:LinuxThings)
NTP 是 Network Time Protocol 的缩写,也即⽹络时间协议,⼀种在 Linux 上保持准确时间的协议,它和⽹络上可⽤的NTP 服务器保持着时钟同步
在 Linux 中,保持准确的⽇期和时间⾄关重要,因为许多服务(如 cron 作业和脚本)依赖于准确的时间才能得到预期的结果
⽤于同步⽇期和时间的 ntpd 服务,在新的Linux发⾏版 ( centos8、Ubuntu 20.04、Fedora 30 ) 中已经废弃了,取⽽代之的是 chrony
当然,选择 chrony 是有原因的,相⽐ ntpd , 它有如下的优点:
1、时间同步的速度⽐ntpd 更快
2、chrony 很好的处理了同步延迟以及⽹络延迟
3、即使出现⽹络降级,chrony 仍然能正常⼯作
4、本地机器可以作为时间服务器,其他机器从这台服务器上同步时间
安装
在新的 Linux 发⾏版( centos8、Ubuntu 20.04、Fedora 30 )及以后的版本中,系统默认已经安装了 chrony,在这之前的版本是没有安装的,可以使⽤下⾯的命令进⾏安装
yum installchrony
安装完成后,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
另外,启动 chronyd 服务的时候如果出现下⾯截图中的错误,需要安装或者升级 libsepol、policycoreutils-python
# 安装libsepol 和policycoreutils-python
yum installlibsepol policycoreutils-python
chrony 的组成
chrony 是由守护进程 chronyd 以及命令⾏⼯具 chronyc 组成的,具体如下图
chronyd 在后台静默运⾏并通过 123 端⼝与时间服务器定时同步时间,默认的配置⽂件是 /f
chronyc 通过 323 端⼝与 chronyd 交互,可监控 chronyd 的性能并在运⾏时更改各种操作参数
chronyc 通过下⾯的⽅式访问 chronyd
1 、通过IPv4 或IPv6 访问
2 、通过Unix 域socket, 但只能访问到本地的chronyd ,⽽且需要root ⽤户或者chrony ⽤户才能访问
默认情况下, chronyc 先通过 Unix 域 socket 访问 chronyd ,默认的 socket ⽂件是 /var/run/chrony/chronyd.sock , 如果失败(常见的原因是使⽤⾮ root ⽤户运⾏ chronyc ),将尝试通过 127.0.0.1 访问 chronyd
chrony 配置
守护进程 chronyd 的默认配置⽂件是 /f ,其中可配置项很多,这⾥介绍⼀些常⽤的
配置项说明
server客户端需哪个服务器询问当前时间
pool同 server 配置项
driftfile本地时钟和服务器时钟的预估漂移保存到哪个⽂件中
makestep纠正客户端时间的步进参数
rtcsync是否允许内核同步实时时钟
allow允许客户端通过内⽹地址同步时钟
allow允许客户端通过内⽹地址同步时钟
logdir⽇志⽬录
配置时间同步
守护进程 chronyd 既可作为客户端与服务器同步时间,⼜可作为⼀个服务器,接受其他客户端同步时间的请求下⾯以配置局域⽹时间服务器为例来说明 chronyd 的客户端和服务器的配置,相关的参数如下:
客户端IP: 192.168.70.22
服务器IP: 192.168.70.21
下⾯是具体的配置步骤
1. 安装客户端服务器
分别在客户端机器和服务器机器安装 chrony,安装⽅法前⾯有讲述,这⾥不赘述了
2. 编辑 /f
安装好 chrony 之后,编辑 /f 配置⽂
•客户端配置
# 同步时间的服务器IP 或域名
server 192.168. 70.21iburst
# 系统时钟的预估漂移保存到指定的⽂件中,是为了在下次启动时能稳定的同步
driftfile /var/ lib/ chrony/ drift
# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许chronyd
# 通过步进⽽不是回转来快速纠正它
makestep 13程序员培训机构选用极客时间
# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间
# 增加了⼀种rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟⾥
rtcsync
# ⽇志
logdir /var/log/chrony
•服务器配置
安装 chrony 之后,默认的配置是客户端的启动配置的,要想作为⼀个时间服务器来运⾏的话,需要在配置中增加allow 配置项,它表⽰允许客户端通过该地址和服务器同步时间
另外,时间服务器的时间也需要从⽹络上其他的时间服务器进⾏同步,这⾥直接⽤默认的即可,具体的配置如下
# 同步时间的服务器IP 或域名
p.org iburst
p.org iburst
p.org iburst
p.org iburst
# 为了在下次启动时稳定的同步,系统时钟的预估漂移需要保存到指定的⽂件中
driftfile /var/lib/chrony/drift
# 如果系统时钟由于某种原因与启动后的服务器时间相差甚远,允许chronyd
# 通过步进⽽不是回转来快速纠正它,这个过程将花费很长时间
makestep 1 3
# 为了使客户端实时时钟接近服务器的时钟,以便下次时钟启动时更接近真实的时间
# 增加了⼀种rtcsync 模式,该模式下,系统时间会定期的拷贝到实时时钟⾥
rtcsync
# 允许客户端通过该地址和服务器同步时间,其实这⾥配置的就是时间服务器的地址
allow 192.168.70.21
pool 配置项
客户端需要去时间服务器获取时间,配置⽂件中 server 和 pool 配置项表⽰时间服务器的地址,⽀持域名或者IP
建议配置多个时间服务器的地址,优先选择同步良好,⽹络稳定且靠近客户端的地址
pool 与 allow 的区别

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。