14.4. 使用 Chrony


以下小节介绍了如何启动和停止 chronyd,以及如何检查 chrony 是否同步。这些章节还介绍了如何手动调整系统时钟。

14.4.1. 管理 chrony

您可以启动、停止并检查 chronyd 的状态。

  1. 默认在 Red Hat Enterprise Linux 上安装 chrony 套件。以 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

14.4.2. 检查是否同步 chrony

您可以检查 chrony 是否与 跟踪源和 sourcestats 命令的使用同步。

流程

  1. 要检查 chrony 跟踪,请输入:

    $  chronyc tracking
    Reference ID    : CB00710F (ntp-server.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. chronyc sources 命令显示 chronyd 正在访问的当前时间源的信息。

    $ 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) 手册页

14.4.3. 手动调整系统时钟

您可以手动调整系统时钟。

流程

  • 要立即调整系统时钟,绕过 slewing 的任何调整,请输入:

    # chronyc makestep
重要

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

14.4.4. 禁用 chrony 分配程序脚本

chrony 分配程序脚本管理 NTP 服务器的在线和离线状态。作为系统管理员,您可以禁用分配程序脚本,以使 chronyd 持续轮询服务器。

NetworkManager 在接口重新配置、停止或启动操作过程中执行 chrony 分配程序脚本。但是,如果您在 NetworkManager 之外配置某些接口或路由,您可能会遇到以下情况:

  1. 当没有到 NTP 服务器的路由存在时,分配程序脚本可能会运行,从而导致 NTP 服务器切换到离线状态。
  2. 如果您稍后建立路由,脚本默认不会再次运行,NTP 服务器保持在离线状态。

要确保 chronyd 可以与您的 NTP 服务器同步(后者有单独的受管接口),请禁用分配程序脚本。

流程

  • 要禁用 chrony 分配程序脚本,请编辑 /etc/NetworkManager/dispatcher.d/20-chrony-onoffline 文件,如下所示:

    #!/bin/sh
    exit 0
    注意

    当您升级或重新安装 chrony 软件包时,分配程序脚本的打包版本会替换您修改的分配程序脚本。

14.4.5. 在隔离的网络中设置 chrony

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

要在隔离的网络中为系统设置 chrony,请按照以下步骤操作:

流程

  1. 在选择成为服务器的系统上,编辑 /etc/chrony.conf,如下所示:

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

    其中 & lt;subnet > 是允许客户端连接的网络。使用无类别域间路由(CIDR)标记来指定子网。

  2. 在选择为服务器直接客户端的系统上,编辑 /etc/chrony.conf,如下所示:

    server <server_fqdn>
    driftfile /var/lib/chrony/drift
    logdir /var/log/chrony
    log measurements statistics tracking
    keyfile /etc/chrony.keys
    commandkey 24
    local stratum 10
    initstepslew 20 ntp1.example.net
    allow <server_ip_address>

    其中 <server_fqdn > 是服务器的主机名,& lt;server_ip_address > 是服务器 的地址。带有此配置的客户端如果服务器重启,则与服务器重新同步。

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

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

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

14.4.6. 配置远程监控访问

chronyc 工具可以使用以下方法访问 chronyd

  • IPv4 或 IPv6。
  • 域套接字,可由 rootchrony 用户本地访问。

默认情况下,chronyc 连接到 Unix 域套接字。默认路径为 /var/run/chrony/chronyd.sock。如果这个连接失败,chronyc 会尝试连接到 127.0.0.1,然后 ::1。

网络中只允许以下监控命令,它们不会影响 chronyd 的行为:

  • activity
  • manual list
  • rtcdata
  • smoothing
  • sources
  • sourcestats
  • tracking
  • waitsync

chronyd 接受这些命令的主机集合可以使用以下方法配置:

  • 您可以在 chronyd 的配置文件中使用 cmdallow 指令。
  • chronyc 中运行 cmdallow 命令。

默认情况下,仅接受来自 localhost(127.0.0.1 或 ::1)的命令。

所有其他命令只能通过 Unix 域套接字进行。当通过网络发送时,chronyd 会返回 Notauthorized 错误,即使它来自 localhost。

以下流程描述了如何使用 chronyc 远程访问 chronyd。

流程

  1. 通过在 /etc/ chrony.conf 文件中添加以下内容,将 chrony 配置为侦听本地接口:

    bindcmdaddress 0.0.0.0

    and

    bindcmdaddress ::
  2. 允许来自远程 IP 地址、网络和子网的命令:

    /etc/chrony.conf 文件中添加以下内容:

    cmdallow 192.168.1.0/24
    cmdallow 2001:db8::/64
  3. 在防火墙中打开端口 323 以允许来自远程系统的连接:

    # firewall-cmd --permanent --add-port=323/udp
  4. 重新载入防火墙配置:

    # firewall-cmd --reload

其他资源

  • 系统中 chrony.conf (5) 手册页

14.4.7. 使用 RHEL 系统角色管理时间同步

您可以使用 timesync 角色在多个目标机器上管理时间同步。timesync 角色安装和配置 NTP 或 PTP 实现,作为 NTP 或 PTP 客户端来同步系统时钟。

请注意,使用 timesync 角色还有助于 迁移到 chrony,因为您可以在从 RHEL 6 开始的所有 Red Hat Enterprise Linux 版本上使用相同的 playbook,无论系统是否使用 ntpchrony 来实现 NTP 协议。

警告

timesync 角色替换了受管主机上给定或检测到的供应商服务的配置。之前的设置即使没有在角色变量中指定,也会丢失。如果没有定义 timesync_ntp_provider 变量,唯一保留的设置就是供应商选择。

以下示例演示了如何在只有一个服务器池的情况下应用 timesync 角色。

例 14.1. 为单一服务器池应用 timesync 角色的 playbook 示例

---
- hosts: timesync-test
  vars:
    timesync_ntp_servers:
      - hostname: 2.rhel.pool.ntp.org
        pool: yes
        iburst: yes
  roles:
    - rhel-system-roles.timesync

有关 timesync 角色变量的详细参考,请安装 rhel-system-roles 软件包,并参阅 /usr/share/doc/rhel-system-roles/timesync 目录中的 README.mdREADME.html 文件。

14.4.8. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.