(1)简介
Chrony是网络时间协议(NTP)的另一种实现,与ntp相比,它能够更快地同步系统时钟并具有更好的准确性。Chrony还可以对时钟频率的快速变化提供更好的响应,这对于时钟不稳定或无法保持时钟频率恒定的节能 技术的虚拟机很有用
监听端口323/udp,123/udp
(2)安装
yum -y install chrony
(3)文件解析
/etc/chrony.conf | 主配置文件 |
chronyd | 后台守护进程,用于调整内核中运行的系统时钟和时间服务器同步 |
chronyc | 客户端用户界面,用于监控chrony的性能,进行参数配置 |
chronyd.service | 单元文件 |
(4)配置文件解析
vim /etc/chrony.conf
[server]
//指定ntp服务器的地址,在我们服务端不能上外网的情况下,设置主机为时间服务器。
格式 server + ip/用户名 + perfer (perfer表示优先)
server 127.127.1.0
server 210.72.145.44 中国国家授时中心的ip地址
driftfile /var/lib/chrony/drift
// chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个
文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。
makestep 1.0 3
//通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差,在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。,该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间
,超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效,此处表示如果调整值大于1秒,则这将使系统时钟步进,但仅在前十个时钟更新中。
rtcsync
//rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)
#hwtimestamp *
//在所有支持硬件的接口上启用硬件时间戳,系统默认
minsources 2
//增加需要调整的最小可选信号源数量 系统时钟。系统默认
allow/ deny
//这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接
local stratum 10
//如果上面使用server字段配置的时间服务器同步时间失败,默认情况下当前时间服务器是不会向
客户端同步时间的。这是因为担心当前节点的时间不准确(因为当前节点没有和定义中的server
时间服务器进行同步)。如果我们想要在server指定的时间服务器同步失败的情况下依旧返回当
前时间服务器的时间给客户端,需要开启该参数,生产环境开启该参数会有一个问题,如果server有配置,那么可能会导致所有服务器的时间都是
一致的,并且都是错误的。如果是非互联网环境,例如私有云等或独立局域网,即使都出错也可以接受。
keyfile /etc/chrony.keys
//指定密码文件
logdir /var/log/chrony
//指定日志文件的目录
cmdallow / cmddeny
//可以指定那台主机可以通过chronyd使用控制命名
maxchange 1000 1 2
//# 在第一次时钟更新之后,chronyd将检查每次时钟更新的偏移量,它将忽略两次大于1000秒的调整,并退出另一个调整。
rtcfile /var/lib/chrony/rtc
//该rtcfile指令定义中的文件名chronyd可以保存跟踪系统的实时时钟(RTC)的精度相关的参数。
(5)服务器配置
server端:192.168.100.100,10.1.82.20
cilent端:192.168.100.110
windows:10.1.82.10
vim /etc/chrony.conf
还是一样先上来注释掉网络源
#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 127.127.0.1 iburst
allow 0.0.0.0/0 //运行所有网段进行连接
local Stratum 10 //如果我不能和我定义的网络时间源进行同步时,我也能继续提供时间
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]# iptables -I INPUT -p udp --dport 123 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp --dport 323 -j ACCEPT
[root@localhost ~]#systemctl restart chronyd
(6)客户端配置
Linux
vim /etc/chrony.conf
server 192.168.100.100
[root@localhost ~]#systemctl restart chronyd
[root@localhost ~]#ntpdate 192.168.100.100

(7)chronyc命令简介
help | 查看更多chronyc的交互命令 |
accheck | 检查是否对特定主机可访问当前服务器 |
activity | 显示有多少NTP源在线/离线情况 |
sources [-v] | 显示当前时间源同步信息 |
sourcestats [-v] | 显示当前时间源同步统计信息 |
add server | 手动添加一台新的NTP服务器 |
clients | 报告以访问本服务器的客户端列表 |
delete | 手动移除NTP服务器或对等体服务器 |
settime | 手动设置守护进程时间 |
sracking | 显示系统时间信息 |
chronyc sources -v 命令解析
[root@localhost ~]# chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- 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
===============================================================================
^* localhost 10 6 377 115 +1ns[ -10us] +/- 14us
M 表示授时时钟源
//^表示服务器,= 表示二级时钟源 ,#表示本地连接的参考时钟
S 指示源的状态
//*当前同步的源,+表示其他可接受的源,?表示连接丢失的源,x表示一个认为是falseticker 的时钟(即它的时间与大多数其他来源不一致),~表示其时间似乎具有太多可变性的来源
Name/IP address 表示源的名称或IP地址,或者参考时钟的refid值
Stratum 表示源的层级
//层级1表示本地连接的参考时钟,第2层表示通过第1层级计算机的时钟实现同步,依此类推。
Poll 表示源轮询的频率
//以秒为单位,值是基数2的对数,例如值6表示每64秒进行一次测量,chronyd会根据当时的情况自动改变轮询频率
Reach 表示源的可达性的锁存值(八进制数值)
//该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表示最后八次传输都收到了有效的回复
LastRx 表示从源收到最近的一次的时间
//通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年,值10年表示从未从该来源收到时间同步信息
Last sample 表示本地时钟与上次测量时源的偏移量
/方括号中的数字表示实际测量的偏移值,这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源