11.3. 使用 Chrony
以下小节介绍了如何启动和停止 chronyd,以及如何检查 chrony 是否同步。这些章节还介绍了如何手动调整系统时钟。
11.3.1. 管理 chrony 复制链接链接已复制到粘贴板!
您可以启动、停止并检查 chronyd 的状态。
chrony 在 Red Hat Enterprise Linux 被默认安装。以
root用户运行以下命令进行验证:# dnf install chronychrony 守护进程的默认位置为
/usr/sbin/chronyd。命令行工具将安装到/usr/bin/chronyc。运行以下命令检查
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要启动
chronyd,使用root用户身份运行以下命令:# systemctl start chronyd要确保
chronyd在系统启动时自动启动,以root身份运行以下命令:# systemctl enable chronyd要停止
chronyd,以root身份运行以下命令:# systemctl stop chronyd要防止
chronyd在系统启动时自动启动,以root身份运行以下命令:# systemctl disable chronyd
11.3.2. 检查是否同步 chrony 复制链接链接已复制到粘贴板!
您可以检查 chrony 是否与 跟踪、源和 sourcestats 命令的使用同步。
流程
要检查 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 : Normalchronycsources 命令显示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参数来打印更详细的信息。在这种情况下,会输出额外的标头行显示字段含义的信息。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来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。
11.3.3. 手动调整系统时钟 复制链接链接已复制到粘贴板!
您可以手动调整系统时钟。
流程
要立即调整系统时钟,绕过 slewing 的任何调整,请输入:
# chronyc makestep
如果使用了 rtcfile 指令,则不应该手动调整实时时钟。随机调整会影响 chrony 测量实时时钟漂移速率的需要。
11.3.4. 禁用 chrony 分配程序脚本 复制链接链接已复制到粘贴板!
chrony 分配程序脚本管理 NTP 服务器的在线和离线状态。作为系统管理员,您可以禁用分配程序脚本,以使 chronyd 持续轮询服务器。
NetworkManager 在接口重新配置、停止或启动操作过程中执行 chrony 分配程序脚本。但是,如果您在 NetworkManager 之外配置某些接口或路由,则您可能会遇到以下情况:
- 当没有到 NTP 服务器的路由时,分配程序脚本可能会运行,导致 NTP 服务器切换到离线状态。
- 如果您稍后建立路由,脚本默认不会再次运行,NTP 服务器保持在离线状态。
要确保 chronyd 可以与您的 NTP 服务器同步(其有单独的受管接口),请禁用分配程序脚本。
流程
要禁用
chrony分配程序脚本,请创建一个到/dev/null的符号链接:# ln -f -s /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline注意更改后,NTP 服务器始终保持在线状态。
11.3.5. 在隔离的网络中设置 chrony 复制链接链接已复制到粘贴板!
对于从未连接到互联网的网络,可以将一台计算机选为主计时服务器。其他计算机要么是服务器的直接客户端,要么是客户端的客户端。在服务器上,必须使用系统时钟的平均偏移率手动设置 drift 文件。如果服务器重启了,它将从周围的系统获取时间,并计算一个平均值来设置系统时钟。之后它会恢复基于 drift 文件的调整。当使用 settime 命令时会自动更新 drift 文件。
要在隔离的网络中为系统设置 chrony,请按照以下步骤操作:
流程
在选择成为服务器的系统上,编辑
/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)标记来指定子网。在选择为服务器直接客户端的系统上,编辑
/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> 是服务器的主机名,<server_ip_address> 是服务器 的地址。具有此配置的客户端重启后,其将与服务器重新同步。
在不是服务器直接客户端的客户端系统上,/etc/chrony.conf 文件应该是一样的,除了应该省略 local 和 allow 指令外。
在隔离的网络中,您还可以使用 local 指令来启用本地参考模式。该模式可允许 chronyd 作为 NTP 服务器实时显示同步,即使它从未同步或者最后一次更新时钟早前发生。
要允许网络中的多个服务器使用相同的本地配置并相互同步,而不让客户端轮询多个服务器,请使用 local 指令的 orphan 选项启用孤立模式。每一个服务器都需要配置为使用 local 轮询所有其他服务器。这样可确保只有最小参考 ID 的服务器具有本地参考活跃状态,其他服务器与之同步。当服务器出现故障时,另一台服务器将接管。
11.3.6. 配置远程监控访问 复制链接链接已复制到粘贴板!
chronyc 工具可以使用以下方法访问 chronyd :
- IPv4 或 IPv6。
-
域套接字,可由
root和chrony用户本地访问。
默认情况下,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。
流程
通过在
/etc/文件中添加以下内容,将 chrony 配置为侦听本地接口:chrony.confbindcmdaddress 0.0.0.0and
bindcmdaddress ::允许来自远程 IP 地址、网络和子网的命令:
在
/etc/chrony.conf文件中添加以下内容:cmdallow 192.168.1.0/24cmdallow 2001:db8::/64在防火墙中打开端口 323 以允许来自远程系统的连接:
# firewall-cmd --permanent --add-port=323/udp重新载入防火墙配置:
# firewall-cmd --reload
11.3.7. 使用 RHEL 系统角色管理时间同步 复制链接链接已复制到粘贴板!
您可以使用 timesync 角色在多个目标机器上管理时间同步。timesync 角色安装并配置 NTP 或 PTP 实现,作为 NTP 或 PTP 客户端进行操作来同步系统时钟。
timesync 角色替换了受管主机上给定或检测到的供应商服务的配置。之前的设置即使没有在角色变量中指定,也会丢失。如果没有定义 timesync_ntp_provider 变量,唯一保留的设置就是供应商选择。
以下示例演示了如何在只有一个服务器池的情况下应用 timesync 角色。
例 11.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.md 或 README.html 文件。