惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Privacy International News Feed
NISL@THU
NISL@THU
Know Your Adversary
Know Your Adversary
G
GRAHAM CLULEY
The Hacker News
The Hacker News
P
Privacy & Cybersecurity Law Blog
S
Schneier on Security
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
S
Security Affairs
WordPress大学
WordPress大学
T
Tailwind CSS Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
雷峰网
雷峰网
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
S
Securelist
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
有赞技术团队
有赞技术团队
爱范儿
爱范儿
Help Net Security
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 三生石上(FineUI控件)
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
Last Week in AI
Last Week in AI
S
Security @ Cisco Blogs
博客园 - 司徒正美
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
罗磊的独立博客
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
J
Java Code Geeks
T
Threatpost
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位

博客园 - KLAPT

Gateway 网关 CodeX =>Skills Redis 内存满了怎么处理 SpringBoot 默认配置修改 JWT 续签 Access Token + Refresh Token 双 Token claudeCode 命令 MyBatis 的 Mapper 接口 AI | CC GUI 集成 IDEA 完整教程 在IDEA中使用Claude Code IDEA中使用CodeX MyBatisPlus解决大数据量查询慢问题 idea 中的 claude code Token Dubbo 和 Spring Cloud Gateway的区别 Transactional 注解中propagation 掌握 Spring 框架这 10 个扩展点 SpringBoot 快速实现 api 加密 Spring Boot/Cloud 中 bootstrap.yml 与 application.yml SpringBoot 实现 DOCX 转 PDF 微服务Token鉴权设计的几种方案 进程、线程、协程 RSA 加密 Java二维码 ntp服务端和客户端 chronyd 作为服务器时钟 chrony sudo命令和su 的区别 java -cp 和 java -jar Maven 项目打包:实现业务代码与第三方依赖分离 达梦数据库创建用户 梦数据库新增大字段报错问题 达梦数据库操作 MySQL UPDATE多表关联更新 达梦数据库 为HTTP POST请求设置请求体 在Java中调用第三方接口并返回第三方页面 Java调用第三方接口的方法 Nginx 之Rewrite 使用详解 linux 命令 Spring Boot项目中集成Spring Security OAuth2和Apache Shiro
Chronyd与NTP
KLAPT · 2026-02-04 · via 博客园 - KLAPT

一 介绍

1 简介

        集群中节点之间需要时间同步,Chronyd不依赖外部的时间服务NTP,在内部搭建时间服务器。

        Chrony是网络时间协议(NTP)的一种实现,是一个类Unix系统上NTP客户端和服务器的替代品。Chrony客户端可以与NTP servers同步系统时间,也可以与参考时钟(例如:GPS接受设备)进行同步,还与手动输入的时间进行同步。同样Chrony也可以作为一个NTPv4(RFC 5905) server为其他计算机提供时间同步服务。
        Chrony 可以更快的同步系统时钟,具有更好的时钟准确度,并且它对于那些不是一直在线的系统很有帮助。Chrony在Internet上同步的两台机器之间的典型精度在几毫秒内,而在LAN上的机器之间的精度在几十微秒内。chronyd 更小、更节能,它占用更少的内存且仅当需要时它才唤醒 CPU。即使网络拥塞较长时间,它也能很好地运行。它支持 Linux 上的硬件时间戳,允许在本地网络进行极其准确的同步。Chrony 是自由开源的,并且支持 GNU/Linux 和 BSD 衍生版(比如 FreeBSD、NetBSD)、macOS 和 Solaris 等。

2 与ntpd对比

(1)chronyd做的比ntpd好的

  • chronyd可以在时断时续访问参考时间源的环境下工作,而ntpd需要定期轮询参考时间源才能正常工作。
  • 即使网络拥塞时间更长,chronyd也可以运行良好。
  • chronyd通常可以更快、更准确地同步时钟。
  • chronyd能够快速适应晶体振荡器温度变化引起的时钟频率的突然变化,而ntpd可能需要很长时间才能稳定下来。
  • 在默认配置下,为了不影响其他正在运行的程序,chronyd从不在系统启动同步时钟之后执行时间步进。ntpd也可以配置为从不步进时间,但它必须使用不同的方法来调整时钟,这有一些缺点,包括对时钟精度的负面影响。
  • chronyd可以在更大的范围内调整Linux系统上的时钟频率,这使得它甚至可以在时钟损坏或不稳定的机器上运行。例如,在一些虚拟机上。
  • chronyd体积更小,占用的内存更少,而且只有在必要的时候才会唤醒CPU,这对于节能来说是更好的选择。

(2)chronyd能做的但ntpd做不到的

  • chronyd提供了对孤立网络的支持,在孤立网络中,时间校正的唯一方法就是手动输入。例如,由管理员查看时钟。chronyd可以检查在不同的更新中修正的错误,从而估算出计算机增加或减少时间的速度,并在随后使用这个估算来调整计算机时钟。
  • chronyd可以计算RTC时钟(在计算机关闭时保持时间的时钟)的增益和损耗率。它可以在系统启动时使用这些计算的数据,以及从RTC时钟获取的时间调整值来设置系统时间。RTC时钟设备目前仅在Linux系统上可用。
  • 支持Linux上的硬件时间戳,允许在本地网络上进行非常精确的同步。

