当前位置: 首页 > news >正文

linux系统安装搭建chrony(ntp)时间同步服务器

目录

安装chrony

查询是否安装chrony

 配置文件

allow客户端时间同步

local stratum

启动chronyd服务

开启防火墙放行ntp流量。

使用chrony命令检测

stratum层:

​编辑

Stratum 层级的意义

查看 Stratum 层级


系统:centos7、rockylinux9、rockylinux8

ntpd是比较旧的的软件,8.0后存储库中不再提供ntpd软件包

为什么叫chrony实际上来自于词根chron表示时间。

1. 同步精度
Chrony:通常被认为比 ntpd 更加精确,尤其是在网络条件不佳的情况下。它能够更好地处理网络抖动,并且可以在短时间内快速调整时钟。
NTPd:提供了良好的长期稳定性,适合于相对稳定的网络环境。
2. 启动时间
Chrony:启动后可以立即开始同步时间,不需要等待很长时间来收敛到一个稳定的状态。
NTPd:需要一定的时间来达到最佳的同步状态,在初次启动或长时间断开后可能需要几分钟才能完全稳定下来。
3. 配置复杂度
Chrony:配置相对简单,文档清晰,易于理解和维护。
NTPd:配置较为复杂,包含较多选项,对于新手来说学习曲线较陡。
4. 功耗和资源占用
Chrony:优化了算法以减少CPU和内存的使用,因此对系统资源的影响较小。
NTPd:相对来说可能会消耗更多的系统资源,尽管这种差异在现代计算机上通常是微不足道的。
5. 安全性
Chrony:支持更严格的安全措施,如自动选择可信的时间服务器,并且可以通过加密方式进行身份验证。
NTPd:也提供了一些安全特性,但在默认配置下不如 chrony 强大。
6. 恢复能力
Chrony:具有更好的恢复机制,如果因为某些原因导致时间不同步,它可以更快地纠正错误。
NTPd:恢复速度相对较慢,特别是在大幅度的时间偏移情况下。
7. 支持的操作系统
Chrony:广泛支持各种操作系统,包括Linux、Windows等。
NTPd:也是跨平台的,但其开发和维护主要集中在Unix-like系统上。
8. 社区和支持
Chrony:拥有活跃的社区和技术支持,特别是对于较新的Linux发行版。
NTPd:历史悠久,有庞大的用户基础和丰富的文档资源,但它的发展速度已经放缓。

安装chrony

查询是否安装chrony

rpm -q chrony

 

软件并未安装

使用yum或dnf安装chrony

yum -y install chrony

 配置文件

vim /etc/chrony.conf

 看到的是pool关键字,这一行是配置chronyd守护进程连接到NTP(网络时间协议)服务器以同步时间的。

具体来说:

pool:这个关键字告诉 chronyd 使用 DNS 轮询(DNS round-robin)来从指定的域名获取多个 NTP 服务器地址,并定期尝试与这些服务器之一进行时间同步。使用池的好处是即使某些服务器不可用,也可以从其他可用的服务器获得时间更新。

iburst:这是一个选项,指示 chronyd 在初次联系新添加的 NTP 服务器时发送一系列快速请求(通常是8个)。这有助于加快初始同步的速度,在客户端与服务器之间的延迟较高或不太稳定的情况下特别有用。一旦建立了良好的时钟偏移估计值,iburst 行为就会停止。

这里使用阿里云时间同步服务器

将其修改为:

pool ntp.aliyun.com iburst

allow客户端时间同步

之后修改26allow行。

作用是允许来自指定ip地址范围的客户端与服务器进行时间同步,

(这行配置通常用于将 NTP 或 Chrony 服务器设置为一个内部网络的时间源。)

默认是192.168.0.0/16

这是一个 CIDR 表示法,指定了一个 IP 地址范围。这里它涵盖了从 192.168.0.0 到 192.168.255.255 的所有 IP 地址。这意味着该网络中的任何设备都可以向这台机器请求时间同步服务。

注意:对于 ntpd(NTP v4),你可能会看到类似的配置,但是语法略有不同。在 ntp 的配置文件 /etc/ntp.conf 中,你可以使用 restrict 指令来达到类似的效果:

restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap noquery

 将其修改为

allow 0.0.0.0/0
# 允许所有 IPv4 客户端进行时间同步
allow ::/0
# 如果你也想允许 IPv6 客户端

local stratum

 之后修改29行的local

用于指定本地时钟的分层(stratum)级别。在 NTP 协议中,时间服务器按照分层结构组织,其中:

Stratum 0:这些是参考时钟源,例如原子钟、GPS 接收器等,它们提供非常精确的时间但不直接参与 NTP 协议。
Stratum 1:连接到 Stratum 0 设备的时间服务器,被认为是最高级别的 NTP 服务器。
Stratum 2:连接到 Stratum 1 服务器的服务器。
以此类推:每个额外的层次都会增加一个 stratum 级别,直到达到 Stratum 15,这是可以同步的最高等级。

默认只需要删除前面的井号即可。

local stratum 10

 local stratum 表示开启本地时钟授时服务。之后保持退出即可。

