一、Chrony简述
chrony是网络时间协议(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地且更准确地同步系统时钟,请注意,ntpd仍然包含其中以供需要运行NTP服务的客户使用。
两个主要程序:chronyd和chronyc
chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿
chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作
服务unit文件: /usr/lib/systemd/system/chronyd.service
监听端口: 323/udp,123/udp
配置文件: /etc/chrony.conf
二、环境配置:
1、关闭firewalld防火墙
2、关闭SELinux
3、chrony与ntp都是时间同步软件,两个软件不能够同时开启,会出现时间冲突
三、NTP/Chrony对比
使用chronyd服务平滑同步时间的方式要优于crontab + ntpdate,因为ntpdate同步时间会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响,例如:sleep、timer等,且chronyd服务可以在修正时间的过程中同时修正CPU tick。
1、chrony的优势
1、更快的同步只需要数分钟而非数小时时间,从而最大程度减少时间和频率误差,这对于并非全天24小时的运行的台式计算机或系统而言非常有用;
2、能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致赛事中频率发生比变化的节能技术;
3、在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响;
4、在应对临时非对称延迟时(例如大规模下载造成链接饱和等情况)提供了更好的稳定性;
5、无需对时间服务器进行定期轮询,因此具备间歇性网络连接(如网络不稳定的场景)的系统仍然可以快速同步时钟。
2、ntp能做,chrony做不到的
ntp支持RFC 5905的所有操作模式,包括广播、多播和manycast服务器/客户端。然而,广播和多播模式本质上不如普通的服务器/客户机模式准确和安全(即使有身份验证),通常应该避免。
ntp支持自动密钥协议(RFC 5906)来使用公钥加密对服务器进行身份验证。请注意,该协议已被证明是不安全的,并且已被NTS(RFC 8915)淘汰。
ntp已经被移植到更多的操作系统中。
ntp包含大量用于各种硬件参考时钟的驱动程序。chrony需要其他程序(如gpsd或ntp refclock)通过SHM或SOCK接口提供参考时间。
3、chrony可以比ntp做得更好
chrony可以在访问时间参考是断断续续的环境中有效地执行。ntp需要定期对引用进行轮询才能正常工作。
chrony通常可以更快地同步时钟,并具有更好的时间精度。
chrony快速适应时钟速率的突然变化(例如,由于晶体振荡器的温度变化)。ntp可能需要很长时间才能重新安定下来。
chrony即使在网络拥塞时间较长的情况下也能表现良好。
默认配置中的chrony从不占用时间来不打乱其他正在运行的程序。ntp也可以配置为从不步进时间,但是在这种情况下,它必须使用不同的方法来调整时钟(daemon循环而不是内核规程),这可能会对时钟的准确性产生负面影响。
chrony可以在更大的范围内调整时钟的速率,这使得它甚至可以在时钟中断或不稳定的机器上运行(例如在某些虚拟机中)。
chrony更小,占用的内存更少,只有在需要时才会唤醒CPU,这样更省电。
4、chrony可以做ntp做不到的事情
chrony支持网络时间安全(NTS)认证机制。
chrony在Linux上支持硬件时间戳,这允许在本地网络中进行非常稳定和准确的同步。
chrony为独立网络提供支持,无论时间校正的唯一方法是手动输入(例如,由管理员查看时钟)。chrony可以查看在不同更新时更正的错误,计算出计算机获得或丢失时间的速率,并使用此估计值来随后调整计算机时钟。
chrony支持计算实时时钟的增益或丢失率,即在计算机关闭时保持时间的时钟。当系统引导时,它可以使用这些数据从实时时钟的修正版本设置系统时间。到目前为止,这些实时时钟工具仅在Linux上可用。
四、chrony服务安装
1、查看chrony是否安装,如果没有,先安装
yum -y install chrony
2、查看chroncy服务的状态,如果关闭,先开启,并且设置开机自启动
systemctl status chrony # 查看状态
systemctl start chronyd # 开启服务
systemctl enable chronyd # 设置开机自启
3、添加阿里云的时间服务器,并且设置允许列表
vim /etc/chrony.conf
#将原有的pool注释掉,并添加阿里云的时间服务器
#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 ntp.aliyun.com iburst
#允许其它客户端连接到此台时钟服务器
allow all
4、重启chronyd服务,否则配置文件不生效,重启之后查看时间同步状态
systemctl restart chronyd # 重启chronyd
timedatectl status --查看时间同步状态
# timedatectl
Local time: Sat 2023-01-07 13:06:46 CST
Universal time: Sat 2023-01-07 05:06:46 UTC
RTC time: Sat 2023-01-07 05:06:47
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes --yes显示同步成功
NTP service: active
RTC in local TZ: no
5、查看ntp_servers,MS一栏显示^*表示成功同步
# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- 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
===============================================================================
^* 203.107.6.88 2 6 177 29 +632us[+1494us] +/- 30ms
五、内网时间服务器同步
第二台机器只需将/etc/chroncy.conf文件里的server改为第一台机器,从第一台服务器同步时间即可,编辑完成后重启服务,查看同步状态显示^*表示成功
# vim /etc/chrony.conf
server 192.168.245.128 iburst
# systemctl restart chronyd # 重启chronyd
# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.245.128 6 10 377 1011 +14us[ +19us] +/- 180us
将第一台服务器所有同步的时钟服务器注释掉,并将本地层级设置为6
vim /etc/chrony.conf
#server ntp.aliyun.com iburs
local stratum 6
重启并验证
# systemctl restart chronyd
# chronyc tracking
Reference ID : 7F7F0101 ()
Stratum : 6 # 层级为6
Ref time (UTC) : Thu Jan 05 06:05:52 2023
System time : 0.000000000 seconds slow of NTP time
Last offset : +0.000000000 seconds
RMS offset : 0.000000000 seconds
Frequency : 10.785 ppm slow
Residual freq : +0.000 ppm
Skew : 0.000 ppm
Root delay : 0.000000000 seconds
Root dispersion : 0.000000000 seconds
Update interval : 0.0 seconds
Leap status : Normal
查看第二台机器同步状态和层级
# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.245.128 3 6 377 42 -192us[ -212us] +/- 29ms
# ^*表示同步成功
# chronyc tracking
Reference ID : C0A8F580 (192.168.245.128)
Stratum : 7 # 层级为7
Ref time (UTC) : Sat Jan 07 05:33:33 2023
System time : 0.000015953 seconds slow of NTP time
Last offset : -0.000038244 seconds
RMS offset : 0.000038244 seconds
Frequency : 7.492 ppm slow
Residual freq : -1.646 ppm
Skew : 8.631 ppm
Root delay : 0.000294424 seconds
Root dispersion : 0.000036866 seconds
Update interval : 2.0 seconds
Leap status : Normal
六、常用chrony命令
命令 | 说明 |
---|---|
chronyd -q 'server ntp.ntsc.ac.cn iburst' | 临时同步时间 |
chronyc -n sources -v | 查看时间同步服务器列表 |
accheck | 检查NTP访问是否对特定主机可用 |
activity | 该命令会显示有多少NTP源在线/离线 |
add server | 手动添加一台新的NTP服务器 |
clients | 在客户端报告已访问到服务器 |
delete | 手动移除NTP服务器或对等服务器 |
settime | 手动设置守护进程时间 |
tracking | 显示系统时间信息 |
评论区