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