启动chronyd服务

systemctl enable --now chronyd

开启防火墙放行ntp流量。

firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload

查看ntp服务的端口监听状态。

ss -ulwn

-u:表示仅显示UDP协议。ntp是基于UDP。

-l:表示列出监听状态的端口。

-w:表示显示端口的原数据信息。

-n:表示显示端口号,而无需将其转换为服务名称。

可以看到123端口处于监听状态,且协议为UDP协议。

使用lsof命令验证。该端口是否由chrony进行监听。lsof(list open files)

lsof -i :123

此命令是列出打开的文件。(在linux中一切皆文件,连端口都是文件。)

列出那些进行当前正在打开(监听)123端口。

可以看到123端口正在被chronyd进程打开。

使用chrony命令检测

chronyc sources

其中前的*星号表示是最近的同步源,并且已经成功同步了该时间源的时间。

202.107.6.88表示前面配置文件中指定的地址ntp.aliyun.com。

右侧的1表示该时间源处于哪一层。可用于判断该时间源的精度,层数越低,时间精度越高,也就意味着越准确。

也可以添加-v选项,显示详细信息:

客户端配置

1、安装chrony软件

yum -y install chrony
apt -y install chrony

2、编辑配置文件

vim /etc/chrony.conf
vim /etc/chrony/chrony.conf/

 只需要将pool值修改为上游的ntp时间服务器的地址即可。我这里是192.168.6.50/24

其他地方无需配置。保存退出。

3、启动chronyd服务

systemctl enable --now chronyd

4、验证时间源是否同步成功。

chronyc sources

验证时可能会出现一下信息,是由于之前的缓存没有清除。

只需要重启chronyd服务即可。

systemctl restart chronyd

5、时间同步状态

timedatectl status

可以看到,system clock synchronized :yes 、NTP service :active

NTP服务和时间同步服务。均为启动状态。

6、NTP服务器查看客户端

chronyc clients

stratum层:

在 chronyd(以及 NTP 协议)中,Stratum 层级表示时间服务器的层级结构,它用于定义时钟源与参考时钟之间的距离。Stratum 值越低,意味着该时间服务器离参考时钟越近,因此其时间越准确。

Stratum 0:这些不是真正的NTP服务器,而是指高精度的时间源,如原子钟、GPS接收器等。它们提供非常精确的时间信号,但不直接参与NTP协议通信。
Stratum 1:也称为主服务器或一级服务器,直接连接到 Stratum 0 设备。它们通过专用硬件接口获取时间,并通过网络向其他计算机提供服务。
Stratum 2:这些服务器从一个或多个 Stratum 1 服务器同步时间。由于网络延迟等因素,它们的时间准确性略低于 Stratum 1 服务器。
Stratum 3 及以上:每增加一层,就代表一次额外的网络跳跃。理论上,NTP 支持最高到 Stratum 15 的层次,但实际上很少会超过 Stratum 3 或 4,因为更多的层会导致显著的时间误差累积。

Stratum 层级的意义

可靠性:较高的 Stratum 层级意味着更多依赖于间接的时间源,从而可能导致更大的不确定性。因此,在配置 chronyd 或任何使用 NTP 协议的服务时,尽量选择较低 Stratum 层次的时间服务器是非常重要的。
负载均衡和冗余:为了保证时间和性能的质量,通常建议配置多个不同 Stratum 层级的时间服务器,以实现负载分担和故障转移。

查看 Stratum 层级

chronyc sources -v

http://www.mrgr.cn/news/82198.html

相关文章:

  • k8s基础(1)—Kubernetes-Pod
  • 排序算法介绍
  • C# 设计模式(创建型模式):建造者模式
  • Eplan 布局图中的宏/设备/安装板比例缩放
  • 【快速实践】深度学习 -- 数据曲线平滑化
  • Fabric环境部署
  • git使用指南-实践-搭建git私服
  • 数据仓库中的指标体系模型介绍
  • Frontend - 分页(针对 python / Django )
  • 用Python操作字节流中的Excel工作簿
  • SpringCloud源码分析-Ribbon与LoadBalancer
  • python实现自动登录12306抢票 -- selenium
  • Yolo11改进策略:注意力改进|Neck层改进|SCSA,探索空间与通道注意力之间的协同效应|即插即用
  • 【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误
  • 【Rust自学】9.1. 不可恢复的错误以及panic!
  • 【Rust自学】8.6. HashMap Pt.2:更新HashMap
  • 深入探讨服务器虚拟化:架构、技术与应用
  • 我们能否使用 ANSYS SPEOS 测量水质?
  • Unity3D仿星露谷物语开发14之Custom Property Attribute
  • 偏移类窗口函数—— LAG()、LEAD()用法详解
  • 【Kafka 消息队列深度解析与应用】
  • 【Rust自学】8.5. HashMap Pt.1:HashMap的定义、创建、合并与访问
  • 【分布式缓存中间件Memcached原理与应用】
  • 面试题汇总
  • GXUOJ-算法-第四次作业(圆排列、连续邮资、n皇后、符号三角形)
  • 【非关系型数据库Redis 】 入门