chrony时间同步
目录
1.介绍
2.安装
2.1.基本安装
2.2.操作命令
2.3.程序
3.配置
3.1.服务端配置
3.2.客户端配置
4.chronyc使用
5.相关注意点
6.相关链接
1.介绍
Chrony 是一个用于时间同步的工具,它是 NTP (Network Time Protocol) 的一种实现,旨在在计算机系统上保持准确的时间。Chrony 特别适用于需要高精度、低延迟时间同步的环境,尤其是在网络连接不稳定或频繁断开的情况下。与传统的 NTP 实现相比,Chrony 在许多方面提供了更高的性能和灵活性。
关于linux上的时间:
执行timedatectl命令,将会看到3个时间,分别是Local time:本地时间,Universal time:全球标准时间,RTC time:硬件时间,chrony每次同步的是Universal time(全球标准时间),同步完成之后,根据当前设备配置的时区,Local time会更新到本地时间。
chrony默认通过UDP短链接同步时间,服务端默认端口为:123,抓包如下:
可以看到客户端每隔一段时间向服务端发送请求对时的报文........
2.安装
2.1.基本安装
Ubuntu环境使用apt安装即可:sudo apt-get install chrony
CentOS环境使用yum源进行安装:sudo yum install chrony
2.2.操作命令
使用上述方法安装之后,可以使用system查看或者设置chrony的工作状态,命令如下:
systemctl status chrony //查看chrony工作状态
systemctl stop chrony //停止chrony服务
systemctl start chrony //启动chrony服务
systemctl restart chrony //重启chrony服务
systemctl disable chrony //开机禁用chrony服务
systemctl enable chrony //开机启用chrony服务
2.3.程序
安装完成之后,会有两个可执行程序,一个是chronyd服务端,一个是chronyc客户端,chronyd负责时间同步等任务,而chronyc负责设置一些参数给chronyd、以及查看服务端的工作状态。
3.配置
配置分为两部分,一个是对时服务器的配置,另外一个是客户端的配置。
示例配置环境:
192.168.203.131------服务端-----对时服务器
192.168.203.138------客户端
192.168.203.138主动同步192.168.203.131上的时间
注:通常情况下chrony配置文件位置:/etc/chrony/chrony.conf
3.1.服务端配置
vim打开来对应的配置文件/etc/chrony/chrony.conf
配置如下内容:
pool ntp.ubuntu.com iburstlog tracking measurements statisticslogdir /var/log/chronyallow 192.168.203.138/24
其中:
pool表示当前服务端要同步的对时服务器池,可以按照实际需要修改,例如配置阿里的服务器,可配置多个。
log表示需要打开哪些日志开关,按照实际需要修改。
logdir表示日志文件输出的目录。
allow表示这台对时服务器允许哪些客户端同步,以我配置的ip为例,这台对时服务器允许192.168.203.x网段的ip同步时间。
修改完成之后重启chrony服务即可,可以使用chronyc sources -v命令查看时间同步状态。
3.2.客户端配置
vim打开来对应的配置文件/etc/chrony/chrony.conf
配置如下内容:
server 192.168.203.131 iburst minpoll 2 maxpoll 4driftfile /var/lib/chrony/chrony.driftlog tracking measurements statisticslogdir /var/log/chronyrtcsyncmakestep 0.1 -1maxchange 500 10 3logchange 1mailonchange root@localhost 100
其中:
server表示需要和哪一台对时服务器对时,minpoll表示最小的同步周期,maxpoll表示最大的同步周期,其单位为秒,结果为2的幂次方,以我配置为例同步周期在 4-16s之间,特别注意:最小同步周期一般不会配小于64s,如果配置的对时服务器是公网的服务器,则不会按照你配置的最小同步周期去同步。
driftfile用来保存系统时钟的漂移值,可选配置,没什么大用。
log 和 logdir同服务端配置说明。
rtcsync用于在系统时间同步之后,将调整后的系统时间写入硬件时钟,以确保在下次启动时,硬件时钟提供正确的时间。
makestep用来控制立即同步时间,例如客户端时间和服务端时间相差了100s,如果不配置makestep参数,那么客户端会渐进式调整时间差,而如果配置了makestep,客户端会立即同步时间差,第一个参数表示相差的时间间隔,第二个参数表示调整的次数,-1表示不限制调整次数。
maxchange用来控制大的时间调整次数,主要是用来解决第一次开机或者chrony服务启动,时间偏差较大的问题,例如客户端重启机器了,然后chrony服务启动发现和服务端时间相差了600s,超过了我配置的500s,但是第二个参数我配置的10,因此客户端仍然会同步时间,随着同步周期的递增,第二个参数会逐渐减1变为0,如果第二个参数减到0了,还是有时间差超过500s,那么第三个参数会逐渐减1变为0,如果第三个参数减到0了程序将会退出。其源码如下:
logchange表示超过配置的阈值时间调整将会记录日志到文件中,如下:
mailonchange表示超过配置的阈值时间调整会发送邮件到邮箱,邮件路径一般为:/var/mail
4.chronyc使用
命令行直接输入chronyc即可,然后会进入另外一个视图模式,可以使用tab查看支持的命令,并使用命令设置相关参数。
例如:
minpoll 192.168.203.131 2 //设置最小时间同步间隔
maxpoll 192.168.203.131 4 //设置最大时间同步间隔
sources -v //查看同步状态
5.相关注意点
配置文件按照配置完成之后可能会不生效,需要修改chrony相关的启动参数
修改文件:/usr/lib/systemd/scripts/chronyd-starter.sh,像EFFECTIVE_DAEMON_OPTS变量中追加-l /var/log/chrony/test.log -f /etc/chrony/chrony.conf参数,指定日志输入文件和启动配置文件。
如果有配置不会使用或者其他问题,可对照源码解决。
6.相关链接
chrony官方配置文档链接:chrony – chrony.conf(5),需按照自己的版本选择。
chrony源码下载链接:chrony – Download