我在数据中心 (VMware ESXi) 中有 3 台服务器运行 CentOS 7.9.2009。这些服务器报告时间未同步。我在内部 VMware ESXi 服务器上运行了一个类似的测试环境,服务器同步了时间。Ok。生产环境最初以完全相同的方式设置 - 但显然会随着时间的推移使用软件包更新进行更新。因此它们“应该”是相同的 - 但我不再能保证这一点。ESXi 服务器都是版本 6。
服务器最初是使用“ntpd”配置的 - 但在过去几天解决这个问题时,我发现“Chrony”似乎是 CentOS 7 上的更好选择。因此,我重新配置了服务器以使用 Chrony - 但问题仍然存在。
编辑:用于更改为 Chrony 的步骤
- yum 安装 chrony
- systemctl 停止 ntpd
- systemctl 禁用 ntpd
- systemctl 启动 chronyd
- systemctl 启用 chronyd
因此当我使用时,timedatectl
我得到这个输出:
Local time: Mon 2021-08-02 09:14:43 CEST
Universal time: Mon 2021-08-02 07:14:43 UTC
RTC time: Mon 2021-08-02 07:16:34
Time zone: Europe/Copenhagen (CEST, +0200)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2021-03-28 01:59:59 CET
Sun 2021-03-28 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2021-10-31 02:59:59 CEST
Sun 2021-10-31 02:00:00 CET
如果我重新启动 Chrony,systemctl restart chronyd
则几秒钟后timedatectl
会报告:
Local time: Mon 2021-08-02 09:26:06 CEST
Universal time: Mon 2021-08-02 07:26:06 UTC
RTC time: Mon 2021-08-02 07:26:08
Time zone: Europe/Copenhagen (CEST, +0200)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2021-03-28 01:59:59 CET
Sun 2021-03-28 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2021-10-31 02:59:59 CEST
Sun 2021-10-31 02:00:00 CET
过了一段时间(几分钟)它就恢复了NTP synchronized: no
。
当我跑步时ntpstat
我得到:
synchronised to NTP server (217.198.219.102) at stratum 2
time correct to within 124123 ms
polling server every 64 s
或者
unsynchronised
poll interval unknown
在最后一种情况下,一段时间后它将再次显示第一个输出。但是“在...毫秒内”似乎相当高???
由于我可以通过重新启动 Chrony 来同步它,因此我猜防火墙/网络没有问题。我使用默认的 Chrony 配置(就像我之前对 ntpd 所做的那样)。
VMwaretools 服务已安装并启动(open-vm-tools,http://github.com/vmware/open-vm-tools)。
我将非常感激任何关于进一步排除故障的建议 - 并最终修复它;-)
提前致谢!
/约翰
答案1
我认为我现在已经解决了。
基本上,chrony 认为时间变化太大。因此,我通过 Peter Rosenberg 的链接(以及它所链接的资源)找到了答案……
我把这个信息放在这里以防别人搜索到它。
该过程的第一步是获取来自 chronyd 服务的状态:
systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-08-02 22:23:39 CEST; 10h ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 24758 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 24754 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 24756 (chronyd)
CGroup: /system.slice/chronyd.service
└─24756 /usr/sbin/chronyd
Aug 03 08:41:24 db1.aqua.dtu.dk chronyd[24756]: Selected source 162.159.200.1
Aug 03 08:41:24 db1.aqua.dtu.dk chronyd[24756]: System clock wrong by 5.118732 seconds, adjustment started
Aug 03 08:41:26 db1.aqua.dtu.dk chronyd[24756]: Can't synchronise: no majority
Aug 03 08:41:33 db1.aqua.dtu.dk chronyd[24756]: Selected source 162.159.200.123
Aug 03 08:41:33 db1.aqua.dtu.dk chronyd[24756]: System clock wrong by 1.761045 seconds, adjustment started
Aug 03 08:42:29 db1.aqua.dtu.dk chronyd[24756]: Can't synchronise: no majority
Aug 03 08:42:30 db1.aqua.dtu.dk chronyd[24756]: Selected source 192.36.143.130
Aug 03 08:42:30 db1.aqua.dtu.dk chronyd[24756]: System clock wrong by 4.500188 seconds, adjustment started
Aug 03 08:43:34 db1.aqua.dtu.dk chronyd[24756]: System clock wrong by 4.842190 seconds, adjustment started
Aug 03 08:44:39 db1.aqua.dtu.dk chronyd[24756]: Can't synchronise: no selectable sources
这显然表明有些地方出了问题。因此,下一步是:
chronyc sources -v
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^~ time.cloudflare.com 3 6 377 1 -17.0s[ -17.0s] +/- 1318us
^~ Time100.Stupi.SE 1 6 377 2 -16.9s[ -16.9s] +/- 4458us
^~ time.cloudflare.com 3 6 377 53 -11.2s[ -11.2s] +/- 1306us
^~ n1.taur.dk 1 6 377 60 -10.4s[ -10.4s] +/- 4964us
注意time too variable
所有服务器....
并且chronyc tracking
还显示时间根本没有对齐:
Reference ID : C0248F82 (Time100.Stupi.SE)
Stratum : 2
Ref time (UTC) : Tue Aug 03 06:46:05 2021
System time : 132.970306396 seconds slow of NTP time
Last offset : -4.842189789 seconds
RMS offset : 7.720179081 seconds
Frequency : 63.104 ppm slow
Residual freq : -81143.852 ppm
Skew : 90.130 ppm
Root delay : 0.008654756 seconds
Root dispersion : 19.424978256 seconds
Update interval : 58.2 seconds
Leap status : Normal
在阅读了文章中提到的参考资料后,我尝试调整文件makestep
中的内容/etc/chrony.conf
以强制更新。我已经将 NTP 池服务器更改为“更靠近”应用程序服务器,因此配置文件现在如下所示:
server 0.dk.pool.ntp.org iburst
server 1.dk.pool.ntp.org iburst
server 2.dk.pool.ntp.org iburst
server 3.dk.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1 -1
rtcsync
现在它已经运行了一段时间并且似乎保持时间同步;-)
编辑:
正如 Paul Gear 指出的那样,我还没有解决这个问题......时间仍然在流逝。
使用时/usr/bin/vmware-toolbox-cmd timesync status
我发现,在生产服务器上,与 ESXi 主机的时间同步已启用(!!!)。我不知道这是怎么发生的?我最初配置并上传到数据中心的虚拟机没有启用它。无论如何,显然,它不应该与主机同步时间。
使用以下命令可以很容易地禁用它:/usr/bin/vmware-toolbox-cmd timesync disable
现在我们有了更现实的数据chronyc sources -v
:
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- sweetums.eng.tdc.net 2 7 377 36 +30us[ +30us] +/- 45ms
^* 77.68.139.83 1 7 377 92 -191us[ -184us] +/- 4742us
^- 152.115.59.244 2 7 377 39 +99us[ +99us] +/- 31ms
^- pf.safe-con.dk 2 7 377 42 +359us[ +359us] +/- 29ms
也chronyc tracking
:
Reference ID : 4D448B53 (77.68.139.83)
Stratum : 2
Ref time (UTC) : Tue Aug 03 10:45:26 2021
System time : 0.000008465 seconds slow of NTP time
Last offset : +0.000006720 seconds
RMS offset : 7.358564854 seconds
Frequency : 57.633 ppm slow
Residual freq : +0.001 ppm
Skew : 0.340 ppm
Root delay : 0.009058274 seconds
Root dispersion : 0.000351956 seconds
Update interval : 128.8 seconds
Leap status : Normal
现在已经顺利运行了半个小时,所以我相信这就是解决方案。感谢您的意见!!!
答案2
考虑使用此处建议的最小客户端设置:https://www.golinuxcloud.com/configure-chrony-ntp-server-client-force-sync/ 当达到漂移的阈值时,它会放弃同步,这似乎发生在你身上。