IL-0525 OpenStreetMap Foundation · 2022-06-11networking
Equinix 암스테르담 전원 점검 중 업링크가 하나뿐인 스위치가 꺼져 OpenStreetMap.org 가 7시간 27분 멈춤
OpenStreetMap.org 는 주로 Equinix 암스테르담 데이터센터 AM6 에서 돌고, 더블린 DB4 에 페일오버용 시설이 있다. 암스테르담의 네트워크는 Cisco SG550X-48 스위치 Switch-1 과 Switch-2 두 대로 이루어진다. 두 스위치는 전원 A 계통과 B 계통을 모두 받는 Cisco RPS2300 Redundant Power System 에서 예비 전원을 받고, 내부 전원은 Switch-1 이 A 계통에, Switch-2 가 B 계통에 직접 연결돼 있다. 인터넷으로 나가는 Cogent 광 업링크는 Switch-1 에만 하나 있었고, 이것이 단일 장애 지점이라는 것을 팀은 알고 있었다. 하드웨어 고장 때 현장 지원 인력이 업링크를 옮길 수 있도록 Switch-2 에 예비 광 모듈을 꽂아 두었고, 암스테르담에는 대역 외 접속 장비가 아직 없었다.
2022년 6월 11일 20:00 UTC 에 Equinix 가 전원 A 계통의 5년 주기 점검을 시작했고, 20:18 UTC 에 OpenStreetMap.org 가 멈췄다. 팀은 이 점검으로 장애가 나리라고 예상하지 않았다. 2018년 12월 Cisco Redundant Power System 을 설치할 때 이 정전 상황을 시험해 동작을 확인했기 때문이다. 하지만 Switch-1 이 꺼지면서 업링크가 끊겼고, 암스테르담의 모든 서비스가 인터넷과 끊겼다. 원격으로 원인을 조사할 방법이 없었던 운영 팀은 더블린 페일오버도, 업링크 이전 요청도 하지 않고 점검이 끝나기를 기다렸다. 장애는 6월 12일 03:45 UTC 에 끝났다. 모두 7시간 27분으로, 지난 5년 동안 가장 긴 OpenStreetMap.org 장애였다.
6월 20~22일 현장 방문에서 확인해 보니 Cisco Redundant Power System 의 전원 두 계통은 모두 정상이었다. 시험해 보니 이 장치는 스위치에 전원을 대지 않는 "standby" 상태에 들어갈 수 있었고, 이 상태에서는 내부 전원을 잃은 스위치가 꺼진다. 장치의 IO 패널 설정으로 "active" 로 바꿀 수 있고, 스위치의 CLI 명령 show system 으로 상태를 볼 수 있다. 장치가 어떻게 "standby" 상태에 들어갔는지는 밝혀지지 않았다.
- 심각도
- –
- 영향 범위
- All OpenStreetMap.org services hosted in Amsterdam (www, API, wiki, planet) had no Internet connectivity for 7 hours 27 minutes
- 영향 사용자
- –
- 지역
- Amsterdam (Equinix AM6)
- 감지까지
- –
- 복구까지
- 7h 27m
증상
2022년 6월 11일 20:18 UTC 부터 OpenStreetMap.org 에 접속할 수 없었다. Equinix 가 암스테르담 데이터센터 AM6 의 전원 A 계통 점검을 시작하고 18분 뒤였고, 암스테르담에 있는 www, API, wiki, planet 서비스가 모두 인터넷과 끊겼다.
운영 팀은 연결이 왜 끊겼는지 확신하지 못했다. 스위치에는 Cisco Redundant Power System 이 남은 전원 B 계통으로 전원을 계속 대 주게 돼 있었다. 암스테르담에는 대역 외 접속 장비가 아직 없어서, 업링크가 끊긴 동안 운영 팀은 원격으로 원인을 들여다볼 수 없었다.
처음 가설은 전원 B 계통에 연결된 Cisco Redundant Power System 의 전원이 고장 나 Switch-1 이 완전히 꺼졌다는 것이었다. Cogent 로 가는 광 업링크는 Switch-1 에 하나만 연결돼 있어서 Switch-1 이 꺼지자 업링크도 끊겼다. Switch-2 는 내부 전원이 전원 B 계통에 직접 연결돼 있어 계속 동작했다.
운영 팀은 점검 시간 안의 장애라 더블린으로 재해 복구 페일오버를 할 상황은 아니라고 보았다. 현장 지원 인력에게 업링크를 Switch-2 로 옮겨 달라고 요청하지도 않고 점검이 끝나기를 기다렸다. 장애는 6월 12일 03:45 UTC 에 끝났고, 04:22 UTC 에 Switch-1 이 점검 동안 꺼져 있었음을 확인했다.
나중에 확인해 보니 Cisco Redundant Power System 이 "standby" 상태여서 스위치에 전원을 대지 않고 있었다. 스위치에서 CLI 명령 show system 을 실행하면 이 상태가 보인다. standby 일 때는 Unit 1 과 Unit 2 모두 Main Power Supply 가 Active, Redundant Power Supply 가 Not Connected 로 나오고, active 일 때는 Redundant Power Supply 가 Available 로 나온다.
원인
- 촉발
- 2022년 6월 11일 20:00 UTC 에 Equinix 가 암스테르담의 OpenStreetMap 서버에 전원을 대는 전원 A 계통의 5년 주기 점검을 시작했다.
감지
–
조치
- 운영 팀은 더블린으로 페일오버하거나 업링크를 Switch-2 로 옮기지 않고 Equinix 전원 점검 시간이 끝날 때까지 기다렸다. 장애는 6월 12일 03:45 UTC 에 끝났다.
후속 조치
- 진행 중인 장애를 알리는 데 걸리는 시간을 줄인다. 장애 알림은 https://twitter.com/OSM_Tech 로 낸다.
- 스위치의 PSU 와 팬 상태를 모니터링하고 알림을 건다.
- Cisco SG550X-48 스위치 Switch-1, Switch-2 와 Cisco Redundant Power System 을 이중 전원을 갖춘 Juniper EX4300 스위치로 바꾼다. 부품 공급 부족으로 설치가 늦어졌고, 2022년 7월 19일 기준 모든 부품이 현장에 도착해 설치를 기다린다.
- 이중 전원을 받는 대역 외 접속 장비인 4G 모뎀 시리얼 콘솔 서버를 암스테르담에 둔다. 2022년 6월 20~22일 현장 방문 때 설치를 마쳤다.
- 이중 업링크를 설치한다. 2022년 7월 19일 기준 아직 설치되지 않아 운영 팀이 계속 챙기고 있다.
- 지금은 실수하기 쉬운 수동 절차인 사이트 페일오버를 더 쉽고, 손이 덜 가고, 덜 위험하게 만든다.
- 운영 SRE 를 위한 당번 호출 시스템을 들인다. 2022년 7월 19일 기준 업체와 협상 중이다.
- 한 사람이 24시간 내내 당번을 설 수 없으므로 장기적으로 SRE 팀을 늘린다.
- 전원, 네트워크, 상위 링크, 서비스 장애에 대비한 장비 페일오버 시험을 계속하고 정식 절차로 만든다.
교훈
–
출처
참고 문서
- https://github.com/openstreetmap/operations/issues/621
- https://github.com/openstreetmap/operations/issues/632
- https://github.com/openstreetmap/operations/issues/689
- https://github.com/openstreetmap/operations/issues/656
- https://github.com/openstreetmap/operations/issues/655
- https://github.com/openstreetmap/operations/issues/635
관련 사례
IL-0239LLM 개발 클러스터 Acme 의 Seren 과 Kalos 에서 사전 학습 작업이 하드웨어, 네트워크, 프레임워크 오류로 자주 실패해 학습 진행을 잃었다Shanghai AI Laboratory · 2024같은 원인 · 공통 데이터센터 전력·냉각
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0525
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0525/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.