
一、Chrony概念1、定义Chrony 是一个现代化的时间同步工具它使用 NTP 协议 与外部时间源通常是 NTP 服务器通信定期调整本地时钟确保其与世界标准时间UTC保持同步。相比于传统的 NTP 服务Chrony 更适合高负载、虚拟化环境以及对时间同步精度要求较高的场景2、工作原理Chrony 的工作分为两个主要部分时钟偏差的测量和时钟的校准。时钟偏差的测量 Chrony 定期向配置的时间服务器发送请求收到响应后它会计算往返延时和本地时钟与服务器时间的差异。时钟的校准 根据测量得到的时钟偏差Chrony对本地时钟进行调整以使其与外部时间源保持同步。Chrony 的同步周期不是固定的它会根据网络条件和之前的同步精度 动态调整。初次启动时Chrony 会更频繁地同步以快速减小时钟偏差。随着时间的推移如果网络条件稳定Chrony会逐渐增长同步间隔减少系统负载。二、chrony配置#当前服务器没有外网的情况下 以当前服务器为时间源 [rootserver ~]# vim /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #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 allow 192.168.1.0/24 #允许这个网段的IP进行同步 local stratum 10 #声明自己是本地时间源 # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 second. makestep 1.0 3 # Enable kernel synchronization of the real-time clock (RTC). rtcsync # Enable hardware timestamping on all interfaces that support it. #hwtimestamp * # Increase the minimum number of selectable sources required to adjust # the system clock. #minsources 2 # Allow NTP client access from local network. #allow 192.168.0.0/16 # Serve time even if not synchronized to a time source. #local stratum 10 # Specify file containing keys for NTP authentication. #keyfile /etc/chrony.keys # Specify directory for log files. logdir /var/log/chrony # Select which information is logged. #log measurements statistics tracking[rootserver ~]# systemctl restart chronyd如果当前服务器有外网的情况下就可以把server哪里的配置改成以下# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #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 server ntp1.aliyun.com iburst #默认的注释 添加时间源三、客户端操作[rootclient ~]# yum -y install chrony [rootclient ~]# vim /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #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 server 192.168.1.100 iburst [rootclient ~]# systemctl restart chronyd #可以强制同步时间 [rootclient ~]# chronyc makestep 200 OK四、验证同步1、常用指令1、常用指令 查看时间同步源 chronyc sources -v 查看时间同步源状态 chronyc sourcestats -v 查看时间同步状态 chronyc tracking 立即手工同步 chronyc -a makestep 查看当前连接到 Chrony 服务器的客户端列表 chronyc clients2、查看时间同步状态使用 chronyc tracking 命令查看时间同步状态确认本地时钟是否已与外部时间源同步。 [rootclient ~]# chronyc tracking Reference ID : C0A80164 (192.168.1.100) Stratum : 11 Ref time (UTC) : Thu Mar 19 08:26:59 2026 System time : 0.000000202 seconds slow of NTP time Last offset : 0.000190385 seconds RMS offset : 0.000063443 seconds Frequency : 0.305 ppm slow Residual freq : 0.001 ppm Skew : 1.516 ppm Root delay : 0.000318022 seconds Root dispersion : 0.000025946 seconds Update interval : 64.6 seconds Leap status : Normal结果讲解 Reference ID 这是时间参考源的标识。通常是 NTP 服务器的 IP 地址的十六进制表示括号内是对应的域名。在这个例子中时间参考源是 ntp1.example.com。 Stratum 层级表示时间源的可信度级别。层级越低越接近精确的时间源如原子钟。层级 0 通常是原子钟或 GPS 时钟层级 1 是直接连接到层级 0 的服务器层级 2 是连接到层级 1 的服务器以此类推。这里的层级是 3说明该时间源通过了三级的传递。 Ref time (UTC) 参考时间即从参考源接收到的协调世界时UTC时间。 System time 系统时间与 NTP 时间的偏差。正数表示系统时间比 NTP 时间快负数表示系统时间比 NTP 时间慢。在这个例子中系统时间比 NTP 时间快 0.000043 秒。 Last offset 上一次测量的系统时间与 NTP 时间的偏差。这里是 -0.000002 秒意味着上一次测量时系统时间比 NTP 时间慢了这个数值。 RMS offset 均方根偏差是一段时间内系统时间与 NTP 时间偏差的统计值反映了时间同步的稳定性。 Frequency 系统时钟频率与理想时钟频率的偏差。ppm 表示百万分之一。这里显示 1.487 ppm slow意味着系统时钟频率比理想频率慢 1.487 ppm。 Residual freq 剩余频率偏差是对时钟频率调整后仍存在的偏差。 Skew 频率偏差的不确定性反映了时钟频率随时间变化的稳定性。 Root delay 从本地系统到参考源的网络延迟单位是秒。 Root dispersion 表示时间误差在网络中传播的分散程度单位是秒。较小的值表示时间同步的精度较高。 Update interval Chrony 与参考源进行时间同步的时间间隔单位是秒。 Leap status 闰秒状态Normal 表示当前没有闰秒调整。其他可能的值包括 Insert leap second插入闰秒和 Delete leap second删除闰秒。3、查看时间源使用 chronyc sources 列出时间源 [rootclient ~]# chronyc sources 210 Number of sources 1 MS Name/IP address Stratum Poll Reach LastRx Last sample ^* 192.168.1.100 10 6 77 4 2619ns[ 23us] /- 152us说明 210 Number of sources 1 这行信息表示 Chrony 当前配置的时间源数量为 1 个。210 是 Chrony 内部用于标识该响应的代码。 MS这一列包含两个字符用于表示时间源的状态和模式。 第一个字符表示源的状态 ^ 表示该时间源是一个 NTP 服务器。 # 表示该源是一个本地参考时钟如硬件时钟。 第二个字符表示源的模式 - 表示该源被暂时拒绝或不可用。 表示该源是一个候选源但目前不是首选源。 * 表示该源是当前的首选时间源Chrony 主要根据这个源来同步时间。 x 表示该源的时间被认为是错误的可能是由于网络问题或源本身不可靠。 Name/IP address显示时间源的名称或 IP 地址。 Stratum时间源的层级。层级越低越接近精确的时间源如原子钟。层级 0 通常是原子钟或 GPS 时钟层级 1 是直接连接到层级 0 的服务器层级 2 是连接到层级 1 的服务器以此类推。在示例中所有时间源的层级都是 2。 PollChrony 向该时间源发送请求的时间间隔以 2 的幂次方秒为单位。例如6 表示时间间隔为 2^6 64 秒。 Reach一个 8 位的十六进制数表示最近 8 次与该时间源通信的成功次数。377 是八进制表示转换为十进制是 255表示最近 8 次通信都成功了。 LastRx距离最后一次接收到该时间源响应的秒数。在示例中所有时间源的 LastRx 都是 32 秒。 Last sample这一列包含两个时间值用方括号分隔。 方括号外的值是相对于本地时钟的最后一次测量的时间偏移。负数表示本地时钟比源时钟快正数表示本地时钟比源时钟慢。 方括号内的值是经过平滑处理后的时间偏移。 /- 后面的值是时间偏移的估计误差范围。在示例中所有时间源的估计误差范围都是 24ms。 通过 chronyc sources 命令的输出我们可以了解 Chrony 当前使用的时间源的状态、可靠性以及与本地时钟的时间偏移情况从而判断时间同步的效果和稳定性。4、服务段查看客户端列表使用 chronyc clients 指令可以查看当前连接到 Chrony 服务器的客户端列表 [rootserver ~]# chronyc clients Hostname NTP Drop Int IntL Last Cmd Drop Int Last 192.168.1.101 7 0 6 - 8 0 0 - - 结果讲解 NTP 客户端请求次数。 Drop 丢弃的请求数通常因网络问题或配置错误。 Last 最后一次请求的时间单位为秒。