IL-0295 Pusher · 2022-04-11database
Pusher Channels mt1 클러스터의 메시지 발행 API 가 Redis 장애 조치 도중 11분 동안 거의 멈췄다
Pusher 는 2021년 11월부터 Redis 그룹을 새 버전의 모듈로 옮기고 있었다. 그룹 하나는 마스터 하나와 replica 둘로 이루어진다. 노드가 종료될 때 도는 스크립트는 그 노드가 마스터인지 보고, 마스터면 replica 하나로 장애 조치를 실행한다. 늘어나는 트래픽에 대비해 Redis 설정의 복제 버퍼를 키웠고, 이를 반영하려면 Redis 노드를 모두 재시작해야 했다. 이 작업은 테스트 클러스터와 작은 운영 클러스터 하나에서 문제없이 끝난 적이 있었다. 2022-04-11 08:47 UTC 에 엔지니어가 mt1 클러스터에서 노드 교체를 시작해 한 Redis 그룹의 replica 두 대를 하나씩 재시작했다. 10:42 에 마스터 노드에서 같은 작업을 하자 장애 조치는 시작됐지만 끝나기 전에 Redis 프로세스가 종료됐다. 종료 스크립트는 장애 조치 명령이 성공하면 노드를 꺼도 된다고 가정했다. 보통은 장애 조치가 충분히 빨라 맞는 가정이었지만, mt1 처럼 부하가 가장 큰 클러스터에서는 장애 조치 도중에 노드가 꺼졌다. 그룹은 일관되지 않은 상태가 됐고, 이 상태에서 회복하는 데는 장애 조치를 아예 시작하지 않았을 때보다 오래 걸렸다. 옛 마스터와 새 마스터가 리더 자리를 다투다 10:53 에 새 마스터가 자리를 잡았다. 그 11분 동안 메시지 발행은 거의 실패했고, 일부 메시지가 사라졌을 수 있다.
- 심각도
- –
- 영향 범위
- Publishing to Channels on the mt1 cluster largely unavailable; messages delayed or lost
- 영향 사용자
- –
- 지역
- –
- 감지까지
- –
- 복구까지
- 11m
증상
2022-04-11 10:42 UTC 부터 mt1 클러스터에서 Channels 메시지 발행 API 를 11분 동안 거의 쓸 수 없었다. 상태 페이지는 10:44 무렵부터 10:53 무렵까지 MT1 API 요청의 오류율이 올랐다고 알렸다.
사용자는 메시지 발행이 실패하거나, 메시지가 종단 간 지연 900ms 를 넘겨 늦게 도착하거나, 메시지가 전달되지 않고 사라지는 일을 겪었을 수 있다.
장애 동안 Redis 그룹 안에서 옛 마스터와 새 마스터가 리더 자리를 두고 다퉜다. 10:53 에 그룹이 회복해 새 마스터가 모든 메시지를 처리했다.
원인
원인 소프트웨어 결함
- 촉발
- 엔지니어는 Redis 설정의 복제 버퍼를 키운 것을 반영하려고 mt1 클러스터의 노드를 하나씩 교체하다가, 10:42 UTC 에 마스터 노드를 재시작했다. 장애 조치는 시작됐지만 끝나기 전에 Redis 프로세스가 종료됐다.
감지
Pusher 는 10:44 UTC 무렵부터 MT1 API 요청의 오류율이 오른 것을 확인하고 상태 페이지에 알렸다.
조치
–
후속 조치
- Redis 종료 스크립트가 노드를 끄기 전에 장애 조치가 끝났고 그 노드가 더는 마스터가 아닌지 확인하도록 고친다.
교훈
–
출처
- https://status.pusher.com/incidents/scvz124sfw8f · official-status · 보관본
관련 사례
같은 원인 · 공통 데이터베이스 장애 조치 관리자
같은 원인 · 공통 인메모리 캐시
IL-0216데이터센터 전환 직후 CirrusSearch Elasticsearch 지연이 치솟아 위키 검색이 일부 사용자에게 늦거나 안 됐다Wikimedia Foundation · 2023같은 원인 · 공통 인메모리 캐시
같은 원인 · 공통 인메모리 캐시
같은 원인 · 공통 인메모리 캐시
같은 원인 · 공통 데이터베이스 장애 조치 관리자
IL-0279Redis Cluster 의 슬레이브 노드 하나가 죽자 파이프라인 읽기가 실패해 Grab 의 운송 예약 서비스 Apollo 호출이 1분 동안 21번에 1번꼴로만 성공했다Grab · 2019같은 원인 · 공통 인메모리 캐시
IL-0388Redis 고가용 클러스터의 primary 노드가 내려간 뒤 Discord API 가 느려지고 길드 일부가 오프라인으로 보이며 접속이 실패했다Discord · 2017같은 원인 · 공통 인메모리 캐시
같은 원인 · 공통 데이터베이스 장애 조치 관리자
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0295
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0295/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.