NTP:网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
Linux 下原本有 ntpd 时间同步服务,配置文件:/etc/ntp.conf
但从 RHEL 7.2 和 SLES 12 开始 chrony 开始被采用,它是NTP的另一种实现。
chrony 可以同时做为 ntp 服务的客户端和服务端;安装完后有两个程序 chronyd、chronyc:
chronyd 是一个 daemon 守护进程,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具。
注意:系统上的 ntpd 和 chronyd 服务运行一个即可,同时运行将可能导致时间同步冲突。
这边先对 chrony 的配置文件进行解析: /etc/chrony.conf
# 时钟服务器地址
server nt1.aliyun.com
# 指定包含 NTP 身份验证密钥的文件。
local stratum 8
# 指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。
# 默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级
stratumweight 0
# chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿。
# 甚至可能的话,会从时钟服务器获得较好的估值。
driftfile /var/lib/chrony/drift
# rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
rtcsync
# 如果系统时钟的偏移量大于10秒,则允许系统时钟在前三次更新中步进。
makestep 10 3
# allow / deny - 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。
allow 192.168.0.0/24
# 指定包含 NTP 身份验证密钥的文件。
keyfile /etc/chrony.keys
# noclientlog
logchange 0.5
logdir /var/log/chrony
log measurements statistics tracking
修改之后需要重启chronyd服务:
systemctl restart chronyd
并确认客户端和服务端之间的防火墙没有屏蔽通信端口。
其中,
对用来做时间源的服务端:
allow 192.168.0.0/24 #运行哪些客户端来同步本机的时间
local stratum 10 # 取值 1-15, 1表示和准确时间源直接连接,到10则表示准确时间源非常远,不可靠。
这样不会和网络时间同步。
对用来做客户端的:
server nt1.aliyun.com #指定时钟同步服务器
PS:详情参考文档 man 5 chrony.conf
关于chronyc 的命令行工具:
# 检查NTP访问是否对特定主机可用
chronyc accheck
# 查看 ntp_servers
chronyc sources
# 查看 ntp_servers 状态
chronyc sourcestats
# 查看 ntp_servers 是否在线
chronyc activity
# 查看 ntp 详细信息
chronyc tracking