跳到主要内容

chrony

Chrony 时间同步和配置解析

Chrony 有两个核心组件:一个是 chronyd 守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。另一个是 chronyc,它提供一个用户界面,用于监控性能并进行多样化的配置。chronyc 可以在 chronyd 实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

  • 端口 123/udp 为默认 NTP 监听端口,对外提供 NTP 服务,可配置 port 参数来修改。
  • 端口 323/udp 为默认管理端口。可配置 cmdport 参数来修改。
为什么推荐 Chrony 而不是 NTPD
  1. Chrony 可以更快的同步只需要几分钟而不是几小时,从而最大程度减少了时间和频率误差,对于并非全天 24 小时运行的虚拟计算机而言非常有用,
  2. 能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术(power-saving technologies)而言非常有用,
  3. Chrony 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时

安装配置

  • HostA Server 以本地时间对外提供时间服务,且同步外部 NTP Server: ntp.aliyun.com
  • HostB Client 节点同步 HostA
注意

先确保停止所有节点的 NTPD 服务

sudo systemctl disable --now ntpd
HostA Server 节点
sudo yum install -y chrony

sudo sed -i -e 's/^server/#&/' \
-e '1a server ntp.aliyun.com iburst minpoll 4 maxpoll 4' \
-e '1a server 127.127.1.0' \
-e '1a local stratum 10' \
-e '1a allow all' \
/etc/chrony.conf
#allow 127.0.0.1/8 #新增允许本地客户端访问
#allow x.x.0.0/16 #新增允许集群网网段访问,这里按照要求替换为集群的管理网段。
#local stratum 10 #取消注释,允许同步本地时间
sudo systemctl enable --now chronyd
  1. 从节点修改Chrony.conf配置文件
HostB Client 节点
sudo sed -i -e 's/^server/#&/' \
-e '1a server <HostA IP> iburst minpoll 4 maxpoll 4' \
/etc/chrony.conf

sudo systemctl enable --now chronyd

基本命令

一种是交互式模式,一种是命令行模式。输入 chronyc 回车就进入交互式模式

# 查看时间同步源服务器的信息
chronyc sources -v #`*` 代表当前同步的源,`-` 代表通过组合算法计算后排除的源。
# 查看时间同步源状态
chronyc sourcestats -v
# 查看时间同步源在线/离线
chronyc activity
# 在客户端报告已访问到服务器
chronyc clients
# 检查 NTP 访问是否对特定主机可用
chronyc accheck
# 手动添加一台新的 NTP 服务器
chronyc add server
# 手动移除 NTP 服务器或对等服务器
chronyc delete
# 在客户端报告已访问到服务器
chronyc clients
# 手动设置守护进程时间
chronyc settime
# 校准时间服务器,显示系统时间信息
chronyc tracking
# 强制同步时间
chronyc -a makestep

参数解释

cat /etc/chrony.conf |grep -v -E "^#|^$"
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
makestep 1.0 3
rtcsync
logdir /var/log/chrony

引文