介绍
Chrony 是NTP(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)的另一种实现,与ntpd不同,它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差。
chrony
是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为 chronyd
和 chronyc
。
- chronyd是一个在系统后台运行的守护进程。主要用于调整内核中运行的系统时间和时间服务器同步,他根据网络上其他时间服务器时间来测量本机时间的偏移量从而调整系统时钟。对于孤立系统,用户可以手动周期性的输入正确时间(通过chronyc)。在这两种情况下,chronyd决定计算机快慢的比例,并加以纠正。chronyd实现了NTP协议并且可以作为服务器或客户端。
- chronyc是用来监控chronyd性能和配置其参数的用户界面。他可以控制本机及其他计算机上运行的chronyd进程。
服务unit文件:
/usr/lib/systemd/system/chronyd.service
,如果有防火墙请注意监听端口 323/udp
、123/udp
的配置。
配置文件
chrony 的配置文件为 /etc/chrony.conf
,相关参数说明如下表
参数 | 说明 |
server | 可用于时钟服务器,iburst 选项当服务器可达时,发送八个数据包而不是通常的一个数据包。 包间隔通常为2秒,可加快初始同步速度 |
pool | 该指令的语法与server 指令的语法相似,不同之处在于它用于指定NTP服务器池而不是单个 |
driftfile | chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。 |
rtcsync | 启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC) |
allow/deny | 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。 |
cmdallow/cmddeny | 跟上面相类似,只是你可以指定哪个IP地址或哪台主机可以通过chronyd使用控制命令 |
bindcmdaddress | 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级 |
makestep | 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效 |
local stratum 10 | 当server中提供的公网NTP服务器不可用时,采用本地时间作为同步标准 |
keyfile | 指定包含NTP验证密钥的文件 |
logdir | 指定日志文件的目录 |
配置文件示例:
修改配置文件后需要重启 chrony 服务,验证是否生效的方法就是使用 date -s "2022-02-22 22:22:22"
手工修改一下时间,然后再执行 chronyc makestep
后查看时间能否同步到最新时间。
其中 server
后面的选项 iburst
的作用是如果在一个标准的轮询间隔内没有应答,客户端会发送一定数量的包(八个包而不是通常的一个)给 NTP 服务器,如果在短时间内呼叫 NTP 服务器几次,没有出现可辨识的应答,那么本地时间将不会变化。你还可以使用选项 prefer
表示优先使用该时间服务器。
prefer
和 iburst
是可以同时使用的,例如 server ntp1.aliyun.com prefer iburst
。
相关命令
设置时区
(END)