Linux运维 | Chrony 同步时钟

时钟同步在分布式系统中起到至关重要的作用,我们需要确保集群服务器中时钟是一致的,避免时钟偏差导致接口token校验以及其他需要用到时间校验的地方出现问题。

安装chronyc

yum install chrony 

编辑chrony配置文件,添加或修改 NTP 服务器配置。可以添加多个 NTP 服务器地址,这样在某个服务器不可用时可以使用其他的服务器。

vi /etc/chrony/chrony.conf
server 10.111.32.145 iburst
server 10.111.32.146 iburst
initstepslew 3 10.111.32.145
initstepslew 3 10.111.32.146

driftfile /var/lib/chrony/drift
makestep 1 -1
#maxchange 999999 5 -1
#rtcsync
#hwclockfile /etc/adjtime
rtcfile /var/lib/chrony/rtc
rtconutc
rtcautotrim 1
logdir /var/log/chrony
log measurements statistics tracking rtc                                           
  • server 10.111.32.145 iburst

    • server 10.111.32.145:指定 NTP 服务器的 IP 地址,chrony 将会从该服务器获取时间同步信息。
    • iburst:快速初始突发模式(initial burst mode)。当 chrony 启动或在与服务器失去连接后重新连接时,它会发送一组快速的 NTP 请求(通常是四个请求),以便尽快获得时间同步。这有助于加速首次同步的过程,使系统能够更快地调整到正确的时间。
  • initstepslew 3 10.111.32.145

    • initstepslew 3 10.111.32.145:在启动时强制进行时间同步,允许在启动时最多进行 3 次大的时间调整(step correction),如果系统时间与 NTP 服务器的时间差异太大(通常超过 1 秒)。chrony 会使用 10.111.32.145 服务器进行这些调整。
      • initstepslew 3:表示最多允许 3 次大的时间调整。
      • 10.111.32.145:指定用于这些调整的 NTP 服务器
  • makestep 1 -1 意味着任何时间偏差超过 1 秒时,chrony 将立即调整系统时钟,而不会逐渐漂移。

查看当前的轮询间隔和同步状态

chronyc tracking
chronyc sources -v

chronyc tracking 显示系统的同步状态和当前的轮询间隔。

[root@node-1 viper]# chronyc tracking
Reference ID    : 0A6F2091 (10.111.32.145)
Stratum         : 3
Ref time (UTC)  : Thu Aug 08 07:40:43 2024
System time     : 0.000000594 seconds fast of NTP time
Last offset     : +0.000001099 seconds
RMS offset      : 0.000002727 seconds
Frequency       : 18.525 ppm fast
Residual freq   : +0.024 ppm
Skew            : 0.035 ppm
Root delay      : 0.000051176 seconds
Root dispersion : 0.000038241 seconds
Update interval : 65.3 seconds
Leap status     : Normal

当设置多个 NTP 服务器时,chrony 会根据一系列的算法和条件选择一个最合适的服务器进行时间同步。具体步骤如下:

  1. 收集数据chrony 会从配置文件中定义的所有 NTP 服务器收集时间数据。
  2. 过滤和选择chrony 会评估从各个服务器收集到的数据,过滤掉那些不可靠的或表现不好的服务器。这包括对服务器的响应时间、时间偏差等进行分析。
  3. 投票算法:经过筛选后的服务器会参与投票,chrony 使用一种名为“最大频度排序算法”的方法来选择最终的时间源。这个算法会评估每个服务器的时间并选择一个最接近真实时间的服务器。

chrony 会不断监控这些服务器,并在需要时动态调整同步源,以确保系统时间的准确性和稳定性。如果当前的时间源变得不可靠或不可用,chrony 会自动切换到下一个最佳服务器。

[root@node-1 viper]# chronyc sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 10.111.32.145                 2   6    17    26   -129ns[  -41ns] +/-   27us
^? 10.111.32.146                 0   7     0     -     +0ns[   +0ns] +/-    0ns

chronyc sources -v 的输出中:

  • * 表示当前同步的服务器。
  • + 表示备用服务器,表现良好。
  • - 表示服务器可用但未被选择。
  • ? 表示服务器不可用。

chrony 动态选择和调整最佳同步服务器,确保系统时间的准确性和稳定性。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值