아마존 웹서비스 내부 DNS 서버 장애
오늘 2018년 11월 22일 오전에 아마존 내부 DNS 서버 장애가 발생했다.
아마존웹서비스의 경우 대부분의 상품이 floating ip 를 사용하고 있으며, 개발 가이드 문서에도 서비스를 “IP 주소 대신 도메인으로 연결해서 작업하여라” 라고 쓰여 있다.
따라서 아마존웹서비스를 사용하는 곳들은, 비록 자신이 사용하는 서비스의 IP 를 알고 있더라도 Domain 주소를 입력하는게 일반적이다.
이렇게 도메인 주소를 사용해서 서비스를 구성하는게 일반적인데, 갑자기 amazon 내부의 domain name resolving 서버가 먹통이 된 것이다!
서버들은 통신 대상을 찾지 못하여 통신 장애를 일으켰다.
여러 장애 시나리오에 대해 대응 정책을 세우지만, (아마존에서 자체 관리하는) 내부 DNS 서버가 다운될 것이라고 가정한 곳은 없었던 것 같다.
따라서 이러한 예측하지 못한 장애에 대해서 대비가 되어있지 않았고, 서비스가 다운된 것이다.
나도 감히 이런 장애가 발생할 것이라고는 생각하지 못했다.
내가 자체적으로 파악한 바로는, 오늘(2018-11-22)의 Amazon WebService DNS Resolving Server Downtime 은,
오전 8시 17분 ~ 오전 9시 47분 동안 지속되었다. (1시간 30분 장애) (= SLA 기준 99.79% 가동률)
내가 다니는 회사도 인프라를 AWS로 사용하기 때문에 영향이 있었고 적절한 조치를 취하였다.
오늘의 라엘이의 작업처리
- 오전 8시 17분 : 장애 발생
- 오전 8시 22분 : 장애 인지 (모니터링 Alarm - 매 1분마다 체크해서 연속으로 5회 negative 시 장애라고 가정했었음.)
서버에 접속하여 분석 시작
step | Do | Result | Next Step |
---|---|---|---|
1 | 웹 서비스 프로세스 확인 | 정상 | 프로세스가 살아있으므로 포트가 막혀있는건가? |
2 | 웹 포트 확인 | 정상 | 포트도 열려있으니 디스크 문제인가? (서버 용량이 꽉차면 이런 식의 장애가 발생함) |
3 | 디스크 용량 확인 | 정상 | 그럼 CPU/Memory 과부하인가? |
4 | CPU 및 메모리 확인 | 정상 | 인터넷 연결 불량인가? |
5 | 인터넷 연결 확인 | 정상 | 서버 자체는 정상 상태인 것 같다. 어플리케이션 단에서 파악해 보아야겠다. |
6 | 웹서버 로그 확인 | 비정상 | DB서버 연결을 할 수 없다는 오류메세지가 있었다. 도메인 주소를 해석할 수 없다는 로그가 쌓여 있더라. |
7 | 네임서버 쿼리 | 비정상 | 문제의 원인은 이곳이군! |
- 오전 8시 28분 : 장애 원인 파악 완료 및 조치 시작
당연히 다음과 같은 생각도 들었지만,
* 아마존 자체 문제가 생길 수 있나?
* 내가 잘못 연동한 부분이 있나?
* 이 계정에서만 발생한 문제인가?
* 다른 나라 지역도 장애인가?
* 계정이 해킹당한 것?
* 다른 원인이 있지는 않을까?
* 그럼 내 과실이 아닌 것이군!
생각은 나중에 해도 되기 때문에, 당장 최우선으로 할 작업은 파악된 원인을 바탕으로 서비스를 살리는 것이었다.
서비스 운영자는 다운타임을 1분1초 줄이는 능력이 매우 중요하다.
회사의 다른 프로젝트팀의 처리 방식을 살펴봤는데, 아마존 정상화 될 때 까지 기다린다고 하더라. (어쩌면 현명한 방법)
남탓 할수있는 환경이므로, 남탓하고 정상화 될 때까지 가만히 있어도 되긴 하겠지만,
난 그 정도로 현명하지 못하므로, 장애 조치를 시작하였다.
먼저, 서비스들의 IP 주소를 파악하였다.
집에서 DNS 쿼리해보니까 IP가 나오더라. (또는, 아마존 콘솔에서도 IP 확인가능)
파악된 IP 를 리눅스 서버의 /etc/hosts 파일에 입력하였다.
/etc/hosts 파일은 dns resolving 처리 메커니즘에서 우선순위가 가장 높은 파일이다.
/etc/hosts 파일에 domain 의 ip를 강제 지정해주니 서비스가 정상화 되었다.
- 오전 8시 37분 : 서비스 정상화
실제 AWS DNS 정상화가 오전 9시 47분쯤 이므로, 1시간 10분의 downtime 을 줄인 것이다.
정상 상태를 확인하였고, 씻고 출근했음.
AWS KR 를 이용하는 모든 업체에 대해 광범위의 장애가 발생했기 때문에 이런 안내메일이 오기도 하더라.
쿠팡, 배민, 마켓컬리등도 최대시간 장애가 발생했었다.