IL-0236 Wikimedia Foundation · 2026-02-23kubernetesnetworkingai-infra
머신러닝 모델 서빙 클러스터 두 곳에서 투명 프록시로 MediaWiki API 를 부르던 모델 서버들이 약 24시간 5XX 를 냈다
Wikimedia 는 머신러닝 운영 쿠버네티스 클러스터 두 곳을 1.31 로 올리면서 Istio 도 1.15 에서 1.24 로 올렸다. 이 클러스터에서 Istio 는 Ingress Gateway 와 메시 사이드카로 쓰인다. 사이드카는 모든 모델 서버가 들어오고 나가는 트래픽에 쓰는 투명 프록시다. 새 Istio 는 VirtualService 의 host 값을 더 엄격하게 검증해, 값이 겹치는 VirtualService 가 둘 이상이면 하나만 받고 나머지는 버린다.
모델 서버들은 MediaWiki API 를 두 방식으로 불렀다. 하나는 코드에 mw-api-ro.discovery.wmnet 같은 MW API VIP 를 적고 en.wikipedia.org 같은 Host 헤더를 넣는 방식이다. 다른 하나는 VIP 없이 en.wikipedia.org 같은 도메인으로 부르고 투명 프록시에 맡기는 방식이다. 팀은 상황에 따라 편한 쪽을 써 왔고 어느 것을 표준으로 할지 정한 적이 없었다. 이번 장애에서 영향을 받은 것은 투명 프록시 방식을 쓰는 모델 서버였다.
2026-02-23 17:21 UTC 에 ml-serve-codfw 업그레이드가 끝났다. 17:30 UTC 부터 5XX 가 나며 알림이 울렸지만 팀은 알아채지 못했다. 2월 24일 08:00 UTC 에 ml-serve-eqiad 업그레이드를 시작했고, 10:15 UTC 에 사용자들이 Slack 에 codfw 문제를 알렸다. 11:00 UTC 에 eqiad 업그레이드가 끝나 eqiad 서비스도 영향을 받았다. 팀은 11:30 UTC 에 조사를 시작했다. 16:00 UTC 에 Istio 핫픽스를 배포해 HTTP 500 대부분을 없앴고, 이로써 장애가 끝났다. 팀은 근본 수정을 2월 27일에 올려 ml-staging-codfw 에서 확인했고, 3월 3일 13:17 UTC 에 영향받은 모든 클러스터에 배포했다.
- 심각도
- –
- 영향 범위
- A subset of ML model servers, about half of those running, were unreachable or returned 5XX for about 24 hours, first in codfw and the next day in eqiad; the Search Update pipeline, the Revised Tone model server and the ML cache storage were affected
- 영향 사용자
- Consumers of the affected model servers
- 지역
- codfw and eqiad
- 감지까지
- 16h 45m
- 복구까지
- 22h 30m
증상
2026-02-23 17:30 UTC 에 ml-serve-codfw 업그레이드가 끝난 직후, 일부 머신러닝 서비스의 지표에 5XX 응답 코드가 나타나기 시작했고 알림이 울렸다. 실행 중인 모델 서버의 절반이 영향을 받았고, 이 서비스들에는 약 24시간 동안 접근할 수 없었다.
알림은 Machine Learning 팀의 IRC 채널에 올라왔고, 영향받은 서비스마다 HTTP 5XX 오류를 가리켰다. 다른 WMF 서비스에 비하면 오류량은 중간 정도였다. 팀은 이 알림을 알아채지 못했다.
다음 날인 2월 24일 10:15 UTC 에 영향받은 모델 서버를 쓰는 사람들이 talk-to-machine-learning Slack 채널에 codfw 문제를 알렸고, 그 뒤에야 팀이 알림을 보았다. 같은 날 08:00 UTC 에 시작한 ml-serve-eqiad 업그레이드가 11:00 UTC 에 끝나자 eqiad 서비스도 영향을 받았다.
영향은 MediaWiki API 를 투명 프록시로 부르는 모델 서버에 몰렸다. 영향받은 모델 서버는 article-models, articletopic-outlink, revertrisk, revision-models, revscoring-articlequality, revscoring-articletopic, revscoring-draftquality, revscoring-drafttopic, revscoring-editquality-damaging, revscoring-editquality-goodfaith 였다. 이 모델 서버를 부르는 Search Update 파이프라인과 Revised Tone 모델 서버, Machine Learning 캐시 저장소에도 영향이 갔다.
증상 오류율 상승
원인
- 촉발
- 머신러닝 운영 쿠버네티스 클러스터 두 곳을 1.31 로 올리면서 Istio 를 1.15 에서 1.24 로 올렸다. 새 Istio 는 VirtualService 의 host 값을 더 엄격하게 검증해, host 가 겹치는 VirtualService 가 둘 이상이면 하나만 받고 나머지를 버렸다.
감지
영향받은 모델 서버를 쓰는 사람들이 talk-to-machine-learning Slack 채널에 처음 알렸다. codfw 업그레이드 직후부터 Machine Learning 팀의 IRC 채널에 알림이 올라와 있었지만 팀은 알아채지 못했다.
조치
- Istio 핫픽스를 배포해 HTTP 500 대부분을 없앴고, 2026-02-24 16:00 UTC 에 장애가 끝났다.
- 근본 수정을 ml-staging-codfw 에서 확인한 뒤 2026-03-03 13:17 UTC 에 영향받은 모든 클러스터에 배포했다.
후속 조치
- 알림을 관련 Slack 채널로 보내거나, IRC 나 alerts.wikimedia.org 를 지켜보는 방안을 검토한다.
- SLO 를 더 두는 방안을 검토한다. Istio 지표가 바뀌었으므로 revertrisk-la 의 가용성 SLO 와 지연 SLO 같은 기존 SLO 도 고친다.
교훈
사용자가 처음 알린 시점부터 보면 비교적 짧은 시간에 문제를 풀었다. 반면 이 문제는 스테이징 클러스터에서 먼저 잡을 수 있었다. 팀은 업그레이드를 알리고 테스트를 요청했다. 클러스터를 올릴 때마다 팀 안에서 바로 테스트했다면 문제를 더 일찍 찾을 수 있었다. httpbb 테스트가 있다는 것을 관련자 모두가 알지는 못했다. codfw 업그레이드 직후 울린 알림을 Machine Learning 팀의 누구도 보지 못했다.
운도 따랐다. 깨진 기능을 되살릴 Istio 핫픽스를 찾는 데 도움을 줄 기술 담당자가 마침 온라인에 있었다.
출처
참고 문서
관련 사례
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0236
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0236/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.