ITPub博客

首页 > 数据库 > 数据库开发技术 > 精准驾驭时间:Linux Chrony时钟同步服务器实战指南

精准驾驭时间:Linux Chrony时钟同步服务器实战指南

原创 数据库开发技术 作者:shuchaoyang 时间:2024-09-04 06:28:00 0 删除 编辑

精准驾驭时间: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 查看当前的同步状态和轮询间隔

精准驾驭时间:Linux Chrony时钟同步服务器实战指南

一、Chrony简介

Chrony是一个开源和免费的NTP服务程序,是Linux系统的一个时间同步软件。它提供了精确的时钟同步和时钟校准功能,可以保证各种应用程序在不同的服务器上同步时钟,并确保高精度时间同步。它还可以自动调整时钟,以避免计算机的时钟漂移,并减少时钟误差,使系统响应更快。像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势。其用法也很简单。

Chrony程序的特点之一是具有高稳定性和可靠性。它可以在不可信任的网络和不同环境下正确运行,并保持准确性。它还支持GMT、UTC和本地时间等不同的时间格式,可以适应各种应用程序的要求。 Chrony程序也具有高可扩展性。它可以管理成千上万个计算机,同时还可以监视网络连接的质量,并及时调整时钟频率,以确保精度。

Chrony有两个核心组件,分别是:

  • Chronyd

是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。

  • Chronyc

提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

二、环境说明

三、Chrony配置

3.1 服务端配置

3.1.1 服务端安装Chrony

Centos 7 系列系统已经默认安装,如果没有安装,可使用以下命令进行安装!

# yum install chrony -y
3.1.2 编辑Chrony配置文件
# 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

表示如果本机同步不了指定的时间服务器,依然对外提供时间同步服务(允许客户端同步)。

3.1.3 重新启动Chrony服务
# systemctl restart chronyd.service
3.1.4 查看Chrony服务状态
# systemctl status chronyd.service
3.1.5 查看Chrony服务是否开机启动
# systemctl list-unit-files |grep chronyd.service
3.1.6 设置Chrony服务开机启动

如果Chrony服务不是开机自动启,执行以下命令设置开机启动。

# systemctl enable chronyd.service

3.2 客户端配置

3.2.1 服务端安装Chrony

Centos 7 系列系统已经默认安装,如果没有安装,可使用以下命令进行安装!

# yum install chrony -y
3.2.2 编辑Chrony配置文件
# 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 个更新中来进行调整。

3.2.3 重新启动Chrony服务
# systemctl restart chronyd.service
3.2.4 查看Chrony服务状态
# systemctl status chronyd.service
3.2.5 查看Chrony服务是否开机启动
# systemctl list-unit-files |grep chronyd.service
3.1.6 设置Chrony服务开机启动

如果Chrony服务不是开机自动启,执行一下命令设置开机启动。

# systemctl enable chronyd.service

四、Chrony的使用

4.1 查看时间同步生效情况

查看时间同步生效情况,-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(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。

    4.2 查看服务状态

    查看服务状态,-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:标准偏差。

    4.3 查看服务器是否在线

    # 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 ~]#

    4.4 查看当前的同步状态和轮询间隔

    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私房菜;如有侵权,请联系管理员删除。

    请登录后发表评论 登录
    全部评论
    专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

    注册时间:2021-08-27

    • 博文量
      552
    • 访问量
      303473