Incident Library
  • 원인
  • 구성 요소
  • 증상
  • 기여 요인
  • 사례

사례6건

6건 중 1~5번째

  1. 증상

    Berlin 의 VMware 기반 Private Cloud 에서 관리 VPN 접속과 개별 VM 을 오가는 트래픽이 모두 끊겼다.

    촉발

    계획된 정비 시간에 작업자가 관리 장비에 새 VLAN 을 더하는 명령을 잘못 실행했다. 코어 장비와 관리 장비 사이 트렁크의 기존 VLAN 이 덮어써지고 새 VLAN 하나만 남았다.

    원인
    구성 요소
    기여 요인
    조치
    • 복구 막바지에 영향을 받은 서비스를 재시작했다. 이 재시작으로 짧은 2차 장애가 났다.
    후속 조치
    • 관리 장비가 더 잘 분리되도록 구조 전체를 감사한다. 목표 시점은 2026년 3분기다.
    • 구성 안전장치나 자동화 스크립트 같은 방법으로 의도하지 않은 VLAN 변경을 막는 방안을 검토하고 적용한다. 목표 시점은 2026년 1분기다.
  2. 증상

    2024년 9월 20일 11:24 에 live 클러스터 서비스를 감시하는 Pingdom 에서 우선순위 높은 알림이 울렸고, 사용자들은 서비스 주소를 찾을 수 없다고 알려 왔다.

    촉발

    11:21 에 infrastructure-vpc-live-1 파이프라인의 일시 정지를 풀자, 팀이 미처 알아보지 못한 채 대기열에 있던 PR 이 자동으로 실행돼 EKS 서브넷 라우팅 테이블 연결을 지웠다.

    원인
    구성 요소
    기여 요인
    감지

    11:24 에 live 클러스터 서비스를 감시하는 Pingdom 이 Cloud Platform 팀에 우선순위 높은 알림을 보냈다. 11:26 부터는 사용자들이 #ask 채널에 서비스를 쓸 수 없다고 알려 왔다.

    조치
    • 11:32 에 Cloud Platform 팀이 로컬에서 terraform apply 를 다시 실행해 서브넷 라우팅 테이블 연결을 다시 만들었고, 서비스를 쓸 수 있게 됐다.
    후속 조치
    • 인프라 파이프라인을 멈추고 다시 켜는 절차를 검토하고 고쳐, 팀원 모두가 파이프라인을 멈추고 다시 켰을 때의 영향을 알게 한다.
    • 인프라를 손으로 고치는 동안 대기열의 PR 실행을 멈출 방법을 찾는다.
    • 인프라 파이프라인의 plan 작업과 apply 작업을 더 잘 격리할 방법을 찾는다.
  3. 증상

    Facebook 데이터 센터 사이의 서버 연결과 데이터 센터와 인터넷 사이의 서버 연결이 한꺼번에 완전히 끊겼다. DNS 서버는 동작하고 있었지만 인터넷에서 닿지 않아 누구도 Facebook 서버를 찾을 수 없었다. 백본이 통째로 빠지자 DNS 서버가 있는 작은 시설들이 스스로 비정상이라고 판단해 BGP 광고를 거둬들였기 때문이다.

    촉발

    일상적인 유지보수 작업 중에 전 세계 백본 용량의 가용성을 평가하려고 내린 명령이 의도치 않게 백본 네트워크의 모든 연결을 끊었다. 이런 명령을 검사해 실수를 막는 감사 도구가 버그 때문에 이 명령을 멈추지 못했다.

    원인
    구성 요소
    기여 요인
    조치
    • 주 네트워크 접근과 out-of-band 접근이 모두 끊겨, 팀은 엔지니어를 데이터 센터 현장에 보내 문제를 디버깅하고 시스템을 다시 시작하게 했다.
    • 보안 접근 절차를 거쳐 현장 인력이 서버를 다룰 수 있게 된 뒤 문제를 확인하고 백본을 다시 온라인으로 올렸다.
    • storm 훈련에서 얻은 경험을 살려 서비스를 다시 켜면서 늘어나는 부하를 조심스럽게 관리했다.
    후속 조치
    • 전 세계 백본이 끊기는 상황을 storm 훈련으로 시뮬레이션할 방법을 찾는다.
    • 테스트와 훈련, 전반적인 복원력을 강화해 이런 사고가 최대한 드물게 일어나게 한다.
    교훈

    무단 접근을 막으려고 강화한 보안이, 공격이 아니라 스스로 낸 실수에서 비롯된 장애의 복구를 늦췄다. Meta 는 드문 사고에서 복구가 느려지더라도 평소의 보안을 크게 높이는 편이 낫다고 봤다. 서비스, 데이터 센터, 리전 전체를 내리는 storm 훈련이 부하를 다시 올리는 데 도움이 됐지만, 전 세계 백본이 끊기는 상황은 훈련해 본 적이 없었다.

  4. 증상

    2019년 2월 7일 22:17 UTC 부터 US-East 에 있는 여러 고객의 Acquia Cloud Enterprise 사이트가 불안정해지거나 멈췄다.

    촉발

    표준 패키지에 없는 시스템 진단 정보를 모으려고 임시 파일 시스템을 설정하던 중, 사람의 실수로 US-East 공유 VPC 의 보안 그룹에서 규칙 하나가 지워졌다.

    원인
    구성 요소
    기여 요인
    감지

    구성 드리프트 알림은 제대로 울렸다. 하지만 드리프트 오류를 다루는 절차 때문에 그 알림을 장애 시간을 줄일 만큼 제때 확인하지 못했다. 22:46 UTC 에 상태 페이지에 조사 중이라는 공지가 올라왔다.

    조치
    • 보안 그룹에서 지워진 규칙을 손으로 되살렸고, 23:25 UTC 에 장애가 끝났다.
    후속 조치
    • 관련된 모든 팀과 함께 내부 작업 절차를 고쳐 비슷한 일이 다시 일어나지 않게 한다.
    • VPC 보안 그룹의 구성 드리프트를 내부 팀에 더 빨리 알리는 장치를 더 만든다.
  5. 증상

    Mackerel 을 온프레미스 데이터 센터에서 AWS 로 옮긴 뒤 애플리케이션 동작을 확인하다가, 특정 시간대의 데이터가 사라진 것을 발견했다. 2017년 8월 7일 14시 30분부터 15시 30분 사이에 PostgreSQL 서버에서 갱신된 데이터가 없었다.

    촉발

    새 마스터인 db001 로 접속을 바꾸고 한 시간 뒤 db001 과 네트워크 통신이 끊겼고, 복제가 멈춰 있던 스탠바이 서버 db002 로 의도하지 않은 장애 조치가 일어났다.

    원인
    구성 요소
    기여 요인
    감지

    마이그레이션 작업 뒤 애플리케이션 동작을 확인하던 중 특정 시간대의 데이터가 사라진 것을 발견했다.

    조치
    • db001 에 남은 테이블 데이터로 손으로 복구할 수 있는지 검토했지만, 이미 많은 데이터가 갱신되어 테이블 사이 정합성을 지키며 db002 에 반영하기 어렵다고 보고 포기했다.
    • 점검 전 베이스 백업, db001 에 남은 WAL, 백업 서버로 보내 둔 WAL 아카이브로 PostgreSQL 의 PITR 복구를 시도했지만, 갈라진 두 타임라인을 이어서 복구할 수 없어 포기했다.
    • 장애 조치 직후 db002 를 마스터로 하고 새 슬레이브 서버 db003 을 만들어 db002 와 db003 으로 이중화했다.
    • 장애가 난 db001 은 조사용으로 점검 상태에 남겨 두었다.
    • db002 에서 db001 과 같은 문제가 나지 않는지 일정 시간 지켜본 뒤 마이그레이션 점검을 마쳤다.
    후속 조치
    • PostgreSQL 레플리카 생성 스크립트가 recovery.conf 에 recovery_target_timeline = 'latest' 를 기본으로 넣도록 바꾼다.
    • Serverspec 같은 서버 구성 관리 테스트 도구에 recovery.conf 안에 recovery_target_timeline = 'latest' 문자열이 있는지 확인하는 항목을 더한다.
    교훈

    Hatena 는 이 문제가 평소 운영에서는 일어나지 않지만, PostgreSQL 버전을 올리거나 다른 리전으로 옮길 때 같은 구성을 다시 쓸 수 있다고 보았다. recovery_target_timeline = 'latest' 는 평소 스탠바이 서버에 두어도 문제가 없으므로, 사람이 빠뜨릴 여지를 없애려고 슬레이브를 만들 때 기본으로 넣도록 운영을 바꿨다. 이 설정을 쓰려는 사람은 자기 구성에서 문제가 없는지 먼저 확인하라고 덧붙였다.

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

이 6건에서 가장 많이 나오는 구성 요소: 데이터베이스, VPC 라우팅 테이블과 방화벽 규칙. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별1

운영 실수6건

  1. IL-0349 Berlin 의 VMware 기반 Private Cloud 에서 관리망과 스토리지, 외부 라우팅이 함께 끊겼다
  2. IL-0244 EKS 서브넷의 라우팅 테이블 연결이 사라져 live 클러스터의 Cloud Platform 서비스에 접근할 수 없었다
  3. IL-0221 유지보수 명령이 Facebook 백본 네트워크의 연결을 모두 끊어 데이터 센터와 DNS 서버가 인터넷에서 닿지 않게 됐다.
    Meta2021
  4. IL-0245 US-East 의 Acquia Cloud Enterprise 사이트들이 불안정해지고 멈췄다
    Acquia2019
  5. IL-0431 AWS 로 옮기는 점검 중 PostgreSQL 이 의도하지 않게 장애 조치되어 한 시간 동안 갱신된 데이터가 사라졌다
    Hatena2017
  6. IL-0337 US East 리전 한 가용 영역에서 네트워크 변경으로 EBS 노드가 복제본과 끊겨 EBS 볼륨이 멈췄다