一、注意事项
·chrony 和 ntpd 二者冲突,建议从二者中选一个使用,另外一个可以卸载掉。如果同时安装了 chrony 和 ntpd,推荐你使用 chrony,禁用 ntpd 服务,禁用 ntpd 命令为:sudo systemctl disable –now ntpd。(Ubuntu 或者 Debian 可能需要使用 sudo systemctl disable –now ntp 命令来禁用 ntpd)
·如果部署 NTP 服务的机器也需要作为时钟源对外提供 NTP 服务,那么需要确保安全组放通 UDP 123端口,若未开放该端口,请参见 添加安全组规则 进行放行。
二、安装 chrony
TencentOS/CentOS/RHELUbuntu/Debiansudo yum install chronysudo apt install chrony
三、配置 chrony
TencentOS/CentOS/RHELUbuntu/Debianchrony 配置文件位于 /etc/chrony.conf。chrony 配置文件位于 /etc/chrony/chrony.conf。
如下是配置文件示例。
# drift 文件用于记录之前时钟频率调整(单位是ppm)driftfile /var/lib/chrony/drift# chronyd 开启后的前三次时间调整,且时间差超过1.0秒才跳变调整时间makestep 1.0 3# 允许内核定期将系统时间同步到 RTC 时间rtcsync# TAI-UTC offset 和闰秒的信息leapsectz right/UTC# 日志输出到/var/log/chronylogdir /var/log/chrony# 打印每个 ntp 包的 rawmeasurements,一般在调试或问题排查时使用log rawmeasurements# 打印 tracking 日志,用来记录系统时钟的整体状态log tracking# (可选)监听 NTP 端口(默认是 udp 123),作为 NTP server 向其他机器提供 NTP 服务# allow all# 配置 NTP 服务器server time1.tencentyun.com iburstserver time2.tencentyun.com iburstserver time3.tencentyun.com iburstserver time4.tencentyun.com iburstserver time5.tencentyun.com iburst
四、启动 chrony
TencentOS/CentOS/RHELUbuntu/Debiansudo systemctl restart chronyd # 重启 chronyd 服务sudo systemctl enable chronyd # 开机自动启动 chronydsudo systemctl restart chrony # 重启 chrony 服务sudo systemctl enable chrony # 开机自动启动 chrony
五、检查 chrony 状态
TencentOS/CentOS/RHELUbuntu/Debiansystemctl status chronyd # 查看 chronyd 服务状态,Active: active (running)表示正在运行systemctl is-enabled chronyd # 查看 chronyd 是否开机自动启动,enabled 表示开机自动启动systemctl status chrony # 查看 chrony 服务状态,Active: active (running)表示正在运行systemctl is-enabled chrony # 查看 chrony 是否开机自动启动,enabled 表示开机自动启动
chronyd -Q # 向 NTP 服务器查询当前时间差,不修改系统时间chronyc sources -v # 查看时钟源的状态,有时钟源被星号*标记表示已同步chronyc tracking # 查看系统时钟状态
·chronyc sources -v 指标简要说明
·M:对端类型,^表示 server。
·S:*表示最优时钟源,+表示按统计方式(加权平均)合入系统时钟的调整,-表示未合入。
·Name/IP Address:时钟源的域名/IP。
·Stratum:表示时钟源的层级,正常取值1到15,16表示有异常。
·Poll:log2轮询间隔,poll=4表示轮询间隔是24秒,即16秒。
·Reach:表示近8个数据包的到达情况,八进制377表示近8个 ntp 包都没有丢。
·LastRx:距离上一次收到通过校验的 ntp 包过了多久。单位一般为秒,具体以界面显示为准。
·Last sample:用来衡量当前机器与时钟源的时间差,这里几个时间差是统计计算的中间结果。
·chronyc tracking 指标简要说明
·Reference ID:最优时钟源域名/IP。
·Stratum:当前机器的层级。
·Ref time:上次从时钟源计算指标的时间。
·System time:非跳变调整的时间差。
·Last offset:上一次时间差,正数表示本地时钟比服务器时钟快。
·RMS offset:时间差的长期统计均值。
·Frequency:表示如果 chrony 不调整时钟,系统时钟频率会差多少。
·Residual freq:当前时钟频率与最优时钟源频率的差距。
·Skew:频率误差界。
·Root delay:到 stratum-1时钟源的 RTT(roud-time trip)。
·Root dispersion:到 stratum-1时钟源的固有误差。
·Update interval:两次时钟修正的间隔。
·Leap status:闰秒状态。
六、ntpd 操作步骤(不推荐)
注意:TencentOS/CentOS/RHELUbuntu 16 ~ 22/Debian 10, 11sudo yum remove ntpsudo apt remove ntp
七、安装 ntpd
TencentOS/CentOS/RHELUbuntu 16 ~ 22/Debian 10, 11sudo yum install ntp注意:如果安装命令报类似“Unable to find a match: ntp”的错误,则一般是软件源中没有ntp导致。(ntp 包太旧,已经停止维护。)sudo apt install ntpsudo apt install ntpdate注意:一些比较新的发行版,如 Ubuntu 24.04、Debian 12等,软件源已经不再提供ntp,将ntp替换成了ntpsec。这种情况下建议考虑优先使用 chrony 同步时间。
八、配置 ntpd
ntpd 的配置文件一般位于/etc/ntp.conf,如下是配置文件示例。
# 配置 NTP 服务器server time1.tencentyun.com iburstserver time2.tencentyun.com iburstserver time3.tencentyun.com iburstserver time4.tencentyun.com iburstserver time5.tencentyun.com iburst
九、启动 ntpd
TencentOS/CentOS/RHELUbuntu 16 ~ 22/Debian 10, 11sudo systemctl restart ntpd # 重启 ntpd 服务sudo systemctl enable ntpd # 开机自动启动 ntpd sudo systemctl restart ntp # 重启 ntp 服务sudo systemctl enable ntp # 开机自动启动 ntp
十、检查 ntpd 状态
TencentOS/CentOS/RHELUbuntu 16 ~ 22/Debian 10, 11systemctl status ntpd # 查看 ntpd 服务状态,Active: active (running)表示正在运行systemctl is-enabled ntpd # 查看 ntpd 是否开机自动启动,enabled 表示开机自动启动systemctl status ntp # 查看 ntp 服务状态,Active: active (running)表示正在运行systemctl is-enabled ntp # 查看 ntp 是否开机自动启动,enabled 表示开机自动启动
ntpdate -q time1.tencentyun.com # 向 time1.tencentyun.com 这个 NTP 服务器查询当前时间差,不修改系统时间ntpq -p # 查看时钟源的状态,有时钟源被星号*标记表示已同步ntpq -c rv # 查看系统时钟状态
·ntpq -p 指标简要说明
·*, +, -:分别表示最优时钟源、按统计方式(加权平均)合入系统时钟的调整、未合入时钟调整。
·remote:时钟源。
·st:时钟源层级。
·when:上次收到 ntp 包的时间。
·poll:log2轮询间隔,poll=3表示轮询间隔是23秒,即8秒。
·reach:表示近8个数据包的到达情况,八进制377表示近8个 ntp 包都没有丢。
·offset:时间差。
·jitter:用来衡量 offset 的抖动。
·ntpq -c rv 指标简要说明
·rootdelay:到 stratum-1时钟源的 RTT(roud-time trip)。
·rootdisp:到 stratum-1时钟源的固有误差。
·offset:时间差。
·frequency:系统时钟当前频率。
·sys_jitter:不同时钟源间时间差的抖动。
·clk_jitter:系统时钟时间差的抖动。
·clk_wander:用来衡量系统时钟频率的抖动。