翼度科技»论坛 云主机 服务器技术 查看内容

Linux(CentOS)​​同步服务器chrony的安装配置和常用命令

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
  1. Chrony
复制代码
是一款开源的网络时间协议(NTP)客户端和服务端软件,旨在提供高精度的时间同步功能。相较于传统的
  1. NTP
复制代码
实现如
  1. ntpd
复制代码
  1. Chrony
复制代码
提供了一些改进和优势,包括更快的同步速度、低延迟、低CPU占用和低内存消耗。以下是
  1. Chrony
复制代码
的几个关键特性和使用场景:

Chrony的组成


    1. <strong>chronyd</strong>
    复制代码
    :这是一个后台守护进程,负责与时间服务器通信,根据网络条件和系统时钟特性动态调整内核中的系统时钟,以最小化时间和频率误差。它能够智能地应对网络延迟、间歇性连接、时钟漂移以及虚拟环境中的不稳定性。
    1. <strong>chronyc</strong>
    复制代码
    :这是一个命令行工具,为用户提供了一个界面来监控
    1. Chrony
    复制代码
    的性能、查看同步状态、调整配置参数以及手动执行某些操作,如立即同步或查看时间源的状态。

Chrony的特点:


  • 快速同步
    1. Chrony
    复制代码
    使用特殊算法能快速减少系统时钟的偏移和频率误差,非常适合那些非24小时运行的系统,如虚拟机。
  • 频率调整:能够更有效地应对时钟频率的快速变化,适合于拥有不稳定时钟的虚拟环境或受节能技术影响的系统。
  • 节能技术兼容性:即使在节能技术导致CPU频率变化的系统中也能保持良好的时间同步。
  • 灵活配置:支持多种同步源,包括
    1. NTP
    复制代码
    服务器、
    1. GPS
    复制代码
    接收器或其他参考时钟,以及手动时间输入。

Chrony使用场景:


  • 企业服务器:确保数据中心内的所有服务器保持时间同步,这对于日志记录、交易时间戳、数据一致性等至关重要。
  • 桌面系统:提高个人电脑的时间精度,尤其是对于依赖精确时间的应用,如开发环境、金融交易软件或科学计算。
  • 嵌入式系统和物联网设备:在资源有限的设备上,
    1. Chrony
    复制代码
    的低资源消耗特性使其成为理想的选择。
  • 虚拟环境:在云服务器或虚拟机中,
    1. Chrony
    复制代码
    能有效应对由于虚拟化带来的时钟漂移问题。
  • 高精度应用:科研机构、天文观测、卫星通信等领域,需要高度精确时间同步的应用场景。
综上,
  1. Chrony
复制代码
是一个强大且灵活的时间同步工具,适用于各种需要精确时间同步的环境,尤其在面对现代计算挑战如虚拟化、节能技术和网络波动时表现出色。

yum命令查看Chrony是否安装

要使用
  1. yum
复制代码
命令查看
  1. Chrony
复制代码
是否已经安装,可以执行以下命令:
  1. yum list installed chrony
复制代码
这条命令会列出所有已安装的软件包,并在结果中查找是否有
  1. chrony
复制代码
。如果
  1. chrony
复制代码
出现在输出列表中,那么就意味着
  1. Chrony
复制代码
已经安装在你的系统上。如果没有找到
  1. chrony
复制代码
,则表示它尚未安装。

yum命令安装 Chrony

对于
  1. CentOS 7
复制代码
及更高版本,
  1. Chrony
复制代码
很可能是预装的。如果不是,或者你需要在较旧的
  1. CentOS
复制代码
版本上安装,可以使用 YUM 包管理器来安装
  1. Chrony
复制代码
  1. sudo yum install chrony -y
复制代码
对于
  1. CentOS 8
复制代码
及更高版本,使用 DNF(DNF 是 YUM 的替代品):
  1. sudo dnf install chrony -y
复制代码
Chrony常用命令


启动 Chrony服务
  1. sudo systemctl start chronyd
复制代码
对于较老的系统,可能需要使用
  1. service
复制代码
命令:
  1. sudo service chronyd start
复制代码
停止 Chrony服务
  1. sudo systemctl stop chronyd
复制代码
重启 Chrony服务
  1. sudo systemctl restart chronyd
复制代码
设置 Chrony开机启动
  1. sudo systemctl enable chronyd
复制代码
禁用 Chrony开机启动
  1. sudo systemctl disable chronyd
复制代码
查看 Chrony状态
  1. sudo systemctl status chronyd
复制代码
查看 Chrony日志

默认的日志路径可能在
  1. /var/log/chrony/chronyd.log
复制代码
,你可以使用如下命令查看:
  1. sudo cat /var/log/chrony/chronyd.log
复制代码
或使用
  1. journalctl
复制代码
查看实时日志:
  1. sudo journalctl -u chronyd -f
复制代码
Chronyc命令行工具
  1. chronyc
复制代码
  1. Chrony
复制代码
的用户界面,用于监视和控制
  1. Chrony
复制代码
守护进程。一些常用的
  1. chronyc
