前言
当我们在CentOS上运行多台计算机或服务器时,确保它们的时间同步非常重要。时间同步对于网络协同工作、日志记录、安全性和许多其他关键任务都至关重要。在CentOS中,Chrony是一种常用的时间同步服务,它可以帮助你维护准确的系统时钟。
在本篇博客中,我们介绍了Chrony时间同步服务的概念以及如何在CentOS上进行配置。我们将深入探讨Chrony的工作原理、安装步骤和常见的配置选项,以确保你的系统时钟保持准确和同步。
什么是时间同步?
时间同步的概念
时间同步是确保计算机系统的时钟与一个参考时间源(通常是一个精确的全球标准时间,如协调世界时 UTC)保持一致的过程。在分布式系统、网络通信和各种计算应用中,精确的时间同步至关重要。
时间同步的作用
-
数据一致性:在数据库和分布式系统中,时间戳用于维护数据一致性和顺序。
-
日志记录:精确的时间戳对于系统和网络日志非常重要,有助于故障排查和安全审计。
-
网络安全:许多安全协议,如 Kerberos 和 TLS,依赖于精确的时间来防止重放攻击。
-
计划任务:准确的时间对于计划任务和自动化作业的准时执行非常重要。
-
文件时间戳:在文件共享和备份中,时间戳用于确定文件的最新版本。
Linux 服务器上的时间同步方法
1. NTP(网络时间协议)
- NTP 客户端:如
ntpd
或chronyd
,这些客户端可以配置为定期与 NTP 服务器同步,以保持系统时间的准确性。 - NTP 服务器:Linux 服务器可以配置为 NTP 服务器,为本地网络中的其他设备提供时间同步服务。
- 公共 NTP 服务器:例如
pool.ntp.org
,提供全球分布的服务器,用户可以免费使用。
2. 时间同步协议(PTP)
- 适用于更高精度需求:PTP(精密时间协议)在需要非常高精度时间同步的环境中使用,如金融交易和工业控制系统。
3. 手动时间同步
- 命令行工具:如
date
命令,允许管理员手动设置系统时间。虽然不精确,但适用于某些没有网络访问的环境。
4. 系统启动时的时间同步
- 硬件时钟同步:在系统启动时,Linux 可以配置为从硬件时钟(通常与 BIOS/UEFI 时间同步)读取时间。
时间同步注意事项
- 网络环境、系统类型和精确度需求会影响选择哪种时间同步方法。
- 时间同步服务在配置和维护时需要考虑网络安全性,避免潜在的时间劫持或篡改风险。
Chrony时间服务介绍
起源
Chrony 的起源可以追溯到 2002 年,由 Richard Curnow 创建和维护。Chrony 的设计目标是解决传统 NTP(Network Time Protocol)在某些方面存在的性能和精度问题。Richard Curnow 开发 Chrony 的初衷是为了提供一种更精确和更可靠的时间同步工具,特别是针对那些对时间精度要求非常高的应用和系统。
优势
-
更高的时间精度:Chrony 使用精确的时钟算法,可以实现微秒级别的时间同步,相对于传统的 NTP(Network Time Protocol)协议,提供更高的时间精度。
-
改进的时钟漂移调整:Chrony 通过使用更智能的漂移调整算法,可以更快地调整系统时钟,使其保持准确。这对于需要高度时间精度的应用程序和服务非常重要。
-
网络不稳定性的容忍性:Chrony 可以在网络不稳定或临时断开的情况下继续提供准确的时间同步。它能够适应网络延迟和抖动,以确保时间同步的稳定性。
-
容易配置和管理:Chrony 提供了简单的配置文件,使管理员能够轻松地自定义时间同步设置。它还提供了命令行工具和日志记录功能,有助于监控和管理时间同步。
-
支持多种操作系统:Chrony 可以在多种操作系统上运行,包括Linux、FreeBSD和macOS等,因此适用于各种计算机环境。
总之,Chrony 是一个高性能、稳定且易于管理的时间同步工具,适用于需要高精度时间同步的各种应用场景,特别是在科学、金融和网络领域等对时间要求严格的场合。
工作原理
-
时间测量:Chrony 定期测量系统时钟和一个或多个远程时间服务器之间的时间差。这些时间服务器通常是 NTP 服务器或其他可提供准确时间参考的时间源。
-
时钟校准:Chrony 使用测量结果来计算系统时钟的偏差(offset)和漂移(drift)。偏差表示当前系统时钟与参考时间源之间的差距,漂移表示系统时钟的变化速率。
-
自适应调整:Chrony 使用这些偏差和漂移值来自适应性地调整系统时钟。它不仅考虑当前的时间差,还考虑了时钟的漂移率,以便更精确地校准时钟。这种自适应性调整可以使系统时钟迅速趋向准确,并持续维持准确性。
-
选择最佳服务器:Chrony 能够选择最佳的时间服务器,以确保获得准确的时间参考。它根据每个服务器的测量质量和可用性进行选择,并动态地调整服务器的权重,以反映其稳定性和可靠性。
-
网络不稳定性处理:Chrony 能够处理网络不稳定性,包括延迟和抖动。它通过自适应性调整来适应这些变化,以确保时间同步的稳定性和准确性。
-
日志记录和监控:Chrony 提供了详细的日志记录功能,管理员可以使用这些日志来监视时间同步的性能和稳定性。此外,Chrony 还提供了命令行工具,以便管理员可以手动控制和配置时间同步。
Chrony的安装以及使用
安装
chrony可以直接通过yum进行安装,操作如下:
yum install -y chrony
主配置文件:/etc/chrony.conf
客户端程序:/usr/bin/chronyc
服务端程序:/usr/sbin/chronyd
配置文件的含义
# 使用 pool.ntp.org 项目的公共服务器。
# 请考虑加入这个池(http://www.pool.ntp.org/join.html)。
server 0.centos.pool.ntp.org iburst # 使用 0.centos.pool.ntp.org 作为 NTP 服务器,并启用快速初始化模式
server 1.centos.pool.ntp.org iburst # 使用 1.centos.pool.ntp.org 作为 NTP 服务器,并启用快速初始化模式
server 2.centos.pool.ntp.org iburst # 使用 2.centos.pool.ntp.org 作为 NTP 服务器,并启用快速初始化模式
server 3.centos.pool.ntp.org iburst # 使用 3.centos.pool.ntp.org 作为 NTP 服务器,并启用快速初始化模式
# 记录系统时钟的快慢变化率。
driftfile /var/lib/chrony/drift # 指定用于记录系统时钟漂移率的文件路径
# 如果系统时钟的偏移量大于1秒,则在前三次更新中允许调整系统时钟。
makestep 1.0 3 # 在前三次更新中,如果时钟偏差超过1秒,则进行调整
# 启用实时时钟(RTC)的内核同步。
rtcsync # 启用与硬件实时时钟的同步功能
# 在支持的所有接口上启用硬件时间戳。
#hwtimestamp * # 启用硬件级时间戳,如果需要可以取消注释
# 增加调整系统时钟所需的可选择源的最小数量。
#minsources 2 # 设置可选择的最小NTP源数量,如果需要可以取消注释
# 允许本地网络中的 NTP 客户端访问。
#allow 192.168.0.0/16 # 允许指定IP范围内的设备访问NTP服务,如果需要可以取消注释并调整IP范围
# 即使未与时间源同步也提供时间服务。
#local stratum 10 # 设置本地时间层级,用于在没有外部同步源时提供时间服务,如果需要可以取消注释
# 指定包含 NTP 认证密钥的文件。
#keyfile /etc/chrony.keys # 指定NTP认证密钥文件的路径,如果需要使用NTP认证功能可以取消注释
# 指定日志文件的存储目录。
logdir /var/log/chrony # 设置chrony日志文件的存储目录
# 选择要记录的信息类型。
#log measurements statistics tracking # 指定要记录的日志信息类型,如需要可以取消注释
使用Chrony同步时间(阿里云为例)
NTP服务器介绍
NTP(Network Time Protocol,网络时间协议)服务器是一种用于同步计算机和网络设备时钟的服务或设备。其主要功能是提供准确的时间信息,以确保计算机和网络设备的时钟保持同步。
常用的NTP服务器
cn.pool.ntp.org
Windows系统自带:time.windows.com和time.nist.gov
MacOS X系统自带:time.apple.com和time.asia.apple.com
cn.ntp.org.cn
阿里云NTP服务器:ntp1.aliyun.com、ntp2.aliyun.com、ntp3.aliyun.com、ntp4.aliyun.com、ntp5.aliyun.com、ntp6.aliyun.com、ntp7.aliyun.com
腾讯云NTP服务器:ntpupdate.tencentyun.com
国家授时中心服务器:210.72.145.44
清华大学NTP服务器:s1b.time.edu.cn、s1e.time.edu.cn、s2a.time.edu.cn、s2b.time.edu.cn
配置NTP服务器(以阿里云为例)
找到我们的默认配置文件
sudo vi /etc/chrony.conf
在配置文件中的server模块进行修改,并保存修改后的文件
# 注释掉以下默认的 pool.ntp.org 服务器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
# 使用阿里云的 NTP 服务器
server ntp1.aliyun.com iburst
重启 chronyd
服务以应用更改:
sudo systemctl restart chronyd
(可选)检查同步状态:
chronyc tracking
chronyc sources
注意事项
请注意,iburst
选项在初始同步时会发送快速请求,有助于加快首次同步过程。
如果你的网络环境有特殊的防火墙或安全设置,确保 UDP 端口 123 对于 ntp1.aliyun.com
是开放的,以允许 NTP 流量通过。