1、NTP网络时间协议:它是通过网络在计算机系统之间进行时钟同步的网络协议。换言之,它可以让那些通过 NTP 或者 Chrony 客户端连接到 NTP 服务器的系统保持时间上的一致(它能保持一个精确的时间)。
NTP 在公共互联网上通常能够保持时间延迟在几十毫秒以内的精度,并在理想条件下,它能在局域网下达到低于一毫秒的延迟精度。它使用用户数据报协议(UDP)在端口 123 上发送和接受时间戳。它是个 C/S 架构的应用程序
2、chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件/etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对于NTP时间同步软件,占据很大优势,其用法也很简单。
3、Chrony有两个核心组件,分别是:
chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。
chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
下面CentOS7环境下搭建基于chrony的NTP服务器
CentOS7 10.20.10.93 chrony服务器
CentOS7 10.20.10.158 chrony客户端
1、yum安装chrony
2、vi /etc/chrony.conf
注释掉默认的ntp.org时钟源,添加一个NTP服务器时钟源,例如添加ntp.aliyun.com
然后设置NTP客户端的允许IP地址范围,allow 10.20.0.0/16
关于配置文件的解释如下
cat /etc/chrony.conf
# 使用pool.ntp.org项目中的公共服务器。
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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
# 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
driftfile /var/lib/chrony/drift
# chronyd根据需求减慢或加速时间调整,
# 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。
# 该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。
# 只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。
makestep 1.0 3
# 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
rtcsync
# Enable hardware timestamping on all interfaces that support it.
# 通过使用hwtimestamp指令启用硬件时间戳
#hwtimestamp eth0
#hwtimestamp eth1
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
#allow 192.168.0.0/16
#deny 192.168/16
# Serve time even if not synchronized to a time source.
local stratum 10
# 指定包含NTP验证密钥的文件。
#keyfile /etc/chrony.keys
# 指定日志文件的目录。
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
3、启动chronyd服务并加入开机自启动
systemctl start chronyd.service
systemctl enable chronyd.service
systemctl status chronyd.service
4、修改系统时间进行测试
运行 chronyc sources 命令去显示当前时间源的信息 -v显示详细信息
从上图可以看到与时间源相差-26327s
这时手动重启服务进行校准systemctl start chronyd.service
5、Chrony客户端的配置
rpm -aq | grep chrony,检查是否安装过chrony
若没有,使用yum install -y chrony进行安装
vi /etc/chrony.conf
然后启动并加入开机自启动
systemctl start chronyd.service
systemctl enable chronyd.service
systemctl status chronyd.service
1)去检查 chrony 的追踪状态chronyc tracking
2)运行 chronyc sources命令去显示当前时间源的信息
3)chronyc sourcestats -v命令显示有关 chronyd 当前正在检查的每个源的漂移率和偏移估计过程的信息
4)当 chronyd 配置为 NTP 客户端,能通过 chronyc ntpdata 命令向每一个 NTP 源发送/接收时间戳模式和交错模式的报告
5)确认你的 NTP 源的状态,是否在线,只需要运行chronyc activity
6、chronyc也可以进入交互模式
7、当然依然可以用ntpdate命令进行同步
本文参考
https://www.linuxprobe.com/centos7-chrony-time.html
https://linux.cn/article-10250-1.html
https://linux.cn/article-10820-1.html