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

사례2건

2건 중 1~2번째

  1. 증상

    2024년 6월 12일 12:06 US/Pacific 부터 Vertex AI Online Prediction, Dialogflow CX, Agent Assist 에서 여러 리전에 걸쳐 오류율이 올라갔다. 영향을 받은 리전은 us-central1, asia-southeast1, europe-west3, europe-west4, us-east1, us-west1, northamerica-northeast1, us-east4 였다.

    촉발

    6월 8일부터 새로운 형태의 GenerateContent API 요청이 Vertex Serving Prediction API 서버에 간헐적인 세그폴트를 일으켰고, 6월 12일 이런 요청의 비율이 늘었다.

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

    6월 10일 07:35 US/Pacific 에 내부 운영 모니터링이 엔지니어들에게 세그폴트 문제를 알렸다. 이때는 고객 영향이 없었다. 6월 12일 12:06 에는 Vertex Prediction 위에 만든 여러 서비스에서 운영 중인 사용자 요청이 영향을 받았다는 보고가 올라왔다.

    조치
    • 6월 12일의 새 장애가 6월 10일에 찾은 세그폴트와 원인이 같다는 것을 확인했다.
    • 이미 진행 중이던 수정본 배포를 앞당겨 15:59 US/Pacific 에 마쳤다.
    후속 조치
    • 서버 바이너리 문제의 초기 신호를 운영 상태 분석에서 잡아내고 제때 조사하게 한다.
    • 기능 변경과 업데이트를 운영에 내보낼 때 릴리스 검증을 거치게 한다.
    교훈

    로드밸런서가 크래시로 내려간 서버를 피해 요청을 보내는 동안에는 고객 영향이 보이지 않는다. 하지만 크래시를 일으키는 요청이 늘면 동시에 빠지는 서버가 늘어 서빙 용량이 부하를 감당하지 못하게 된다. 이번에는 6월 10일에 원인과 수정본이 이미 있었지만 단계적 배포가 끝나기 전에 고객 영향이 시작됐다. 서버 바이너리의 초기 이상 신호는 고객 영향이 없을 때도 운영 상태 분석에서 잡고 제때 조사해야 한다.

  2. 증상

    2022년 6월 23일 18시 56분 PDT, UTC 로는 6월 24일 01시 56분에 여러 모델이 한꺼번에 오프라인이 됐다. 일부 파인튜닝 모델인 curie 와 davinci, 일부 Codex 베타 모델인 code-davinci-001 과 code-cushman-001, 일부 구형 GPT 모델인 curie, babbage, ada, 그리고 모든 Embeddings 모델이 응답하지 않았다.

    촉발

    사람의 실수로 운영 클러스터 하나에 파괴적인 작업이 실행돼 클러스터가 완전히 내려갔다. 안전장치에 예상하지 못한 구멍이 있었고, 그 작업이 어떤 영향을 주는지 알려 주는 정보가 미묘하게 빠져 있었다.

    원인
    구성 요소
    기여 요인
    조치
    • 내려간 클러스터가 맡던 모델을 남은 두 운영 클러스터에 다시 배치했다.
    • 클러스터 구성 중 AKS 연결이 끊기자 Azure 지원팀과 함께 VPN 링크를 다시 만들었다.
    • Azure Private Link 연결이 다시 끊기자 Azure 지원팀과 우회 방법을 만들었다.
    • 업그레이드한 쿠버네티스 버전이 인그레스와 호환되지 않자 클러스터를 지우고 처음부터 다시 만들었다.
    • 05시 30분부터 06시 30분 PDT 사이에 다시 만든 클러스터로 트래픽을 옮겼다.
    후속 조치
    • 이번 클러스터처럼 운영에 꼭 필요한 인프라가 실수로 바뀌지 않도록 검사와 잠금을 더한다. 기존 보호 장치는 범위가 좁아 이번 같은 클러스터 장애를 막지 못했다.
    • 실행 중인 작업이 더 잘 보이게 하고, 시스템 구성 요소의 이름이 글자만 봐도 서로 확실히 구별되도록 바꾼다.
    • AKS 네트워크 연결 문제를 Azure 와 계속 조사해 새 클러스터 작업이 다시 방해받지 않게 한다.
    • 이번에 드러난 클러스터 장애 유형을 플레이북에 넣고, 새 클러스터와 인프라를 구성하는 절차를 고친다.
    • 쿠버네티스를 체계적으로 업그레이드하고, 앞으로 버전이 뒤처지지 않도록 업그레이드할 시간을 따로 확보한다.
    • 파인튜닝 모델을 여러 클러스터에 나눠 배치하고, 클러스터 사이 복제를 더 자동으로 하는 방법을 만든다.
    • Azure Blob Storage 를 분산하고 복제해 파인튜닝 모델을 더 빠르고 안정적으로 불러올 수 있게 한다.
    • Azure Blob Storage 병목을 덜어 줄 노드 간 캐시의 배포를 마무리한다.
    • 모델 가중치를 저장하는 방식을 바꿔 더 효율적이고 빠르게 불러올 수 있게 한다.
    교훈

    클러스터 하나를 통째로 잃으면 평소의 여유 용량이 한 번에 바닥난다. GPU 처럼 몇 시간 안에 늘릴 수 없는 자원을 쓰는 서비스는 남은 클러스터만으로 완전히 되살릴 수 없다. 운영 클러스터를 지울 수 있는 작업에는 그 영향을 분명히 보여 주는 정보와 잠금이 있어야 한다. 쿠버네티스 버전이 뒤처져 있으면 급하게 하는 업그레이드가 인그레스 호환성 같은 새 문제를 만든다. AKS 는 다운그레이드가 되지 않아 되돌릴 수도 없었다. 대용량 모델을 처음부터 다시 올리는 상황에서는 스토리지 대역폭과 캐시 무효화가 복구 시간을 좌우했다.

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

이 2건에서 가장 많이 나오는 구성 요소: 클라우드 로드 밸런서, 모델 추론 서버. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별2