Prolinux 8.5
kubernetes v1.21.14
마스터 노드 1번으로 모든 노드의 시간을 동기화 해놨는데 talk 서비스에서 3분정도 시간이 빠르게 나오는 현상 발견.
마스터 1번을 내부 NTP 서버로 동기화 하였지만 동기화가 정상적으로 이루어지지 않음.
마스터 노드1번에서 chronyd 서비스를 사용해 시간동기화를 하였는데 ( Redhat 8 이후는 ntpd 대신 chronyd ) 설정 자체는 문제가 아니였음. 인프라 방화벽이나 NTP 서버쪽 설정을 의심
--> NTP 서버 로그, L4로그 확인 시, 마스터 1번으로 패킷이 전달되는 로그 확인
--> 마스터 1번 tcpdump에서는 들어오는 패킷이 없음
--> 원인 파악하지 못 하고, 고객이 해결을 원해서 다른 zone에 있는 서버에 방화벽 오픈 후, 다른 zone에 있는 서버를 바라보게 하여 동기화 완료
이 현상 생기기 전에 사실 NTP가 뭔지도 몰랐다.. 그래서 정리~
NTP(Network Time Protocol)의 약자로 네트워크에서 컴퓨터의 시간을 동기화하는 데 사용되는 프로토콜입니다.
chrony는 ntpd를 대체, RedHat 8 이후부터는 기본 NTP로 채택
chrnoyd를 제외한 ntpd관련 데몬이 실행중이면 안 됩니다.
--> ntpd와 chronyd 동시에 실행 불가
conf 파일 수정 후에는 데몬 재기동
systemctl restart chronyd
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.pl.pool.ntp.org iburst
server time.bora.net iburst
server [연결하려는 서버IP] iburst로 설정
iburst는 동기화 시간을 단축시키는 옵션
timedatectl
, chronyc sources -v
⚡ root@pps-26 ~ timedatectl
Local time: Thu 2023-09-14 11:22:54 KST
Universal time: Thu 2023-09-14 02:22:54 UTC
RTC time: Thu 2023-09-14 02:22:53
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
⚡ root@pps-26 ~ chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- 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.bora.net 3 6 7 0 +12us[ +44ms] +/- 51ms
동기화가 정상적으로 되었다면 timedatectl
결과의 System clock synchronized
의 값이 yes
입니다.
동기화가 정상적으로 되었다면 chronyc sources -v
의 결과의 MS 값이 ^*
입니다.
^?
, ^~
: 동기화 되지 않은 상태
# Allow NTP client access from local network.
allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 3
allow : 해당 노드의 시간 동기화를 허용할 노드의 대역
local stratum : 노드의 stratum을 수동으로 지정, 보통 3으로 설정