이슈노트 #7: AWS RabbitMQ 큐가 자꾸 터져요

1. 발단

어느날 난데없이 새벽 4시 즈음에 RabbitMQ가 터지고 연결된 커넥션도 다 끊겨서 앱들이 다 터져버렸다.

AWS AmazonMQ의 RabbitMQ를 이벤트 큐로 사용하고 있었는데, 꽤 중대하고 황당한 문제였다.




2. 분석

근데 그 당시에는 딱히 사용량이 많지도 않았고, 시간이 시간인지라 사람이 직접 뭘 건드릴 때도 아니었다.

그래서 로그를 좀 보았는데

여기에도 별다른 정보는 없었다.
갑자기 운영 상태가 drain 모드가 되고, 실행 중단 요청을 받았다고 뜨기만 했다. 누가 이런걸 보냈단 말인가?

그래서 여기저기 뒤져보다보니

"마이너 버전 자동 업그레이드"가 활성화가 되어있었다.
이게 MQ 생성시에 기본값이기도 했고, 다른 DB 계열 시스템들도 자동 업데이트는 무중단으로 업데이트되는 것이 많아서 별다른 생각을 하지는 않았다.

그런데 로그를 잘 보니 터졌던 시간대와 저 유지관리 시간이... 겹쳤다.




3. 문제

AmazonMQ는 신기하게도 자동업데이트에 대해서 무중단배포를 보장하지 않는다.
무조건 다운타임이 발생하고, 커넥션이 다 끊긴다.

multi AZ로 구성하면 덜하다고 써놓긴 했는데, 이것도 좀 모호하다. 아마 완벽하게는 안될 것 같다. 되면 명확하게 써놨겠지.

이런 옵션을 기본값으로 해놓은 것도 코미디다.




4. 해결

마이너 버전 자동 업데이트를 끄는게 최선이었다.
버전 업데이트는 필요할 때만 하는 것으로.




5. 결론

뭘 쓰기 전에는 항상 문서를 꼼꼼히 읽자...

그런데 관련 AWS 문서가 워낙 개판이고 업데이트 관련 가용성에 대해서 뚜렷하게 써놓지 않아서 경험이 없다면 알기 힘든 문제이긴 했다.
이놈들도 문서에 긍정적인건 보기쉽게 써놓는데 불리한건 다 은근슬쩍 빼놓고 올리는게 너무 심한 것 같다.



참조
https://docs.aws.amazon.com/ko_kr/amazon-mq/latest/developer-guide/rabbitmq-broker-architecture-cluster.html