Linux时间偏差处理 | 启用Chrony时间同步服务 作者: bluish 时间: 2024-03-27 分类: 折腾 前情 在OSS下载报错(Cloudreve阿里云OSS下载报错:Request has expired)的问题处理中,我们发现问题原因是服务器时间错误。我们利用宝塔面板的linux工具箱手动同步时间,但经过数天后时间仍出现偏差。 于是,我们在宝塔计划任务中将“同步时间”设定为每天执行,该方式虽然能有效地使时间处于整体正确状态,但执行日志中显示每天都会产生数秒的偏差,没能从根源上解决问题。 问题处理 考虑到另一台同等使用宝塔和相关业务的服务器时间并不会偏差,认为是此台服务器“曾经从华为云迁移至阿里云”的BUFF所带来的问题。 在阿里云文档中(通过时间同步服务确保实例时间准确),我们了解到阿里云会采用Chrony服务以替代传统NTP服务,Chrony相较NTP有更高的精度及稳定性,随考虑给此台服务器装上Chrony时间同步服务。 时间同步服务使用场景时间同步精度稳定性简介Chrony服务适用于高精度、高稳定性、自动化等场景。较高能够更好地适应高延迟和不稳定的网络环境。Chrony是一个实现网络时间协议(NTP)的软件包,用于同步计算机的系统时间与世界各地的NTP服务器。Chrony特别适合在变化的网络环境中运行,能够以快速和高效的方式调整系统时间。更多信息,请参见Chrony。NTP服务适用于大多数无需太高精度要求的普通场景。正常仅能适应一定程度的网络不稳定。NTP是一种经典的时间同步服务,是NTP协议的一个实现。NTP适用于长期运行的服务器,特别是在网络条件比较稳定的环境下。更多信息,请参见NTP。Chrony服务和NTP服务介绍与对比 问题解决 | Chrony服务的安装与配置 查询当前服务 查看ECS实例中当前使用的时间同步服务,返回图1代表使用Chrony服务,返回图2代表使用NTP服务。 sudo ps aux | grep -E "ntpd|chronyd" ![][1]![][2] 安装Chrony服务 yum install chrony #CentOS为例 配置NTP服务器地址 执行以下命令,进入chrony配置文件。 sudo vim /etc/chrony.conf 以下为阿里云服务器原生chrony.conf文件: # Use Alibaba NTP server # Public NTP # Alicloud NTP server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst # Ignore stratum in source selection. stratumweight 0.05 # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/drift # Enable kernel RTC synchronization. rtcsync # In first three updates step the system clock instead of slew # if the adjustment is larger than 10 seconds. makestep 10 3 # Allow NTP client access from local network. #allow 192.168/16 # Listen for commands only on localhost. bindcmdaddress 127.0.0.1 bindcmdaddress ::1 # Disable logging of client accesses. noclientlog # Send a message to syslog if a clock adjustment is larger than 0.5 seconds. logchange 0.5 logdir /var/log/chrony #log measurements statistics tracking a.屏蔽不需要的NTP服务器 在配置文件中找到server <NTP服务器> minpoll 4 maxpoll 10 iburst的信息后,按i键编辑文件,在您暂时不需要的NTP服务器句首前添加符号#进行隐藏。 b.添加新的NTP服务器 您可以在配置文件中添加新的NTP服务器,格式为:server <NTP服务器> minpoll 4 maxpoll 10 iburst。 完成编辑后按Esc键并输入:wq保存退出。 经典网络内网专有网络VPC内网公网ntp1.cloud.aliyuncs.comntp2.cloud.aliyuncs.comntp3.cloud.aliyuncs.comntp4.cloud.aliyuncs.comntp5.cloud.aliyuncs.comntp6.cloud.aliyuncs.comntp.cloud.aliyuncs.comntp7.cloud.aliyuncs.comntp8.cloud.aliyuncs.comntp9.cloud.aliyuncs.comntp10.cloud.aliyuncs.comntp11.cloud.aliyuncs.comntp12.cloud.aliyuncs.comntp.aliyun.comntp1.aliyun.comntp2.aliyun.comntp3.aliyun.comntp4.aliyun.comntp5.aliyun.comntp6.aliyun.comntp7.aliyun.com阿里云NTP服务器地址列表 启动Chrony服务 依次执行以下命令,启动chronyd服务并设置开机自启动。 sudo systemctl start chronyd.service sudo systemctl enable chronyd.service 执行以下命令,查看本机时间同步状态,用于验证服务是否已启动——“Leap status : Normal” sudo chronyc tracking 执行以下命令,查看时间同步服务器列表。 sudo chronyc -n sources -v 检查对照 启动Chrony服务后,我们可以再次通过sudo ps aux | grep -E "ntpd|chronyd"代码验证。 通过以下代码,您还可以实时观察服务器当前时间,以便与北京时间对照。或者,您可以启用后等待数日,在宝塔面板中手动执行“定时任务—时间同步”,在日志中观察服务器时间偏差值是否正常。 watch -n 0.1 date #表示每n秒执行date,n最小为0.1s [1]: https://bluish.cc/usr/uploads/2024/03/p762116.png [2]: https://bluish.cc/usr/uploads/2024/03/p762118.png Linux时间偏差处理 | 启用Chrony时间同步服务 https://bluish.net/archives/1993/ 作者 bluish 发布时间 2024-03-27 许可协议 CC BY-SA 4.0 复制版权信息 标签: debug, 阿里云, linux, 服务器, 宝塔
[...]</Error>通过报错信息及文档了解到错误为“URL签名已过期”,更确切为ServerTime超过了Expires时间,从代码中亦能看到ServerTime>2024-02-20T08:03:14超过了Expires>2024-02-20T07:32:55。使用date或date -R查看服务器系统时间,对照标准时间,确有出入。因此判断问题原因为——服务器系统时间错误 解[...]