复制代码
命令包括:

查看源状态
  1. chronyc sources -v
复制代码

命令返回内容
  1. .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
  2. / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
  3. | /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
  4. ||                                                 .- xxxx [ yyyy ] +/- zzzz
  5. ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
  6. ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
  7. ||                                \     |          |  zzzz = estimated error.
  8. ||                                 |    |           \
  9. MS Name/IP address         Stratum Poll Reach LastRx Last sample               
  10. ===============================================================================
复制代码
返回参数解析


  • Source mode:


    1. ^
    复制代码
    : 表示此源是作为服务器(server)模式工作,意味着它是一个上游时间服务器。
    1. =
    复制代码
    : 表示此源是作为对等体(peer)模式工作,意味着它与其他
    1. NTP
    复制代码
    服务器相互同步。
    1. #
    复制代码
    : 表示本地时钟,即系统自身的时钟。


  • Source state:


    1. *
    复制代码
    : 当前已同步(current synced),表明此源正在被用来同步系统时间。
    1. +
    复制代码
    : 组合使用(combined),意味着虽然此源未直接用于同步,但它对最终的时间调整有贡献。
    1. -
    复制代码
    : 未组合使用(not combined),此源的信息未被合并进系统时间的计算中。
    1. ?
    复制代码
    : 不可达(unreachable),表示网络不可达或通信失败。
    1. x
    复制代码
    : 时间可能有误(time may be in error),可能是因为多次连续的测量不一致。
    1. ~
    复制代码
    : 时间变化过大(time too variable),源的时间跳跃或变动太大,不适宜作为同步源。


  • Reachability register (octal): 到达性寄存器,用八进制表示,反映了
    1. Chrony
    复制代码
    与时间源之间连接的稳定性。
  • Log2(Polling interval): 轮询间隔的对数(以2为底)。这个值表示
    1. Chrony
    复制代码
    与时间源之间通信的频率,值越大表示轮询间隔越长。
接下来,具体到每行数据的结构:

  • MS: Mode and State,模式和状态,结合上述的Source mode和Source state。
  • Name/IP address: 时间源的名称或
    1. IP
    复制代码
    地址。
  • Stratum: 层级,表示此源在
    1. NTP
    复制代码
    层次结构中的位置。
  • Poll: 当前的轮询间隔,单位为秒。
  • Reach: 到达性,八进制表示的位图,展示了最近八次轮询的成功情况。
  • LastRx: 最后一次接收到响应的时间。
  • Last sample: 最后一个样本的时间戳及偏移量信息,格式为:


    1. xxxx
    复制代码
    : 调整后的偏移量(offset),即系统时钟调整后与该源的差异,单位为毫秒。
    1. [yyyy]
    复制代码
    : 测量到的偏移量,未经过
    1. Chrony
    复制代码
    调整的原始偏移量。
    1. +/- zzzz
    复制代码
    : 估算的误差范围,即系统时钟与该源时间的可能偏差范围,单位为毫秒。
  1. .xxxx [yyyy] +/- zzzz
复制代码
根据以上信息,你可以判断每个时间源的健康状况、系统与之同步的情况,以及时间同步的整体质量。

立即同步时间

(使系统时钟尽快与参考时间源同步,而非平滑调整):
  1. chronyc makestep
复制代码
列出跟踪记录
  1. chronyc tracking
复制代码
命令返回内容
  1. Reference ID    : CA701FC5 (dns2.synet.edu.cn)
  2. Stratum         : 2
  3. Ref time (UTC)  : Sat Jun 01 08:28:26 2024
  4. System time     : 0.000122217 seconds fast of NTP time
  5. Last offset     : +0.000072612 seconds
  6. RMS offset      : 212.469070435 seconds
  7. Frequency       : 3.279 ppm slow
  8. Residual freq   : +0.003 ppm
  9. Skew            : 0.157 ppm
  10. Root delay      : 0.016848214 seconds
  11. Root dispersion : 0.001658257 seconds
  12. Update interval : 1026.4 seconds
  13. Leap status     : Normal