(3)ntpd做得到但chronyd做不到的

  • ntpd支持NTP v4(RFC 5905)的所有同步模式,包括broadcast、multicast和manycast clients and servers模式。请注意,broadcast和multicast模式(即使有身份验证)与普通servers and clients模式相比,更不精确、更不安全,通常应避免使用。
  • ntpd支持使用公钥加密的Autokey协议(RFC 5906)对服务器进行身份验证。注意,该协议已被证明是不安全的,可能会被Network Time Security(NTS)取代。
  • ntpd包含很多参考时间源的驱动程序,而chronyd依赖于其他程序(例如gpsd),以使用共享内存(SHM)或Unix domain socket(SOCK)访问参考时间源的数据。

二 内网安装

  1. [root@192 ~]# yum install chrony

  2.  Loaded plugins: fastestmirror, langpacks

  3.  Loading mirror speeds from cached hostfile

  4.  Package chrony-3.4-1.el7.x86_64 already installed and latest version

  5.  Nothing to do

  1. [root@192 ~]# systemctl start chronyd

  2.  [root@192 ~]# systemctl enable chronyd

    1. # server配置,vim /etc/chrony.conf 添加以下两项

    2.  # Allow NTP client access from local network.

    3.  allow all # 允许所有主机从server端同步时间

  1. # Serve time even if not synchronized to a time source.

  2.  local stratum 10 # 即使server端无法从互联网同步时间,也同步本机时间至client

  1. # client配置,vim /etc/chrony.conf 注释原server配置,改为prod1机器IP地址

  2.  # Please consider joining the pool (http://www.pool.ntp.org/join.html).

  3.  #server 0.centos.pool.ntp.org iburst

  4.  #server 1.centos.pool.ntp.org iburst

  5.  #server 2.centos.pool.ntp.org iburst

  6.  #server 3.centos.pool.ntp.org iburst

  7.  server 192.168.247.136 iburs

# 都重启服务
[root@192 ~]# systemctl restart chronyd
# 服务端查看server端在线情况和时间同步情况
[root@192 ~]# chronyc activity
200 OK
0 sources online
0 sources offline
1 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
[root@192 ~]# chronyc tracking
Reference ID : B65C0C0B (time5.aliyun.com)
Stratum : 3
Ref time (UTC) : Tue Dec 28 08:56:41 2021
System time : 0.000352393 seconds fast of NTP time
Last offset : +0.000411336 seconds
RMS offset : 0.000915787 seconds
Frequency : 1.113 ppm slow
Residual freq : -0.518 ppm
Skew : 55.244 ppm
Root delay : 0.024603928 seconds
Root dispersion : 0.003826973 seconds
Update interval : 64.2 seconds
Leap status : Normal

# 客户端查看server端(也就是本地服务器)在线情况和时间同步情况
[root@192 ~]# chronyc activity
200 OK
1 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
[root@192 ~]# chronyc tracking
Reference ID : C0A8F788 (192.168.247.136)
Stratum : 4
Ref time (UTC) : Tue Dec 28 08:55:38 2021
System time : 0.000000145 seconds slow of NTP time
Last offset : +0.000075000 seconds
RMS offset : 0.000075000 seconds
Frequency : 31.362 ppm slow
Residual freq : +0.119 ppm
Skew : 198.082 ppm
Root delay : 0.024361094 seconds
Root dispersion : 0.004769796 seconds
Update interval : 2.0 seconds
Leap status : Normal

三 为处于孤立网络中的系统配置chrony         孤立网络指的是不连接到互联网的网络。为处于孤立网络中的系统配置chrony,我们首先需要选择一台计算机作为master timeserver。网络中的其他计算机都作为客户端与master同步时间,或者作为客户端的客户端与master的客户端同步时间。在master上,必须用系统时钟的平均偏移率手动设置drift文件。加入master重启,它将会从周围的系统上获取时间数据,并计算平均值来设置它的系统时间。然后它基于drift文件恢复调整系统时间。drift文件会在使用settime命令后自动更新。

# 在master上,编辑/etc/chrony.conf配置文件如下
driftfile /var/lib/chrony/drift #指定存储chronyd计算的系统时钟增益和损耗数据的drift文件位置。
commandkey 1
keyfile /etc/chrony.keys #ntp数据包验证密钥文件
initstepslew 10 client1 client3 client6
local stratum 8
manual #使得可以在chronyc中使用settime命令手动设置时间
allow 192.0.2.0 #其中192.0.2.0是允许连接到master的客户端的网络地址。

# 在master的客户端上,编辑/etc/chrony.conf配置文件如下:
server master #设置master为同步时间源
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
log measurements statistics tracking
keyfile /etc/chrony.keys
commandkey 24
local stratum 10
initstepslew 20 master
allow 192.0.2.123 #192.0.2.123是master的ip地址

# 客户端的chrony.conf配置与以上客户端的配置类似,但是没有local和allow指令。