8. 时间同步配置
本章介绍如何在 RHEL 9 上使用 chrony 配置精确的时间同步,并完成时区的规范化设置。准确的系统时间是日志分析、TLS 证书验证、Kerberos 认证及分布式集群协调的基础,是服务器投入使用前的必检项目。
知识点:chronyd
RHEL 9 默认使用 chronyd 作为时间同步守护进程,已完全取代旧版 ntpd。chronyd 专为间歇性网络连接、虚拟机环境和快速时钟校正而设计,是当前 Red Hat 官方推荐的时间同步方案。
8.1 前提条件
- RHEL 9 已完成订阅与仓库配置(第 6、7 章)。
- 通过 SecureCRT(SSH 端口 2222)以
ops用户、密钥认证方式登录192.168.1.100,执行sudo -i切换至 root 环境。 - 网络可访问外部 NTP 服务器(或企业内网 NTP 服务器)。
8.2 检查 chronyd 服务状态
RHEL 9 安装后 chronyd 默认已启用并运行:
systemctl status chronyd
若服务未运行,启用并启动:
systemctl enable --now chronyd
检查点
systemctl is-active chronyd 返回 active。
8.3 配置 NTP 时间源
8.3.1 查看当前配置
cat /etc/chrony.conf
RHEL 9 默认配置(关键行):
pool 2.rhel.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
8.3.2 自定义时间源
根据部署环境选择合适的时间源:
vim /etc/chrony.conf
公网环境(推荐 NTP Pool):
注释或替换默认 pool 行:
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
企业内网环境(使用内部 NTP 服务器):
server ntp1.corp.example.com iburst prefer
server ntp2.corp.example.com iburst
参数说明
iburst:初始同步阶段发送连续请求包,加快首次同步速度。prefer:优先使用该时间源,其他源作为备用。pool(指令):自动从 NTP Pool DNS 解析多个服务器,比手动列出server更简洁。
修改完成后重启服务:
systemctl restart chronyd
8.4 验证时间同步状态
8.4.1 查看时间源状态
chronyc sources -v
输出状态标记含义:
| 标记 | 含义 |
|---|---|
* |
当前最优参考时间源(系统正在使用) |
+ |
备用来源(参与时间综合计算) |
- |
被排除的来源 |
? |
不可达 |
检查点
至少有一个源标记为 *,表示同步正常。
8.4.2 查看同步精度
chronyc tracking
关键字段:
| 字段 | 含义 | 健康值 |
|---|---|---|
Reference ID |
当前同步的上游来源 | 非 127.127.1.1 或空 |
System time |
本机时钟与参考源的偏差 | < 0.1 seconds |
Stratum |
时钟层级(1 = 原子钟直连) | ≤ 4 |
8.4.3 综合验证
timedatectl
检查点
输出中 NTP service: active 且 System clock synchronized: yes。
8.5 设置系统时区
8.5.1 查找时区名称
# 列出所有可用时区
timedatectl list-timezones
# 过滤亚洲时区
timedatectl list-timezones | grep Asia
8.5.2 设置时区
# 设置为中国标准时间(UTC+8)
timedatectl set-timezone Asia/Shanghai
# 验证
timedatectl
date
检查点
timedatectl 输出中 Time zone 显示 Asia/Shanghai (CST, +0800);date 输出时间与本地时间一致。
UTC vs 本地时区
多节点集群、日志聚合系统推荐统一使用 UTC 时区,避免夏令时切换导致日志时间戳重复或乱序,便于跨时区日志对比。单机实验环境按实际需要设置即可。
8.6 同步硬件时钟(RTC)
# 查看硬件时钟
hwclock -r
# 将系统时间写入硬件时钟
hwclock --systohc
# 验证
hwclock -r
虚拟机说明
VMware 虚拟机中硬件时钟由 VMware Tools(open-vm-tools)管理。确认其运行状态:
systemctl status vmtoolsd
8.7 常见问题与排查
| 问题现象 | 排查步骤 |
|---|---|
chronyc sources 所有源显示 ? |
检查网络:ping 0.pool.ntp.org;检查 DNS:dig 0.pool.ntp.org |
NTP service: inactive |
systemctl enable --now chronyd |
| 时区设置后时间仍然错误 | 确认 timedatectl 显示正确时区;执行 chronyc makestep 立即强制同步 |
| 多个 NTP 服务冲突 | 检查是否有 ntpd 与 chronyd 同时运行:systemctl list-units | grep ntp |
# 手动强制立即同步(服务运行时可用,不需要停服)
chronyc makestep
# 查看 chrony 日志
journalctl -u chronyd --since "1 hour ago"
8.8 实践任务
- 登录
linuxdc(SecureCRT 端口 2222,ops用户,密钥认证,sudo -i切换 root)。 - 检查
chronyd服务状态,确认active (running)。 - 编辑
/etc/chrony.conf,配置适合当前网络环境的 NTP 源,重启服务。 -
执行完整验证:
chronyc sources -v chronyc tracking timedatectl -
将时区设置为
Asia/Shanghai,验证date输出正确。 - 执行
hwclock --systohc同步硬件时钟。
8.9 自测问题
Q1:iburst 参数的作用是什么?
iburst 让 chronyd 在首次连接时快速发送连续数据包(而非间隔发送),显著加快初始同步速度,使服务器启动后能在数秒内完成时钟对齐,而非等待数分钟。
Q2:chronyc sources 中 * 和 + 标记分别代表什么?
* 表示当前最优参考时间源,系统时钟正在与之同步;+ 表示备用来源,参与时间综合计算但不是主源。只要有一个 * 标记,说明时间同步正常。
Q3:为什么多节点分布式系统推荐使用 UTC 时区?
UTC 无夏令时切换,不会因时钟"倒拨"导致日志记录重复;跨地域节点的日志时间戳基准统一,对比分析更直观;与大多数国际标准和云服务的默认配置保持一致,减少人为换算错误。
8.10 章节总结
本章完成了 RHEL 9 时间同步的全流程配置:chronyd 服务验证、NTP 时间源配置、同步状态验证、时区设置与硬件时钟同步。准确的时间配置是日志一致性、安全认证(TLS/Kerberos)及分布式系统协调的基础保障。