오늘 낮에 메신저가 반짝이길래 확인해보니, 운영 중인 서비스 중 하나가 시간이 맞지 않는다는 메시지가 와 있었습니다. 속으로는 그럴리가 없는데라고 생각하며, 서버의 시간을 체크해보니, 정말로 약 2분 가량 차이가 나고 있었습니다. 일단 확인하고 조치되면 알려주겠노라고 답장을 보냈습니다.
시간이 틀리지 않다고 생각한 이유.
문제 상황에 대한 메시지를 받고도 서버 시간이 정확하리라 생각했습니다. 서비스를 오픈한지도 오랜 시간이 지났고, 물론 그사이 서버를 교체하지도 않았습니다. 게다가 이제까지 여러 문제가 있었지만, 시간과 관련된 문제가 생긴 것은 처음이기 때문입니다. 또 그렇게 경험적인 확신이 들었던 이유가 있습니다. 해당 서버는 NTP(Network Time Protocol) 서버와 동기화 하며 자동으로 시간을 맞추고 있었기 때문입니다.
그런데 서버 시각을 확인해보니, 진짜로 시간이 달라져있어서 잠시 당황했습니다.
시간이 동기화 되고 있는지 확인하기.
문제는 확인이 되었으니, 이제 왜 시간이 달라지고 있는지, 무엇을 확인해야 할지를 생각해봤습니다.
먼저 NTP 서버 설정이 변경되었는지부터 확인했습니다. 혹시나 (최근에 서버 점검도 있었기 때문에) 의도치 않은 설정 변경이 있었는지부터 확인해봤지만, 설정은 이상이 없어 보였습니다.
그 다음은 NTP 서버와 시간이 동기화가 제대로 되고 있는지 확인해봤습니다. ( chrony는 NTP 프로토콜을 사용하는 클라이언트로 ntpd를 대체하는 서비스 입니다. )
$ chronyc sources -v
위 캡쳐는 실제 서버 화면을 캡쳐할 수 없기에 개인적으로 사용중인 클라우드 서버에서의 실행 결과를 캡쳐한 것입니다.
동기화 상태를 확인한 결과, 등록된 모든 NTP 서버와의 상태가 위 캡쳐의 붉은색 네모로 표시한 부분 처럼 "^?" 로 표기되는 것, 즉 시간이 정상적으로 동기화 되고 있지 않음을 확인했습니다. 원인은 네트워크 문제로 NTP 서버와 접속하지 못하고 있거나, NTP 서버에 문제가 있을 것입니다.
시간이 달라지게 된 원인과 해결, 그리고 주의점.
이제 NTP서버와 동기화가 왜 되고 있지 않은가 확인하기 위해, 클라우드 서버 담당자에게 메시지를 보냈습니다. 담당자에게서는 NTP 서버가 변경되어 기존에 등록된 NTP서버는 더 이상 동작하지 않는다라는 답변이 왔습니다.
음!? 변경되었으면, 알려줬어야...
잠시 놓칠뻔했던 이성의 끈을 잡고, 담당자에게 새로운 NTP 서버 정보를 확인하여 서버에 등록한 후 다시 동기화하는 것으로 상황을 마무리 했습니다.
덧붙임 : 시간을 다시 동기화 할 때, 주의할 점이 있는데, 서버의 시간이 실제보다 빠르게 설정되어 있는 경우, 시간과 관련있는 데이터에 문제가 생길 수 있습니다. 예를 들어 지금처럼 2분 빨랐던 서버를 원래대로 동기화 하게 되면 서버는 2분 뒤로 돌아가게 되는것이고 2분 동안은 이전에 저장된 데이터와 문제를 일으킬 여지가 있습니다. 이 것을 막는 것은 여러가지가 있겠지만, 제 경우는 잠시동안 사용자의 접근을 차단하여, 데이터가 중복으로 저장되지 않도록 하였습니다.
덧붙임 : 시간을 다시 동기화 할때, 한번에 시간이 변경되는 것이 아니라, 서서히 시간이 변경되게 됩니다. 따라서 강제로 현재 시간과 동기화하지 않는 한, 사용자의 접근을 차단할 필요는 없을 것 같습니다.