Red Hat Training

A Red Hat training course is available for RHEL 8

第 32 章 使用 Chrony

以下小节描述了如何安装、启动和停止 chronyd,以及如何检查是否同步了 chrony。部分还描述了如何手动调整系统时钟。

32.1. 管理 chrony

以下流程描述了如何安装、启动、停止和检查 chronyd 的状态。

流程

  1. chrony 在 Red Hat Enterprise Linux 被默认安装。要确保它,以 root 身份运行以下命令:

    # yum install chrony

    chrony 守护进程的默认位置为 /usr/sbin/chronyd。命令行工具将安装到 /usr/bin/chronyc

  2. 运行以下命令检查 chronyd 的状态:

    systemctl status chronyd
    chronyd.service - NTP client/server
       Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
       Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago
  3. 要启动 chronyd,请输入以下命令 root:

    # systemctl start chronyd

    要确保 chronyd 在系统启动时自动启动,以 root 身份运行以下命令:

    # systemctl enable chronyd
  4. 要停止 chronyd,请以 root 身份运行以下命令:

    # systemctl stop chronyd

    要防止 chronyd 在系统启动时自动启动,以 root 身份运行以下命令:

    # systemctl disable chronyd

32.2. 检查是否同步 chrony

以下流程描述了如何检查 chrony 是否与 trackingsourcessourcestats 命令的使用同步。

流程

  1. 运行以下命令检查 chrony 跟踪:

    chronyc tracking
    Reference ID    : CB00710F (foo.example.net)
    Stratum         : 3
    Ref time (UTC)  : Fri Jan 27 09:49:17 2017
    System time     :  0.000006523 seconds slow of NTP time
    Last offset     : -0.000006747 seconds
    RMS offset      : 0.000035822 seconds
    Frequency       : 3.225 ppm slow
    Residual freq   : 0.000 ppm
    Skew            : 0.129 ppm
    Root delay      : 0.013639022 seconds
    Root dispersion : 0.001100737 seconds
    Update interval : 64.2 seconds
    Leap status     : Normal
  2. source 命令显示 chronyd 访问的当前时间源的信息。运行以下命令检查 chrony 源:

    $ chronyc sources
    	210 Number of sources = 3
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    #* GPS0                          0   4   377    11   -479ns[ -621ns] /-  134ns
    ^? a.b.c                         2   6   377    23   -923us[ -924us] +/-   43ms
    ^ d.e.f                         1   6   377    21  -2629us[-2619us] +/-   86ms

    可以使用可选参数 -v 来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。

  3. sourcestats 命令显示目前被 chronyd 检查的每个源的偏移率和误差估算过程的信息。运行以下命令检查 chrony 源统计:

    chronyc sourcestats
    210 Number of sources = 1
    Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
    ===============================================================================
    abc.def.ghi                11   5   46m     -0.001      0.045      1us    25us

    可以使用可选参数 -v 来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。

其它资源

  • chronyc(1) man page

32.3. 手动调整系统时钟

以下流程描述了如何手动调整系统时钟。

流程

  1. 要立即调整系统时钟,绕过单机进行的任何调整,以 root 身份运行以下命令:

    # chronyc makestep

如果使用 rtcfile 指令,则不应该手动调整实时时钟。随机调整会影响 chrony的值,需要测量实时时钟偏移的速度。

32.4. 在隔离的网络中为系统设定 chrony

对于从来不连接到互联网的网络来说,一台计算机被选为主计时服务器。其他计算机要么是主计算机的直接客户端,要么是客户端的客户端。在 master 上,必须使用系统时钟的平均偏移率手动设置 drift 文件。如果 master 被重启,它将从周围的系统获得时间并计算设定系统时钟的平均值。之后它会恢复基于 drift 文件的调整。当使用 settime 命令时会自动更新 drift 文件。

以下流程描述了如何在隔离的网络中为系统设置 chrony

流程

  1. 在选为 master 的系统上,使用作为 root 运行的文本编辑器来编辑 /etc/chrony.conf,如下所示:

    driftfile /var/lib/chrony/drift
    commandkey 1
    keyfile /etc/chrony.keys
    initstepslew 10 client1 client3 client6
    local stratum 8
    manual
    allow 192.0.2.0

    其中 192.0.2.0 是允许客户端连接的网络或子网地址。

  2. 在选择为 master 客户端的系统上,以 root 身份运行一个文本编辑器来编辑 /etc/chrony.conf,如下所示:

    server master
    driftfile /var/lib/chrony/drift
    logdir /var/log/chrony
    log measurements statistics tracking
    keyfile /etc/chrony.keys
    commandkey 24
    local stratum 10
    initstepslew 20 master
    allow 192.0.2.123

    其中 192.0.2.123 是 master 的地址, master 是 master 的主机名。带有此配置的客户端如果重启 master 将重新同步。

在不是 master 客户端的客户端系统中, /etc/chrony.conf 文件应该是相同的,除了应该省略 localallow 指令。

在隔离的网络中,您还可以使用 local 指令来启用本地参考模式,它允许作为 NTP 服务器运行的 chronyd 实时显示同步,即使它从未同步或者最后一次更新时钟早前发生。

要允许网络中的多个服务器使用相同的本地配置并相互同步,而不让客户端轮询多个服务器,请使用 local 指令的 orphan 选项启用孤立模式。每个服务器都需要配置为使用 local 轮询所有其他服务器。这样可确保只有具有最小参考 ID 的服务器具有本地参考活跃状态,并同步其他服务器。当服务器失败时,另一个服务器会接管。

32.5. 其它资源