IL-0528 Google Cloud · 2025-01-08gcpdatabase
Cloud Pub/Sub 가 여러 리전에서 게시와 구독을 모두 못 했고 순서 지정 구독 일부는 그날 밤까지 메시지를 받지 못했다
Cloud Pub/Sub 는 저장 시스템의 메타데이터 상태를 리전 데이터베이스에 둔다. 여기에는 게시된 메시지의 정보와 순서 지정 전달에 쓰는 게시 순서가 들어 있다. 대부분의 데이터 플레인 작업이 이 데이터베이스를 거친다. 2025-01-08 미국 태평양 시간 06:54 부터 07:30 사이에 이 데이터베이스의 접근 권한을 의도치 않게 지나치게 제한한 설정 변경이 여러 리전에 배포됐다. 사전 운영 환경은 설정이 운영 환경과 달라서 문제가 드러나지 않았다. 이 변경은 표준 배포 절차를 따르지 않고 짧은 시간 안에 여러 리전에 잘못 배포됐다. Pub/Sub 가 리전 메타데이터 저장소에 접근하지 못하자 게시, 구독, 백로그 지표가 모두 실패했다.
엔지니어들은 07:03 에 내부 텔레메트리로 알림을 받았고, 원인이 된 설정 변경을 찾아 08:07 에 롤백을 마쳤다. 게시와 구독이 막힌 시간은 1시간 13분이었다. 그런데 데이터베이스를 오래 쓸 수 없던 동안 Pub/Sub 가 순서 지정 전달을 지키는 방식에 숨어 있던 버그가 드러났다. 순서에 관한 메타데이터가 게시된 메시지의 메타데이터와 어긋났고, 그 때문에 순서 지정 구독 일부에 메시지 일부가 전달되지 않았다.
엔지니어들은 09:07 에 이 문제로 알림을 받았고, 12:20 에 메타데이터 불일치가 원인이라는 것을 찾았다. 영향을 받은 순서 지정 구독을 모두 찾아 고치는 작업은 23:09 에 끝났고, 고친 구독은 쌓인 메시지를 모두 올바른 순서로 받았다.
- 심각도
- –
- 영향 범위
- Cloud Pub/Sub publish and subscribe, and backlog metrics, in ten regions for 1 hour and 13 minutes; a small subset of ordered subscriptions could not consume their backlog until 23:09; Cloud Logging exports to Pub/Sub delayed for 26 minutes; BigQuery Data Transfer Service runs failed for 20 minutes
- 영향 사용자
- –
- 지역
- europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1, me-central1
- 감지까지
- 9m
- 복구까지
- 16h 15m
증상
여러 리전에서 Cloud Pub/Sub 에 메시지를 게시할 수도, 구독할 수도 없었다. 백로그 지표는 오래된 값이거나 아예 비어 있을 수 있었다. 상태 페이지의 제목은 "Multiple regions completely blocked for subscribe for Pubsub" 였다.
영향을 받은 리전은 europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1, me-central1 이었다. 메시지 저장 정책에 이 리전이 들어 있으면 다른 리전에서 게시하는 고객도 같은 문제를 겪었을 수 있다.
Pub/Sub 를 쓰는 다른 서비스도 함께 영향을 받았다. Cloud Logging 에서 Pub/Sub 로 로그를 내보내는 고객은 모두 26분 동안 내보내기가 늦어졌다. BigQuery Data Transfer Service 는 전송 실행이 Pub/Sub 에 게시하지 못해 20분 동안 실패했다.
미국 태평양 시간 08:07 에 서비스가 돌아온 뒤에도 메시지 순서 지정을 켠 구독 일부는 백로그를 소비하지 못했다. 이 백로그 증가는 09:07 에 드러났다. 이 구독들은 23:09 에 복구될 때까지 쌓인 메시지를 받지 못했다. 메시지 순서와 전달 보장 자체는 깨지지 않았다.
원인
- 촉발
- 미국 태평양 시간 06:54 부터 07:30 사이에 잘못된 서비스 설정 변경이 여러 리전에 배포됐다. 이 변경은 리전 메타데이터 데이터베이스에 접근하는 권한을 의도치 않게 지나치게 좁혔다.
감지
엔지니어들은 영향이 시작되고 9분 뒤인 미국 태평양 시간 07:03 에 내부 텔레메트리로 장애 알림을 받았다. 순서 지정 구독 일부가 백로그를 소비하지 못하는 문제는 09:07 에 역시 내부 텔레메트리 알림으로 알았다.
조치
- 문제를 일으킨 설정 변경을 찾아 미국 태평양 시간 08:07 에 롤백을 마쳤다.
- 영향을 받은 순서 지정 구독을 모두 찾아 고쳤고, 이 작업을 미국 태평양 시간 23:09 에 마쳤다.
후속 조치
- 설정 변경의 영향을 운영 환경에 닿기 전에 잡을 수 있도록 사전 운영 환경과 운영 환경의 설정을 같게 맞추는 규칙을 더 강하게 적용한다. 목표일은 2025년 1월 31일이다.
- 변경 관리 절차를 검토해 앞으로 설정 변경이 우선순위에 맞춰 단계적으로 배포되게 한다. 목표일은 2025년 1월 31일이다.
- 순서 메타데이터의 불일치를 미리 잡아내는 모니터링을 더한다. 목표일은 2025년 3월 31일이다.
- 순서 지정 메시지가 전달되지 않게 만든 Cloud Pub/Sub 의 순서 메타데이터 관리 버그를 고친다. 목표일은 2025년 6월 30일이다.
교훈
–
출처
- https://status.cloud.google.com/incidents/ghMho2Gka33Exr9UNavz · official-status · 보관본
참고 문서
관련 사례
IL-0574운영 환경의 DB 접속 경로를 Amazon RDS Proxy로 바꾼 지 몇 분 만에 Aurora MySQL writer CPU가 100%에 이르고 에러가 났다Safie · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0179DEBUG 로그가 쏟아지자 동기 로깅을 하던 요청 스레드들이 가득 찬 stdout 파이프에서 멈춘 채 DB 커넥션을 쥐고 있어, HikariCP 커넥션 풀이 고갈되고 요청이 30초 주기로 한꺼번에 실패했다.MUSINSA · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0283Cloudflare 네트워크 전체에서 코어 프록시가 Bot Management 피처 파일을 읽다 실패해 사이트 방문자들이 HTTP 5xx 오류 페이지를 받았다Cloudflare · 2025같은 원인 · 공통 데이터베이스
IL-0392데이터센터 전환을 앞두고 원형 복제를 설정하던 중 Wikimedia x1 섹션의 eqiad·codfw 사이 MariaDB 복제가 6분 멈췄다Wikimedia Foundation · 2024같은 원인 · 공통 데이터베이스
IL-0285Clever Cloud 의 Apache Pulsar 메시징 클러스터가 멈추면서 EU-FR-1 리전의 배포 API 가 먹통이 되고 하이퍼바이저들이 커널 패닉으로 재부팅됐다Clever Cloud · 2024같은 원인 · 공통 메시지 브로커
IL-0367Central US 의 Azure Storage 가 VM 디스크 요청을 거부해 VM 과 그 위의 SQL Database, Cosmos DB 가 멈췄다Microsoft Azure · 2024같은 원인 · 공통 데이터베이스
IL-0511Vault 가 새로 발급한 데이터베이스 자격 증명이 SCRAM 으로 만들어져 pgbouncer 가 RDS 에 로그인하지 못하고 xPro 운영 사이트가 멈췄다MIT Open Learning · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0528
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0528/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.