IL-0203 Honeycomb · 2024-04-09kubernetesaws
Honeycomb 은 쿠버네티스에서 서비스를 돌리고, 파드를 하나씩 종료하고 새 파드로 바꾸는 방식으로 배포한다. 새 파드가 뜨면 AWS Load Balancer Controller 가 그 파드를 Application Load Balancer 에 등록하고, ALB 는 그때부터 새 파드로 트래픽을 보낸다. 이번에는 AWS Load Balancer Controller 가 실패해 새 파드가 ALB 에 등록되지 않았다. 그 상태에서 다음 배포가 옛 파드를 하나씩 종료했고, 마지막 옛 파드가 내려가자 이벤트 수집 서비스와 웹 UI 서비스가 거의 동시에 끊겼다. EU1 은 22:00:10 UTC 부터 22:11:30 UTC 까지 쓸 수 없었다.
4월 9일 장애보다 앞서 Honeycomb 은 쿠버네티스 클러스터에 일상적인 시스템 업데이트를 배포하기 시작했다. 업데이트는 개발 환경과 스테이징 환경에서 충분히 시험한 것이었다. 그런데도 클러스터의 다른 구성 요소와 잘 맞지 않아 AWS Load Balancer Controller 와 다른 파드들을 간헐적으로 실패하게 했다. Honeycomb 은 AWS Load Balancer Controller 를 재시작해 서비스를 되살렸고, 재발을 막으려고 시스템 업데이트를 롤백했다. 보고서를 쓴 시점에도 정확한 원인은 조사 중이었다.
4월 9일 22:00:10 UTC 에 Honeycomb EU1 의 이벤트 수집과 웹 UI 가 갑자기 멈췄다. 두 서비스가 거의 같은 시각에 끊겼다. 22:08 UTC 에 상태 페이지에 EU1 인스턴스가 다운됐다는 공지가 올라왔다.
멈춘 것은 api.eu1.honeycomb.io 의 EU1 이벤트 수집과 ui.eu1.honeycomb.io 의 앱 화면, 쿼리, 트리거와 SLO 알림이었다.
중단 직전에는 평소처럼 배포가 진행되고 있었다. Honeycomb 은 파드를 하나씩 종료하고 새 파드로 바꾸는 방식으로 배포한다. 새 파드는 정상적으로 동작했지만 트래픽이 새 파드로 전달되지 않았다. 마지막 옛 파드가 종료되는 순간 서비스가 끊겼다.
증상 ? 서비스 중단오래된 엔드포인트 라우팅
원인 ? 업그레이드로 깨진 호환성
상태 페이지 첫 공지는 장애 시작 8분 뒤인 22:08 UTC 에 올라왔고, EU1 인스턴스가 다운돼 조사 중이라는 내용이었다. AWS Load Balancer Controller 에는 알림이 없었다.
AWS Load Balancer Controller 는 배포 때마다 새 파드를 ALB 에 등록하는 핵심 구성 요소였다. 이 컨트롤러가 실패해도 서비스는 바로 멈추지 않았고, 다음 배포에서 마지막 옛 파드가 내려갈 때 끊겼다. 개발 환경과 스테이징 환경에서 충분히 시험한 시스템 업데이트도 운영 클러스터의 다른 구성 요소와 부딪칠 수 있다.
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러