3、实战:Centos7时间服务器搭建(chrony服务方式)-2022.5.31(测试成功)
更新于:2023年12月24日0
实战:Centos7时间服务器搭建(chrony服务方式)-2022.5.31(测试成功)
目录
[toc]
写在前面
对于时间服务(ntp/chrony),都是cs架构(服务端和客户端),我们一般该如何使用呢?
- 服务端:就是提供给其它机器ntp时钟源的机器。(安装好ntp/chrony软件,配置一些必要参数,保证自己的ntp服务始终可用就好。)
- 客户端:去同步ntp server的机器。(安装好ntp/chrony软件,将ntp server ip配置进去就好。)
前言
chrony简介
Chrony是一个用于同步计算机系统时钟的软件。与使用NTP协议的其他时钟同步软件不同,Chrony可以快速同步时钟并保持更高的同步精度。
Chrony有以下几个特性:
- 它与网络状态的变化的影响较小,即它能够在网络不稳定、网络延迟较高的情况下保证时钟同步的精度;
- 它在计算机重启后的时钟同步速度也较快;
- 它能通过调整本地时钟频率来保持时钟精度。
Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。它由两个程序组成:chronyd和chronyc。
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
配置文件:Chrony启动时,它会读取/etc/chrony.conf
配置文件中的设置。
理解时间源的层数
时间源的层数(stratum)代表该时间源与本地时钟的距离。stratum=0代表 本地时钟,stratum=1代表直接与本地时钟相连的时间源,stratum=2代表通过一级时间源与本地时钟相连的时间源,以此类推。stratum通常取值范围为0~16。
在chronyc sources -v命令输出的信息中,我们可以看到每个时间源的stratum。之所以强调时间源的层数,是因为它对时间同步的准确性有非常重要的影响。若时间源与本地时钟之间的距离太远,则同步时间的精度会受到严重的影响,并可能出现不可预期的错误。
例如,如果一个时间源的stratum=16,那么该时间源与原子钟的时间差可能会超过一天,因此在实际应用中是不合适的。
在选择时间源时,我们应该优先选择低层数的时间源,并加入多个低层数的时间源以提高同步时间的精度和可靠性。
深入理解时间同步的过程
在用chronyc sources -v命令检查时间源时,我们需要深入了解时间同步的过程。关于如何同步时间,传统的NTP协议在这里不再详述,读者可以自行学习。在这里,我们介绍chrony这个现代化的时钟同步协议的时间同步过程。
时间同步的过程是一个动态的过程,系统会不断地根据各个时间源的情况调整自己的本地时钟。在初始化时,chronyd程序默认使用本地的硬件时钟来计算时间,该本地时钟通常是Linux系统的kernal时钟。在chronyd启动后,它会首先尝试与各个时间源建立连接,然后从中选择出多个可用的时间源。
chrony会尝试通过NTPv4
或使用chrony自己的简化版协议进行通讯,通讯频率由各个时间源的poll参数决定。系统会定时地向时间源发送数据包,时间源会对这些数据包进行响应,并包含自己当前的时差信息。chrony通过分析各个时间源提供的时差信息,计算出当前系统的整体时差,并使用一种叫做时滑动平均的算法不断地更新本地时钟。时滑动平均算法可以提高同步时间的精度和可靠性。
需要注意的是,时间同步的过程是双向的,不仅是系统向时间源发送数据包,时间源也会向系统发送数据。时间源可以检测到本地的时钟偏差,并根据系统的情况调整自己的时钟。因此,只要我们选择的时间源足够靠谱,那么系统的时间同步的精度和准确性是有很大保证的。
1、Chrony的安装
以下示例将以CentOS系统为例,介绍如何安装Chrony。
1.安装软件
yum install chrony –y #安装chrony
2.启动服务并设置开机启动
systemctl enable chronyd --now #启动服务并设置开机启动
systemctl status chronyd #查看chronyd服务状态
- 其它
systemctl start chronyd.service #启动Chrony服务
systemctl restart chronyd.service #重启Chrony服务
systemctl stop chronyd.service #停止Chrony服务
systemctl status chronyd.service #查看Chrony服务状态
2、Chrony的配置
Chrony的配置文件为/etc/chrony.conf
。以下示例列出了几个常见的配置选项。
通过添加参考服务器源,Chrony会从这些源中同步时钟。以下示例添加了一些NTP服务器源。
server time1.aliyun.com iburst
server time2.aliyun.com iburst
server ntp1.aliyun.com iburst
2、本地时钟频率注意:这里可以天服务器ip,也可以填其域名;
Chrony可以调整本地时钟频率来保持时钟精度。以下示例设置了每天对本地时钟频率进行一次微调。
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
3、其它配置(可选)
除了上述选项之外,还有许多其他的Chrony配置选项,可以根据需要进行设置。
例如,allow选项用于指定可以访 问Chrony服务的网络地址。
3、Chrony的查看
在CentOS系统下使用Chrony可以通过命令行和图形界面两种方式。
1、命令行操作以下是一些运行Chrony服务的常用命令。
systemctl status chronyd #查看Chrony服务状态
chronyc sources
或者
chronyc sources -v #列出已连接的时间源的基本信息,与chronyc sources -v命令类似,区别在于输出信息更为简洁。
chronyc tracking #查看Chrony当前时间状态
- 案例
[root@hg-linux-test ~]# chronyc sources
210 Number of sources = 14
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 120.25.115.20 2 10 302 43m -1136us[-1179us] +/- 16ms
^? 10.143.33.49 0 10 0 - +0ns[ +0ns] +/- 0ns
^+ 100.100.3.1 2 10 377 199 +207us[ +207us] +/- 2780us
^* 100.100.3.2 2 10 377 840 +17us[ +23us] +/- 2939us
^+ 100.100.3.3 2 10 77 30m +98us[ +104us] +/- 2868us
^- 203.107.6.88 2 10 377 387 -2217us[-2217us] +/- 18ms
^? 10.143.33.50 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.33.51 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.44 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.45 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.46 0 10 0 - +0ns[ +0ns] +/- 0ns
^+ 100.100.5.1 2 10 377 849 +142us[ +148us] +/- 3269us
^+ 100.100.5.2 2 10 3 24m -4982ns[ +940ns] +/- 3210us
^+ 100.100.5.3 2 10 377 361 -238us[ -238us] +/- 3333us
[root@hg-linux-test ~]#
[root@hg-linux-test ~]# chronyc sources -v
210 Number of sources = 14
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 120.25.115.20 2 10 302 42m -1136us[-1179us] +/- 16ms
^? 10.143.33.49 0 10 0 - +0ns[ +0ns] +/- 0ns
^+ 100.100.3.1 2 10 377 183 +207us[ +207us] +/- 2780us
^* 100.100.3.2 2 10 377 824 +17us[ +23us] +/- 2939us
^+ 100.100.3.3 2 10 77 30m +98us[ +104us] +/- 2868us
^- 203.107.6.88 2 10 377 371 -2217us[-2217us] +/- 18ms
^? 10.143.33.50 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.33.51 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.44 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.45 0 10 0 - +0ns[ +0ns] +/- 0ns
^? 10.143.0.46 0 10 0 - +0ns[ +0ns] +/- 0ns
^+ 100.100.5.1 2 10 377 833 +142us[ +148us] +/- 3269us
^+ 100.100.5.2 2 10 3 24m -4982ns[ +940ns] +/- 3210us
^+ 100.100.5.3 2 10 377 345 -238us[ -238us] +/- 3333us
[root@hg-linux-test ~]#
[root@hg-linux-test ~]# chronyc tracking
Reference ID : 64640302 (100.100.3.2)
Stratum : 3
Ref time (UTC) : Mon Dec 18 10:04:33 2023
System time : 0.000039729 seconds slow of NTP time
Last offset : +0.000005916 seconds
RMS offset : 0.000016057 seconds
Frequency : 39.143 ppm slow
Residual freq : -0.000 ppm
Skew : 0.001 ppm
Root delay : 0.002904563 seconds
Root dispersion : 0.002001731 seconds
Update interval : 1043.6 seconds
Leap status : Normal
[root@hg-linux-test ~]#
在CentOS系统下可以通过Chrony Launcher、Time and Date等图形界面工具来管理Chrony的配置和状态。
- chronyc sources -v详细含义
sources -v命令是chronyc命令的一个子命令,可以列出已连接的时间源的详细信息。
它的基本用法如下:
chronyc sources -v
执行该命令后,会输出以下列格式显示系统当前可用的时间源详细信息:
210 Number of sources = 3
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ 192.168.1.2 2 6 377 34 -2913us[-3812us] +/- 28ms
^* 10.0.0.2 3 6 377 19 -189us[ -99us] +/- 33ms
^- 210.72.145.44 2 8 117 44 +650us[ +748us] +/- 62ms
* 符号就代表客户端已经正常与时间服务器进行时间同步。
该输出包含以下几个基本字段:
- Name/IP address:时间源的名称或IP地址
- Stratum:时间源的层数
- Poll:系统与该时间源通信的频率,单位为秒
- Reach:表示过去的8个轮询周期内,有多少个包成功到达时间源(最大值为377)
- LastRx:最后一次收到时间源的包时的时间戳
- Last sample:最后一次收到时间源的时差信息,包括时间偏差、精度和估计的误差等信息
常见的chronyc命令
chronyc tracking
:查询当前时间同步的状态信息,包括当前的整体时差和时钟精度等信息。chronyc makestep
:强制系统立即进行时间同步,通常用于系统时间差距过大时的紧急修复。chronyc waitsync
:等待系统与各个时间源同步,以确保当前的时间同步状态是最优的。chronyc sources
:列出已连接的时间源的基本信息,与chronyc sources -v命令类似,区别在于输出信息更为简洁。