chrony时钟同步服务

介绍

Chrony 是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器同步,因此让你的时间保持精确。Chrony既可以作为时钟同步服务端,也可以作为时钟同步客户端,它由两个程序组成,分别是 chronyd 和 chronyc。

端口

Chrony启动会监听两个端口udp 323、udp 123,udp 323监听本地服务,udp 123是我们熟知的NTP(Network Time Protocol)协议,server/client之间通过udp 123端口进行网络时钟同步,如果设置防火墙规则,放行udp 123端口就行

iptables -I INPUT -p udp -m udp -s 10.111.56.0/24 --dport 123 -j ACCEPT

配置文件

chrony配置

命令使用

# 查看时间同步源(-v显示详细信息)

chronyc sources -v

# 查看时间源同步状态

chronyc sourcestats

# 查看在线情况

chronyc activity

# 查看同步详情

chronyc tracking

# 强制同步系统时钟

chronyc -a makestep

# 查看时间同步状态

timedatectl status

# 查看时区列表

timedatectl list-timezones

# 修改时区

timedatectl set-timezone Asia/Shanghai

# 修改日期时间

timedatectl set-time "2022-09-02 12:00:00"

# 开启/关闭网络时钟同步

timedatectl set-ntp yes|no

chronyc sources 输出结果解析

chronyc sources -v

M

 这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。

S

 此列指示源的状态。

* 表示chronyd当前同步到的源。

+ 表示可接受的信号源,与选定的信号源组合在一起。

– 表示被合并算法排除的可接受源。

? 指示已失去连接性或其数据包未通过所有测试的源。它也显示在启动时,直到从中至少收集了3个样本为止。

x 表示chronyd认为是虚假行情的时钟(即,其时间与大多数其他来源不一致)。

〜 表示时间似乎具有太多可变性的来源。

Name/IP address

这显示了源的名称或IP地址,或参考时钟的参考ID。

Stratum

这显示了来源的层,如其最近收到的样本中所报告的那样。层1表示一台具有本地连接的参考时钟的计算机。与第1层计算机同步的计算机位于第2层。与第2层计算机同步的计算机位于第3层,依此类推。

Poll

这显示轮询源的速率,以秒为单位的时间间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd会根据当前情况自动更改轮询速率。

Reach

这显示了源的可达性寄存器以八进制数字打印。寄存器有8位,并在每个从源接收或丢失的数据包上更新。值377表示从最后八次传输中收到了对所有用户的有效答复。

LastRx

此列显示多长时间前从来源接收到了最后一个好的样本(在下一列中显示)。未通过某些测试的测量将被忽略。通常以秒为单位。字母m,h,d或y表示分钟,小时,天或年。

Last sample

此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。可以用ns(表示纳秒),us (表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。

+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。

chronyc tracking输出结果解析

chronyc tracking

Reference ID

参考时钟的参考ID

Stratum

本地时钟源层级

System time

系统时间,显示系统跟NTP时间偏差量

Leap status

跳跃状态,一般会显示正常状态Normal或未同步状态Not synchronised

主要需要关心参考ID是否有显示远程NTP服务器信息,本地时钟源层级是否正确,跳跃状态是否正常。

timedatectl status输出结果解析

timedatectl status

Local time

本地时间

Universal time

通用时间

Time zone

时区

NTP enabled

NTP状态,开启yes,关闭no

NTP synchronized

跟NTP时钟源同步状态,yes正常同步,no未同步

一般需要关心时区是否正确,NTP enabled、NTP synchronized状态都显示yes

案例

ceph时钟偏差告警,集群状态显示clock skew detected on mon.hostname

查看时钟源状态

chronyc sources -v

S列全显示X,说明当前chrony不能跟现有时钟源进行同步

查看同步详情

chronyc tracking

Reference ID没有获取到时钟源服务信息,Stratum层级显示0,Leap status显示Not synchronised

查看时间同步状态

timedatectl status

NTP synchronized显示no,同步状态也是失败的

强制同步

chronyc -a makestep

在能获取到正常时钟源的情况下可用

处理

重启chrony时钟同步依然无效,多个时钟源时间偏差较大被判定为无效时钟源未同步。处理思路是多个时钟源时间偏差较大就设置单个时钟源,本地服务器跟远程时钟服务器时间偏差较大也会造成不同步(https://bugzilla.redhat.com/show_bug.cgi?id=1525833),可以先手动同步一下

先停止chrony服务

 systemctl stop chronyd

手动同步时间

chronyd -q ‘server ntp6.aliyun.com iburst’

启动服务

systemctl start chronyd

检查时间同步状态已恢复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据