IL-0508 SourceHut · 2023-01-11database
SourceHut 의 주 데이터베이스 서버 remilia.sr.ht 가 하드웨어 고장으로 연결이 끊겨 모든 서비스가 중단됐다
2023년 1월 11일 13:38 UTC 무렵 SourceHut 의 주 데이터베이스 서버 remilia.sr.ht 가 하드웨어 고장으로 연결이 끊겼고, 데이터베이스 연결이 없어지자 모든 서비스가 중단됐다. 원격으로는 서버에 닿을 수 없어 사람이 데이터센터에 가야 했다. 데이터센터 직원은 공식 업무 시간 전이라 전화를 받지 않았고, 운영팀은 데이터센터 근처의 SourceHut 비상 연락 담당자를 보냈다. 그 담당자는 데이터센터까지 한 시간 거리에 있었다.
기다리는 동안 운영팀은 서버를 되살릴 수 없으면 디스크를 다른 호스트로 옮겨 데이터베이스 서버를 그대로 띄우기로 했다. 그 호스트로는 빌드 워커 cirno1.sr.ht 를 골랐다. cirno1 은 cirno2.sr.ht 와 중복이라 빼도 가용성에 영향이 없었다. 데이터센터 직원이 서버 전원을 껐다 켰지만 살아나지 않았고, 운영팀은 이 결과로 디스크는 문제가 아니라고 봤다. 15:39 에 도착한 비상 연락 담당자가 진단을 확인하고 디스크를 cirno1.sr.ht 와 바꿔 끼웠다. remilia 는 cirno1 의 섀시에서 옛 상태 그대로 떴다. 16:04 에 Prometheus 가 remilia 의 지표를 다시 수집했고 16:09 에 모든 서비스가 돌아왔다. cirno1 이 빠지면서 builds.sr.ht 의 빌드 용량은 줄었다.
오프사이트 데이터베이스 백업은 동작하고 있었지만 장애 조치용 데이터베이스 호스트로 쓸 수는 없었다. SourceHut 직원 세 명 가운데 유효한 여권이 있는 사람은 한 명뿐이어서, 미국 현장에서 바로 큰 작업을 해야 했다면 그 한 명만 갈 수 있었다. 운영팀은 처음에 remilia.sr.ht 의 디스크 구성을 헷갈리기도 했다.
- 심각도
- –
- 영향 범위
- All SourceHut services were down; afterwards builds.sr.ht ran with reduced build capacity
- 영향 사용자
- –
- 지역
- US datacenter
- 감지까지
- 2m
- 복구까지
- 2h 31m
증상
13:40 UTC 무렵 SourceHut 서비스 대부분을 사용할 수 없다는 경보가 한꺼번에 울렸다. 그 가운데 하나는 주 데이터베이스 서버인 물리 호스트 remilia.sr.ht 를 사용할 수 없다는 경보였다.
13:38 에 Prometheus 가 remilia 의 지표를 수집하지 못하기 시작했다. remilia 에는 원격으로 닿을 방법이 전혀 없었다.
데이터베이스 연결이 끊기자 모든 서비스가 중단됐다. 운영팀은 메일 전달 파이프라인이 넘치지 않도록 Postfix 를 내렸고, 쏟아지는 경보를 끄려고 alertmanager 를 껐다.
증상 서비스 중단
원인
- 촉발
- 주 데이터베이스 서버 remilia.sr.ht 의 하드웨어가 고장 났다.
감지
13:38 에 Prometheus 가 remilia 의 지표 수집에 실패했고, 13:40 무렵 대부분의 서비스와 remilia.sr.ht 를 사용할 수 없다는 경보가 울렸다.
조치
- 데이터센터 직원에게 연락이 닿지 않아 데이터센터 근처의 비상 연락 담당자를 불렀고, 담당자가 데이터센터로 출발했다.
- 현장에 도착한 비상 연락 담당자가 데이터센터 직원의 진단을 확인한 뒤 디스크를 cirno1.sr.ht 와 바꿔 끼우고 서버를 띄웠다.
후속 조치
- 오프사이트 데이터베이스 백업이 장애 조치용 데이터베이스 호스트로도 쓰일 수 있게 고친다. 이 일은 이미 끝났다.
- EU 이전 작업 전체의 우선순위를 다시 높인다.
- 새 데이터베이스 장애 조치 구성을 만든다.
- 빌드 용량을 메우려고 EU 에 새 빌드 워커를 둔다.
- 앞으로를 대비해 하드웨어 목록을 더 꼼꼼히 기록한다.
교훈
–
출처
관련 사례
IL-0306Neon us-east-1 에서 pageserver 를 돌리던 EC2 인스턴스가 예고 없이 죽어 프로젝트 0.4% 의 Postgres 가 최대 2시간 동안 멈췄다Neon · 2024같은 원인 · 공통 데이터베이스
IL-0370Frankfurt 에서 노드 하드웨어 장애 뒤 Render Postgres 데이터베이스가 다른 노드에서 시작하지 못해 최대 1시간 5분 멈췄다Render · 2022같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0289updown.io 의 주 MongoDB 서버가 쿼리에 평소보다 약 200배 느리게 응답해 사이트와 모니터링 데몬이 거의 멈췄는데 자동 페일오버가 일어나지 않았다updown.io · 2019같은 원인 · 공통 데이터베이스
IL-0219Postgres 프라이머리의 디스크 어레이가 망가진 뒤 Pacemaker 가 새 프라이머리를 승격하지 못해 GoCardless API 와 대시보드가 1시간 50분 멈췄다GoCardless · 2017같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0508
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0508/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.