NTP/Chrony가 CentOS 7.9(VMware ESXi에서 실행되는 VM)에서 시간 동기화를 유지하지 않음

NTP/Chrony가 CentOS 7.9(VMware ESXi에서 실행되는 VM)에서 시간 동기화를 유지하지 않음

데이터 센터(VMware ESXi)에 CentOS 7.9.2009를 실행하는 서버 3대가 있습니다. 이러한 서버는 시간이 동기화되지 않았다고 보고합니다. 서버가 동기화되는 사내 VMware ESXi 서버에서 유사한 테스트 환경을 실행하고 있습니다. 시간은 괜찮아요. 프로덕션 환경은 원래 정확히 동일한 방식으로 설정되었지만 시간이 지남에 따라 패키지 업데이트로 확실히 업데이트되었습니다. 따라서 그들은 동일해야 합니다. 그러나 더 이상은 보장할 수 없습니다. ESXi 서버는 모두 버전 6입니다.

서버는 원래 "ntpd"를 사용하여 구성되었지만 지난 며칠 동안 이 문제를 해결하면서 "Chrony"가 CentOS 7에서 더 나은 선택인 것 같다는 것을 알게 되었습니다. 따라서 Chrony를 사용하도록 서버를 재구성했지만 여전히 그렇습니다. 문제가 있습니다.

편집: Chrony로 변경하는 데 사용된 단계

  • 냠 크로니 설치해
  • systemctl ntpd 중지
  • systemctl ntpd 비활성화
  • systemctl 시작 크로니드
  • systemctl 크로니드 활성화

그래서 사용하면 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

마지막 경우에는 잠시 후 첫 번째 출력이 다시 표시됩니다. 하지만 "...ms 이내"가 꽤 높은 것 같은데요???

Chrony를 다시 시작하면 동기화할 수 있으므로 방화벽/네트워크는 괜찮은 것 같습니다. 저는 기본 Chrony 구성을 사용합니다(이전에 ntpd에서 했던 것처럼).

VMwaretools 서비스가 설치되고 시작됩니다(open-vm-tools,http://github.com/vmware/open-vm-tools).

이 문제를 추가로 해결하고 결국에는 문제를 해결하기 위한 제안을 주시면 감사하겠습니다 ;-)

미리 감사드립니다!

/남자

답변1

이제 해결한 것 같아요.

기본적으로 크로니는 시간이 너무 다양하다고 생각했다. 그래서 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 호스트와의 시간 동기화가 활성화된(!!!) 것을 발견했습니다. 어떻게 이런 일이 일어났는지 모르겠어요? 제가 원래 구성하고 데이터 센터에 업로드한 VM에서는 이를 활성화하지 않았습니다. 어쨌든 동기화되어서는 안 됩니다. 호스트와 함께하는 시간

다음을 사용하여 비활성화하는 것은 매우 쉽습니다./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

이제 30분 동안 원활하게 실행되었으므로 이것이 해결책이라고 확신합니다. 의견을 보내주셔서 감사합니다!!!

답변2

여기에 제안된 대로 최소 클라이언트 설정을 사용하는 것을 고려하십시오.https://www.golinuxcloud.com/configure-chrony-ntp-server-client-force-sync/ 드리프트 임계값에 도달하면 동기화가 포기됩니다.

관련 정보