加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 上如何配置 Ntp 时间同步

发布时间:2023-03-24 13:59:38 所属栏目:Linux 来源:
导读:NTP 是 Network Time Protocol 的缩写,也即 网络时间协议,一种在 Linux 上保持准确时间的协议,它和网络上可用的 NTP 服务器保持着时钟同步在 Linux 中,保持准确的日期和时间至关重要,因为许多服务(如 cron 作业

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 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

另外,启动 chronyd 服务的时候如果出现下面截图中的错误,需要安装或者升级 libsepol、policycoreutils-python

具体的问题说明详见 https://bugzilla.redhat.com/show_bug.cgi?id=1592775

复制

# 安装 libsepol 和 policycoreutils-python

yum install libsepol policycoreutils-python

chrony 的组成

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

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

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

chronyc 通过下面的方式访问 chronyd

复制

通过 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

守护进程 chronyd 的默认配置文件是 /etc/chrony.conf,其中可配置项很多,这里介绍一些常用的

配置项

说明

server

客户端需找哪个服务器询问当前时间

pool

同 server 配置项

driftfile

本地时钟和服务器时钟的预估漂移保存到哪个文件中

makestep

纠正客户端时间的步进参数

rtcsync

是否允许内核同步实时时钟

allow

允许客户端通过内网地址同步时钟

logdir

日志目录

配置时间同步

守护进程 chronyd 既可作为客户端 与 服务器同步时间,又可作为一个服务器,接受其他客户端同步时间的请求

下面以配置局域网时间服务器为例来说明 chronyd 的客户端和服务器的配置,相关的参数如下:

客户端IP: 192.168.70.22服务器IP: 192.168.70.21

下面是具体的配置步骤

1. 安装客户端服务器

分别在客户端机器和服务器机器安装 chrony,安装方法前面有讲述,这里不赘述了

2. 编辑 /etc/chrony.conf

安装好 chrony 之后,编辑 /etc/chrony.conf 配置文

客户端配置

复制

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

server 192.168.70.21 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 192.168.70.21

pool 配置项

客户端需要去时间服务器获取时间,配置文件中 server 和 pool 配置项表示时间服务器的地址,支持域名或者IP

建议配置多个时间服务器的地址,优先选择同步良好,网络稳定且靠近客户端的地址

pool 与 allow 的区别

pool指的是进行时间同步的服务器IP地址或域名,作为服务器来说,其机器时间也需要从其他时间服务器同步,此时,服务器是作为一个客户端从网络服务器上获取时间

而 allow 字段表示的是作为服务器,允许客户端从该地址获取时间,此地址其实就是服务器的内网地址。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!