IL-0338 Google Cloud · 2018-07-17gcpnetworking
Google Cloud 의 HTTP(S) 로드 밸런서와 TCP/SSL Proxy 로드 밸런서가 32분 동안 요청의 33~87% 에 502 나 연결 재설정을 냈다
Google 의 글로벌 로드 밸런서는 두 계층의 Google Front End, 곧 GFE 로 이루어진다. 첫 계층 GFE 는 사용자와 가장 가까운 곳에서 요청을 받아, 요청이 쓰는 서비스 가까이에 있는 두 번째 계층 GFE 로 보낸다. GFE 개발 팀은 보안과 성능을 높이는 기능을 GFE 에 넣는 중이었고, 이 기능들은 두 번째 계층 GFE 코드에 들어갔지만 아직 쓰이지 않았다. 그중 한 기능에 GFE 를 재시작시키는 버그가 있었고, 테스트에서도 첫 배포에서도 드러나지 않았다.
2018년 7월 17일 12시 17분 PDT, 운영 환경의 설정 변경이 이 버그를 간헐적으로 건드려 영향받은 GFE 들이 거듭 재시작했다. 재시작에는 시간이 걸리므로 두 번째 계층 GFE 의 가용 용량이 줄었다. 일부 요청은 제대로 응답을 받았지만, 다른 요청은 중간에 끊겨 연결이 재설정되거나 용량이 모자라 거부됐다. 엔지니어는 12시 19분에 자동 모니터링의 알림을 받았고, 12시 44분에 원인을 찾아 설정 변경을 되돌렸다. GFE 들은 재시작을 멈췄고, 12시 49분에 502 비율이 평소로 돌아왔으며, 서빙은 12시 55분에 완전히 회복했다.
- 심각도
- –
- 영향 범위
- Google Cloud HTTP(S) Load Balancer, TCP/SSL Proxy Load Balancer and the services behind them, including App Engine serving, Cloud Functions, the Stackdriver web UI, Dialogflow, the Cloud Support Portal and API, GKE Ingress and Cloud Storage traffic through Cloud Load Balancers; Cloud CDN cache hits dropped 70%
- 영향 사용자
- customers using Google Cloud App Engine, HTTP(S) Load Balancer or TCP/SSL Proxy Load Balancers
- 지역
- –
- 감지까지
- 2m
- 복구까지
- 38m
증상
2018년 7월 17일 12시 17분 PDT 부터 Google Cloud App Engine, HTTP(S) 로드 밸런서, TCP/SSL Proxy 로드 밸런서를 쓰는 고객의 요청이 502 응답 코드나 연결 재설정으로 실패했다. 오류 비율은 32분 동안 33% 에서 87% 사이를 오갔다.
HTTP(S) 로드 밸런서는 받은 요청 일부에 502 를 냈고, TCP/SSL Proxy 로드 밸런서로 들어온 연결은 백엔드 연결이 실패한 뒤 재설정됐다. Google Kubernetes Engine 에서 Ingress 리소스를 쓰는 서비스도 502 를 냈다.
HTTP 로드 밸런싱에 기대는 Google 서비스들도 장애 내내 영향을 받았다. App Engine 애플리케이션 서빙, Google Cloud Functions, Stackdriver 웹 UI, Dialogflow, Cloud Support Portal 과 API, Cloud Load Balancer 를 거치는 Google Cloud Storage 트래픽이 여기에 포함됐다. 상태 페이지의 첫 공지는 12시 34분에 올라왔다.
Cloud CDN 의 캐시 적중은 70% 줄었다. 로드 밸런서 뒤 서비스들이 Cloud CDN URL 을 덜 참조했고, CDN 은 오래된 캐시 항목을 검증하지도, 캐시 미스 때 새 콘텐츠를 넣지도 못했기 때문이다.
12시 49분에 수정이 효과를 내자 502 비율은 빠르게 평소 수준으로 돌아왔다. 트래픽이 돌아오고 캐시가 다시 데워지는 몇 분 동안은 지연이 더 이어졌고, 서빙은 12시 55분에 완전히 회복했다.
VM 에 직접 접속하는 애플리케이션과 서비스, Network Load Balancing 을 쓰는 서비스는 영향을 받지 않았다.
원인
원인 소프트웨어 결함
- 촉발
- 두 번째 계층 GFE 코드에는 아직 쓰지 않던 새 기능이 들어가 있었고, 이 기능에 버그가 있었다. 운영 환경의 설정 변경이 이 버그를 간헐적으로 건드렸고, 버그는 GFE 를 재시작시켰다.
감지
12시 19분에 자동 모니터링이 Google 엔지니어링 팀에 알림을 보냈다. 엔지니어는 장애가 시작되고 3분 안에 알림을 받고 바로 조사를 시작했다.
조치
- 12시 44분 PDT 에 원인을 찾고 문제의 설정 변경을 곧바로 되돌렸다. 영향받은 GFE 들이 재시작을 멈추고 모두 서비스에 돌아오자 트래픽이 평소 수준과 동작을 되찾았다.
후속 조치
- 아직 쓰지 않는 기능을 꺼 두는 안전장치를 더한다.
- 작업을 재시작시킬 수 있는 잠재 버그가 운영 바이너리에 남을 위험을 줄이도록 GFE 테스트 스택을 더 단단하게 만든다.
- 장애가 미치는 범위를 줄이도록 GFE 풀의 샤드끼리 더 격리한다.
- 진단을 빠르게 하도록 GFE 풀의 모든 설정 변경을 한곳에 모은 대시보드를 만들어, 엔지니어가 문제를 일으킨 변경을 쉽게 보고 대조해 찾아내게 한다.
교훈
–
출처
- https://status.cloud.google.com/incident/cloud-networking/18012 · official-status · 보관본
관련 사례
같은 원인 · 공통 CDN 과 엣지 네트워크
IL-0150DynamoDB DNS 자동화의 경쟁 조건이 us-east-1 리전 엔드포인트의 DNS 레코드를 비워 DynamoDB 와 EC2 인스턴스 시작이 실패했고, 그 여파로 EKS, ECS, Fargate 의 컨테이너 시작과 클러스터 스케일링이 14시간 넘게 막혔다Amazon Web Services · 2025같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
IL-0131새로운 형태의 GenerateContent 요청이 Vertex AI 예측 API 서버에 세그폴트를 일으켰고, 동시에 재시작하는 서버가 늘자 서빙 용량이 모자라 여러 리전에서 오류가 치솟았다.Google Cloud · 2024같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
IL-0243Google External Proxy Load Balancing 뒤의 HTTP/S 엔드포인트가 전 세계에서 Google 404 오류를 냈다Google Cloud · 2021같은 원인 · 공통 클라우드 로드 밸런서
IL-0106잘못된 IngressRoute 매니페스트가 Traefik v2 버그를 건드려 Traefik 파드가 모두 재시작된 뒤 Kubernetes 의 모든 서비스가 404 를 냈다DFDS · 2021같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 클라우드 로드 밸런서
IL-0388Redis 고가용 클러스터의 primary 노드가 내려간 뒤 Discord API 가 느려지고 길드 일부가 오프라인으로 보이며 접속이 실패했다Discord · 2017같은 원인 · 공통 CDN 과 엣지 네트워크
IL-0395Google Cloud HTTP(S) Load Balancer 가 한참 오래된 구성으로 되돌아가 요청의 25%가 22분 동안 502 오류로 실패했다Google Cloud · 2017같은 원인 · 공통 클라우드 로드 밸런서
IL-0396새로 만들거나 라이브 마이그레이션한 GCE 인스턴스, Cloud VPN 터널, 네트워크 로드 밸런서가 2시간 8분 동안 공인 IP 주소로 연결되지 않았다Google Cloud · 2017같은 원인 · 공통 클라우드 로드 밸런서
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0338
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0338/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.