Incident Library

IL-0266 Wikimedia Foundation · 2021-11-23networking

eqiad 코어 라우터 두 대 사이에 라우팅 루프가 생겨 eqiad 가 다른 데이터센터의 공인 IP 주소에 닿지 못했다

2021년 11월 23일 화요일 09시 37분쯤, cr1-eqiad 와 cr2-eqiad 에서 BGP 설정 하나를 뺐다. BGP "MED" 속성 값을 BGP 경로의 다음 홉까지 가는 OSPF 비용으로 정하는 설정이었다. 그러자 두 코어 라우터가 일부 원격 사이트로 가는 경로를 평가하는 방식이 바뀌었다. 외부에서 학습한 올바른 경로보다, eqiad 의 장비끼리 서로 다시 알리던 같은 경로가 더 나아 보이게 됐다.

예를 들어 cr2-eqiad 는 eqsin 의 BGP 경로로 가는 트래픽을 codfw 로 보내다가, 변경 뒤에는 로컬 피어인 cr1-eqiad 로 보내는 편이 낫다고 판단했다. cr1-eqiad 도 똑같이 cr2-eqiad 로 보내는 편을 골라서, 트래픽이 밖으로 나가지 못하고 두 라우터 사이를 오가는 라우팅 루프가 생겼다. 09시 39분에 eqiad 의 Icinga 가 eqsin 의 공인 text-lb 주소에 닿지 못해 알림이 울렸다. 09시 42분에 두 장비에서 설정 변경을 되돌렸지만, 정책 변경 때 경로가 갱신되는 방식 때문에 바로 풀리지 않았다. 더 조사한 뒤 09시 51분에 eqiad 라우터 사이의 BGP 세션을 강제로 재설정하자 문제가 풀렸다. 약 12분 동안 eqiad 는 다른 데이터센터에 공인 IP 주소로 닿지 못했고, 최종 사용자 트래픽에는 영향이 없었다.

심각도
–
영향 범위
eqiad could not reach hosts in other data centers, such as cache PoPs, via public IP addresses; no impact on end-user traffic
영향 사용자
no end-user impact
지역
eqiad
감지까지
2m
복구까지
14m

증상

09시 39분에 알림이 울렸다. 첫 알림은 eqiad 의 Icinga 가 싱가포르 eqsin 의 공인 text-lb 주소에 닿지 못해서 울렸다.

eqiad 는 약 12분 동안 캐시 거점 같은 다른 데이터센터의 호스트에 공인 IP 주소로 닿지 못했다. Icinga 는 eqsin 같은 엣지 캐시 클러스터를 상태 검사하다가 이를 알아챘다. 최종 사용자 트래픽에는 영향이 없었다. Wikimedia Foundation 은 Icinga 알림이 영향의 거의 전부였을 것으로 봤다. 내부 트래픽은 대개 BGP 가 아니라 OSPF 로 라우팅되는 로컬 IP 서브넷을 쓰고, 원격 데이터센터의 공인 IP 로 직접 가는 일이 드물기 때문이다.

eqsin 으로 가는 트래픽은 밖으로 나가지 못하고 cr1-eqiad 와 cr2-eqiad 사이를 오갔다. 09시 42분에 두 라우터의 설정 변경을 되돌렸지만, 정책이 바뀔 때 이 경로들이 갱신되는 방식 때문에 바로 풀리지 않았다.

증상 네트워크 도달 불가

원인

원인 설정 변경

구성 요소 BGP 라우팅
기여 요인 롤백 무효
촉발
09시 37분쯤 cr1-eqiad 와 cr2-eqiad 에서 BGP 경로 선택에 영향을 주려고 BGP 설정 하나를 뺐다. 이 설정은 BGP "MED" 속성 값을 BGP 경로의 다음 홉까지 가는 OSPF 비용으로 정했다. 설정을 뺀 것은 T295672 작업의 일부였다.

감지

09시 39분에 알림이 울렸다. eqiad 의 Icinga 가 eqsin 같은 엣지 캐시 클러스터를 상태 검사하다가 eqsin 의 공인 text-lb 주소에 닿지 못했다.

조치

후속 조치

교훈

–

출처

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: BGP 라우팅. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.