# Centos安装chrony同步时间

chrony是一个时间同步工具,旨在替换掉传统的ntpd服务。特别适合现在的动态设备(如虚拟机、容器和移动设备),具有更快的同步速度和更高的灵活性。下面是关于chrony的原理和安装教程。

# chrony的原理

  • 客户端和服务器通信chronyd作为客户端,向配置的ntp服务器发送时间同步请求。
  • 计算时间偏差:根据服务器的响应时间,计算本地系统时间和服务器时间的偏差。
  • 逐步调整时间:通过算法逐步调整时间,避免时间跳变。
  • 持续监控:定期与服务器通信,去报时间的持续同步。

# 安装chrony

sudo yum install chrony -y

# 配置chrony

chrony的配置文件位于/etc/chrony.conf,你可以根据需要修改它。以下是一个基本的配置示例:

# 使用公共 NTP 服务器
server ntp.aliyun.com iburst
server ntp.tuna.tsinghua.edu.cn iburst
server time.cloud.tencent.com iburst

# 允许本地网络同步(可选)
allow 192.168.1.0/24

# 启用本地硬件时钟作为备用
local stratum 10

# 记录时间偏差日志
driftfile /var/lib/chrony/drift

# 启用日志
logdir /var/log/chrony
  • server:指定ntp服务器地址。
  • iburst:在初始同步时发送多个请求,以加快时间的同步速度。
  • allow:允许特定网络段进行时间同步。
  • local stratum 10:将本地硬件时钟作为备用,并设置其层级为10。
  • driftfile:指定时间偏差日志文件。
  • logdir:指定日志目录。

# 启动chrony

# 启动 chronyd 服务
sudo systemctl start chronyd
# 设置 chronyd 服务开机自启
sudo systemctl enable chronyd
# 查看chronyd服务状态
sudo systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2025-01-13 10:46:13 CST; 18min ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 28226 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 28221 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 28223 (chronyd)
    Tasks: 1
   Memory: 436.0K
   CGroup: /system.slice/chronyd.service
           └─28223 /usr/sbin/chronyd

113 10:46:13 k8s-master systemd[1]: Starting NTP client/server...
113 10:46:13 k8s-master chronyd[28223]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
113 10:46:13 k8s-master chronyd[28223]: Frequency -7.521 +/- 0.022 ppm read from /var/lib/chrony/drift
113 10:46:13 k8s-master systemd[1]: Started NTP client/server.
113 10:46:18 k8s-master chronyd[28223]: Selected source 203.107.6.88
113 10:47:25 k8s-master chronyd[28223]: Selected source 106.55.184.199
113 10:48:39 k8s-master chronyd[28223]: Source 101.6.6.172 replaced with 2402:f000:1:416:101:6:6:172
113 10:50:39 k8s-master chronyd[28223]: Selected source 203.107.6.88

# 使用chronyc监控和管理

# 查看时间同步状态

chronyc tracking
Reference ID    : CB6B0658 (203.107.6.88)
Stratum         : 3
Ref time (UTC)  : Mon Jan 13 03:06:49 2025
System time     : 0.000283244 seconds fast of NTP time
Last offset     : -0.000016659 seconds
RMS offset      : 0.000747371 seconds
Frequency       : 8.316 ppm slow
Residual freq   : -0.044 ppm
Skew            : 1.792 ppm
Root delay      : 0.025830340 seconds
Root dispersion : 0.004631587 seconds
Update interval : 128.9 seconds
Leap status     : Normal

# 查看所有时间源

chronyc sources
210 Number of sources = 3
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   7   377    82   +717us[ +700us] +/-   24ms
^? 2402:f000:1:416:101:6:6:>     0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ 106.55.184.199                2   7   377    83   -974us[ -991us] +/-   60ms

# 手动同步时间

chronyc makestep
200 OK

# 检查ntp服务器状态

 chronyc sourcestats
210 Number of sources = 3
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
203.107.6.88               22  13   22m     +0.678      4.094    +27us  1785us
2402:f000:1:416:101:6:6:>   0   0     0     +0.000   2000.000     +0ns  4000ms
106.55.184.199             22  15   22m     -0.102      1.510    +22us   783us