精准驾驭时间:Linux Chrony时钟同步服务器实战指南一、Chrony简介二、环境说明三、Chrony配置3.1 服务端配置3.1.1 服务端安装Chrony3.1.2 编辑Chrony配置文件3.1.3 重新启动Chrony服务3.1.4 查看Chrony服务状态3.1.5 查看Chrony服务是否开机启动3.1.6 设置Chrony服务开机启动3.2 客户端配置3.2.1 服务端安装Chrony3.2.2 编辑Chrony配置文件3.2.3 重新启动Chrony服务3.2.4 查看Chrony服务状态3.2.5 查看Chrony服务是否开机启动3.1.6 设置Chrony服务开机启动四、Chrony的使用 4.1 查看时间同步生效情况4.2 查看服务状态4.3 查看服务器是否在线4.4 查看当前的同步状态和轮询间隔
Chrony是一个开源和免费的NTP服务程序,是Linux系统的一个时间同步软件。它提供了精确的时钟同步和时钟校准功能,可以保证各种应用程序在不同的服务器上同步时钟,并确保高精度时间同步。它还可以自动调整时钟,以避免计算机的时钟漂移,并减少时钟误差,使系统响应更快。像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单。
Chrony程序的特点之一是具有高稳定性和可靠性。它可以在不可信任的网络和不同环境下正确运行,并保持准确性。它还支持GMT、UTC和本地时间等不同的时间格式,可以适应各种应用程序的要求。 Chrony程序也具有高可扩展性。它可以管理成千上万个计算机,同时还可以监视网络连接的质量,并及时调整时钟频率,以确保精度。
Chrony有两个核心组件,分别是:
Chronyd
是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
Chronyc
提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
Centos 7 系列系统已经默认安装,如果没有安装,可使用以下命令进行安装!
# yum install chrony -y
# vi /etc/chrony.conf
添加或修改 NTP 服务器配置。可以添加多个 NTP 服务器地址,这样在某个服务器不可用时可以使用其他的服务器。
server 192.168.0.122 iburst
makestep 1.0 3
allow 192.168.0.0/24
local stratum 10
server
指定 NTP 服务器的 IP 地址,chrony 将会从该服务器获取时间同步信息。这里就配置本机自己,即自己同步自己,因为有可能该时间同步服务器是在内网连不了公网。
iburst
快速初始突发模式(initial burst mode)。当 chrony 启动或在与服务器失去连接后重新连接时,它会发送一组快速的 NTP 请求(通常是四个请求),以便尽快获得时间同步。这有助于加速首次同步的过程,使系统能够更快地调整到正确的时间。
makestep
如果时间偏移超过 1 秒,则允许系统时钟在前 3 个更新中来进行调整。
allow
如果想要让局域网内的其他主机同步本机的时间,则这个选项需要配置,这里填写自己的实际网络。
local startum
表示如果本机同步不了指定的时间服务器,依然对外提供时间同步服务(允许客户端同步)。
# systemctl restart chronyd.service
# systemctl status chronyd.service
# systemctl list-unit-files |grep chronyd.service
如果Chrony服务不是开机自动启,执行以下命令设置开机启动。
# systemctl enable chronyd.service
Centos 7 系列系统已经默认安装,如果没有安装,可使用以下命令进行安装!
# yum install chrony -y
# vi /etc/chrony.conf
添加或修改 NTP 服务器配置。可以添加多个 NTP 服务器地址,这样在某个服务器不可用时可以使用其他的服务器。
server 192.168.0.122 iburst
initstepslew 3 192.168.0.122
makestep 1.0 3
#rtcsync
log measurements statistics tracking rtc
server
指定 NTP 服务器的 IP 地址,chrony 将会从该服务器获取时间同步信息。
iburst
快速初始突发模式(initial burst mode)。当 chrony 启动或在与服务器失去连接后重新连接时,它会发送一组快速的 NTP 请求(通常是四个请求),以便尽快获得时间同步。这有助于加速首次同步的过程,使系统能够更快地调整到正确的时间。
initstepslew
在启动时强制进行时间同步,允许在启动时最多进行 3 次大的时间调整(step correction),如果系统时间与 NTP 服务器的时间差异太大(通常超过 1 秒)。chrony 会使用 NTP 服务器进行这些调整。
makestep
如果时间偏移超过 1 秒,则允许系统时钟在前 3 个更新中来进行调整。
# systemctl restart chronyd.service
# systemctl status chronyd.service
# systemctl list-unit-files |grep chronyd.service
如果Chrony服务不是开机自动启,执行一下命令设置开机启动。
# systemctl enable chronyd.service
查看时间同步生效情况,-v可以生成详细符号解释便于判断。
# chronyc sources -v
示例:
[root@superman123 ~]# chronyc sources -v
210 Number of sources = 1
.-- 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
===============================================================================
^* bogon 11 6 17 63 +486ns[ -47us] +/- 284us
[root@superman123 ~]#
M: 表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。
S:指源的状态:
~表示时间似乎具有太多可变性。
x表示chronyd认为时虚假行情的时钟,即标记该时间与其他多数时间不一致。
?指已失去连接性或者其数据包未通过所有测试的源。
-表示被合并算法排除的可接受源。
*表示chronyd当前已经同步到的源。
+表示可接受的信号源,与选定的信号源组合在一起。
Name/IP address:显示源的名称或IP地址,或参考时钟的参考ID。
Stratum:显示时间来源的层,如其最近收到的样本中所报告。层1表示一台具有本地连接的参考时钟的计算机,与第1层计算机同步的计算机位于第2层,与第2层计算机同步的计算机位于第3层,依此类推。
Poll:显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。
Reach:显示源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。
LastRx:显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。
Last sample:此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。
查看服务状态,-v可以生成详细符号解释便于判断
# chronyc sourcestats -v
示例:
[root@superman123 ~]# chronyc sourcestats -v
210 Number of sources = 1
.- Number of sample points in measurement set.
/ .- Number of residual runs with same sign.
| / .- Length of measurement set (time).
| | / .- Est. clock freq error (ppm).
| | | / .- Est. error in freq.
| | | | / .- Est. offset.
| | | | | | On the -.
| | | | | | samples. \
| | | | | | |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
bogon 7 5 201 +0.233 3.336 +14us 86us
[root@superman123 ~]#
NP:测量集中的采样点数。
NR:具有相同符号的残差运行数。
Span:测量集的长度(时间)。
Frequency:估计时钟频率误差 (ppm)。
Freq Skew:频率错误估计。
Offset:估计偏移量。
Std Dev:标准偏差。
# chronyc activity
示例:
[root@superman123 ~]# chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
[root@superman123 ~]#
chronyc tracking 显示系统的同步状态和当前的轮询间隔。
# chronyc tracking
示例:
[root@superman123 ~]# chronyc tracking
Reference ID : C0A8007A (bogon)
Stratum : 12
Ref time (UTC) : Tue Sep 03 13:23:24 2024
System time : 0.000022527 seconds slow of NTP time
Last offset : -0.000060107 seconds
RMS offset : 0.000055782 seconds
Frequency : 11.921 ppm slow
Residual freq : -0.007 ppm
Skew : 1.671 ppm
Root delay : 0.000282425 seconds
Root dispersion : 0.000703263 seconds
Update interval : 64.4 seconds
Leap status : Normal
[root@superman123 ~]#
Reference ID:这是远程NTP服务器的标识符,用于标识系统正在同步的远程时钟源。
Stratum:表示系统的NTP层次,即系统在NTP网络中的位置。层级为0表示本地时钟,层级为1表示直接连接到本地时钟的时钟,以此类推。较低的Stratum值通常意味着更高的同步质量。
Ref time (UTC):显示的是参考时间,即NTP服务器的时间。
System time:表示系统时间相对于NTP时间的偏移量。如果系统时间与NTP时间的差异接近于0,且显示“Leap status: Normal”,则同步状态可以认为是正常的。
Last offset:上一次同步时的偏移量,可以反映系统时间与NTP时间在最近一次同步时的差异。
RMS offset:均方根偏移量,表示系统时间与NTP时间的偏差程度,较低的值表示更好的同步质量。
Frequency:系统时钟的频率相对于NTP时钟的频率,可以反映系统的速度是否与参考时钟保持一致。
Residual freq:剩余频率偏差,表示系统时钟与参考时钟之间的剩余频率差异。
Skew:时序偏斜,表示系统时钟与参考时钟之间的时间偏差。
Root delay:从NTP服务器到本地时钟的延迟时间,反映了数据包从服务器到本地系统的传播时间。
Root dispersion:NTP服务器的分散度,表示服务器时间的变动范围,较低的值表示服务器时间的稳定性较高。
Update interval:更新间隔,表示系统与NTP服务器进行下一次更新的预计时间间隔。
Leap status:表示是否处于闰秒调整状态,正常状态表示系统没有进行或即将进行闰秒调整。
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!

原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。