复制代码
返回参数解析

  • Reference ID: 这是跟踪的参考时钟标识符,通常是一个IP地址或域名的一部分,这里是
    1. CA701FC5 (dns2.synet.edu.cn)
    复制代码
    ,表明您的系统通过DNS名为
    1. dns2.synet.edu.cn
    复制代码
    的服务器进行时间同步。
  • Stratum: 表示系统的NTP层级,这里是2,意味着您的系统是第二层时钟,直接与第一层(通常是原子钟或GPS时钟作为参考源的服务器)同步。
  • Ref time (UTC): 参考时间,即Chrony最后一次成功同步时参考时钟的时间,这里是 "Sat Jun 01 08:28:26 2024"(注意:日期可能不正确,需确认)。
  • System time: 系统时间与NTP时间的偏差,这里是 "+0.000122217 seconds fast",表明系统时间比NTP标准时间快了约0.000122秒。
  • Last offset: 上一次测量的偏移量,这里是 "+0.000072612 seconds",即上次检查时系统时间比NTP时间快了约0.000073秒。
  • RMS offset: 偏移量的均方根(Root Mean Square),长时间内的平均偏移量的波动大小,这里是 "212.469070435 seconds",这个值异常大,通常应接近0且远小于1秒,表明之前可能存在严重的时间同步问题或配置不当。
  • Frequency: 频率偏差,这里是 "3.279 ppm slow",表示系统时钟比理想频率慢了3.279 parts per million(每百万分之3.279),通常Chrony会自动调整此频率。
  • Residual freq: 残余频率偏差,即最近的频率调整后剩余的偏差,这里是 "+0.003 ppm",意味着最近调整后略有加速。
  • Skew: 频率偏差的趋势,这里是 "0.157 ppm",若此值接近0表示系统时钟频率相对稳定。
  • Root delay: 到参考时钟的总往返延迟,这里是 "0.016848214 seconds",表明网络延迟较小。
  • Root dispersion: 时间分散度,即参考时钟不确定性加上网络传输过程中的不确定度,这里是 "0.001658257 seconds",也相对较低,表示时间同步质量较好。
  • Update interval: Chrony与参考源更新时间间隔,这里是 "1026.4 seconds",表示大约每17分钟轮询一次时间源。
  • Leap status: 跳秒状态,这里是 "Normal",表明没有即将发生的闰秒调整。
从上述输出看,特别需要注意的是 RMS offset 值异常大,这通常意味着在过去有一段时间系统时间与NTP时间之间存在巨大差异,或者可能是测量误差。如果这个问题持续存在,应检查网络连接、时间源的可靠性以及Chrony的配置。

查看帮助信息
  1. chronyc help
复制代码
以上就是
  1. Chrony
复制代码
  1. CentOS
复制代码
上的基本安装方法和一些常用命令。根据实际情况和需求,可能还需要对
  1. /etc/chrony.conf
复制代码
配置文件进行适当的调整。

内网环境下的Chrony服务配置

在无法联网的服务器集群中,要使集群中的机器通过一台中心节点进行时间同步,这样只需要定期更新中心节点的服务器时间,即可完成整个集群的时间同步,可以采用如下步骤,设置
  1. Chrony
复制代码
来实现内部时间同步:

设置中心节点(时间服务器)

首先确保在充当时间服务器的中心节点上安装
  1. Chrony
复制代码


配置Chrony

编辑
  1. Chrony
复制代码
的配置文件
  1. /etc/chrony.conf
复制代码
,使其作为本地时间源而非外部
  1. NTP
复制代码
服务器。可以注释掉所有外部时间服务器的行,并添加本地作为时间源的声明。
  1. server 127.127.1.0         # Local clock
  2. fudge 127.127.1.0 stratum 10
复制代码
这里,
  1. 127.127.1.0
复制代码
是本地时钟的表示,
  1. fudge
复制代码
命令设置了该时钟的层级为10,意味着它是不太可靠的时间源,但在没有其他外部源的情况下是必要的。

启动并启用Chrony服务
  1. sudo systemctl start chronyd
  2. sudo systemctl enable chronyd
复制代码
手动校准时间

如果中心节点的时间不准确,首先需要手动将其调整到尽可能准确的时间,可以使用
  1. date
复制代码
命令或
  1. ntpdate
复制代码
(如果安装了)从一个已知准确的时间源临时同步。

设置集群中其他节点


  • 安装
    1. <strong>Chrony</strong>
    复制代码
    :在集群中的每台机器上安装
    1. Chrony
    复制代码

  • 配置
    1. <strong>Chrony</strong>
    复制代码
    :编辑每台机器上的
    1. /etc/chrony.conf
    复制代码
    文件,添加中心节点作为时间源,假设中心节点的
    1. IP
    复制代码
    地址为
    1. 192.168.1.100
    复制代码
    ,则添加:
  1. server 192.168.1.100 iburst
复制代码
  1. iburst
复制代码
参数告诉
  1. Chrony
复制代码
在启动时迅速进行多次查询以快速同步时间。

  • 重启
    1. <strong>Chrony</strong>
    复制代码
    服务:在每台机器上重启
    1. Chrony
    复制代码
    服务以应用配置。
  1. sudo systemctl restart chronyd
复制代码
验证时间同步

在所有节点上,使用
  1. chronyc sources -v
复制代码
查看时间源状态,确保它们都指向了中心节点,并且状态为
  1. *
复制代码
表示已同步。

注意事项


  • 确保集群内网络通信畅通,防火墙规则允许
    1. NTP
    复制代码
    (UDP 123端口)通信。
  • 定期手动检查中心节点的时间准确性,并必要时进行调整,因为所有集群节点都将依赖于此时间源。
  • 在高度敏感的环境中,可能还需要考虑物理时钟源(如GPS接收器)接入中心节点,以提高时间同步的准确性。

总结

到此这篇关于Linux(CentOS)​​同步服务器chrony的安装配置和常用命令的文章就介绍到这了,更多相关Linux(CentOS)​​同步服务器chrony内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/server/323476w8n.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具