Chrony 配置时间同步
I. 时区
1.1 时区概念
📌 GMT、UTC、CST、DST
1、GMT (Greenwich Mean Time)
格林尼治标准时间,基于英国伦敦郊区格林尼治天文台的平均太阳时间,是世界协调时间的基础。GMT没有夏令时(DST)的调整,在航海、航空等领域广泛使用。2、UTC (Coordinated Universal Time)
协调世界时,是目前全球使用的主要时间标准,几乎取代了 GMT。UTC 与 GMT 基本相同,但 UTC 更为精确,因为它结合了原子钟时间(TAI)和地球自转时间(UT1)。UTC 也不会因夏令时而调整。3、CST (China Standard Time)
中国标准时间,也是北京时间(BJT),UTC+8,指的是中国大陆、香港、澳门、台湾所使用的标准时间。CST 也可以指 Central Standard Time(中部标准时间) ,通常用于北美洲,在标准时间下是 UTC-6。4、DST (Daylight Saving Time)
夏令时,是一种在夏季调整时间的制度,通常将时钟拨快一小时,以充分利用自然光线。 DST 主要在夏季实施,在大部分实施地区,冬季时钟会拨回到标准时间。各国对夏令时的使用有不同的规定,某些地区全年不采用夏令时。
1.2 时区设置
1、查看当前时区
|
|
ℹ️ 列出时区:
timedatectl list-timezones
2、设置时区:
- 亚洲/上海
|
|
ℹ️ 其它时区:
- 亚洲/东京
timedatectl set-timezone Asia/Tokyo
- 美国/洛杉矶
timedatectl set-timezone America/Los_Angeles
- 美国/纽约
timedatectl set-timezone America/New_York
II. Chrony
2.1 chrony 介绍
chrony 包括 chronyd
(一个在用户空间运行的守护进程)和 chronyc
(可用来监控 chronyd 性能并在运行时更改各种操作参数的命令行程序)。
chrony 守护进程(chronyd
) 可以由命令行工具 chronyc
监控和控制。这个工具提供了一个命令提示,允许输入大量命令来查询 chronyd
的当前状态并修改其配置。在默认情况下,chronyd
只接受来自本地 chronyc 实例的命令,但它也可以被配置为接受来自远程主机的监控命令。应该限制远程访问。
2.2 管理 chrony
1、chrony 在 Red Hat Enterprise Linux 被默认安装。以 root
用户运行以下命令进行验证:
|
|
📌 安装位置:
chrony 守护进程的默认位置为/usr/sbin/chronyd
。命令行工具将安装到/usr/bin/chronyc
。
2、运行以下命令检查 chronyd
的状态:
|
|
3、要启动 chronyd
,使用 root
用户身份运行以下命令:
|
|
要确保 chronyd
在系统启动时自动启动,以 root
身份运行以下命令:
|
|
💡 专业提示:
要设置开机启动并同时启动chronyd
,可以使用命令:systemctl enable chronyd --now
4、要停止 chronyd
,以 root
身份运行以下命令:
|
|
要防止 chronyd
在系统启动时自动启动,以 root
身份运行以下命令:
|
|
2.3 检查是否同步 chrony
1、运行以下命令检查 chrony 跟踪:
|
|
2、sources
命令显示 chronyd
正在访问的当前时间源的信息。要检查 chrony 源,请运行以下命令:
|
|
您可以指定可选的 -v
参数来打印更详细的信息。在这种情况下,会输出额外的标头行显示字段含义的信息。
3、sourcestats
命令显示目前被 chronyd
检查的每个源的偏移率和误差估算过程的信息。要检查 chrony 源的统计信息,请运行以下命令:
|
|
2.4 手动调整系统时钟
要立即调整系统时钟,绕过单机进行的任何调整,以 root
身份运行以下命令:
|
|
如果使用了 rtcfile
指令,则不应该手动调整实时时钟。随机调整会影响 chrony 测量实时时钟漂移速率的需要。
2.5 禁用 chrony 分配程序的脚本
⭐ 为何要禁用?
chrony 分配程序脚本管理 NTP 服务器的在线和离线状态。作为系统管理员,您可以禁用分配程序脚本,以使chronyd
持续轮询服务器。如果在系统上启用了 NetworkManager 来管理网络配置,NetworkManager 会在接口重新配置过程中执行 chrony 分配程序脚本,停止或启动操作。但是,如果您在 NetworkManager 之外配置某些接口或路由,则您可能会遇到以下情况:
- 当没有到 NTP 服务器的路由时,分配程序脚本可能会运行,导致 NTP 服务器切换到离线状态。
- 如果您稍后建立路由,脚本默认不会再次运行,NTP 服务器保持在离线状态。
要确保 chronyd 可以与您的 NTP 服务器同步(其有单独的受管接口),请禁用分配程序脚本。
要禁用 chrony 分配程序脚本,请创建一个到 /dev/null
的符号链接:
|
|
2.6 在隔离的网络中为系统设定 chrony
📌 场景说明:
对于从未连接到互联网的网络,可以将一台计算机选为主计时服务器。其他计算机要么是服务器的直接客户端,要么是客户端的客户端。在服务器上,必须使用系统时钟的平均偏移率手动设置 drift 文件。如果服务器重启了,它将从周围的系统获取时间,并计算一个平均值来设置系统时钟。之后它会恢复基于 drift 文件的调整。当使用settime
命令时会自动更新 drift 文件。
以下流程描述了如何为隔离网络中的系统设置 chrony。
1、在被选择为服务器的系统上,以 root
用户身份运行一个文本编辑器,编辑 /etc/chrony.conf
,如下所示:
其中 192.0.2.0/24 是允许连接客户端的网络或子网地址。详情请查看 chrony.conf(7) 手册页
2、在被选择为客户端的系统上,以 root
用户身份运行一个文本编辑器,编辑 /etc/chrony.conf
,如下所示:
其中 192.0.2.123
是服务器的地址,ntp1.example.net
是服务器的主机名。具有此配置的客户端重启后,其将与服务器重新同步。
在不是服务器直接客户端的客户端系统上,/etc/chrony.conf
文件应该是一样的,除了应该省略 local
和 allow
指令外。
📖 更多…
在隔离的网络中,您还可以使用local
指令来启用本地参考模式。该模式可允许chronyd
作为 NTP 服务器实时显示同步,即使它从未同步或者最后一次更新时钟早前发生。要允许网络中的多个服务器使用相同的本地配置并相互同步,而不让客户端轮询多个服务器,请使用
local
指令的orphan
选项启用孤立模式。每一个服务器都需要配置为使用 local 轮询所有其他服务器。这样可确保只有最小参考 ID 的服务器具有本地参考活跃状态,其他服务器与之同步。当服务器出现故障时,另一台服务器将接管。
2.7 公共 NTP 服务
阿里云、腾讯云公共 NTP 服务器:
III. 参考文档
Red Hat Enterprise Linux 8: 第 15 章 配置时间同步
阿里云 NTP 服务: 阿里云 NTP 服务器
腾讯云 NTP 服务: 腾讯云 NTP 服务器