IL-0541 Twingate · 2023-02-14networking
Twingate 의 us-east4 와 europe-west6 Relay 클러스터에 Client 와 Connector 가 접속하지 못했다
Twingate 는 Relay 클러스터 인프라에 스팟 인스턴스 스케일링을 넣는 작업을 하고 있었고, 2023년 2월 14일 01:00 UTC 에 이 변경을 Terraform 으로 전 세계 Relay 클러스터에 적용했다. 배포된 Terraform 설정에 오류가 있어, Relay 클러스터의 네트워크 방화벽 규칙을 제대로 정하는 데 꼭 필요한 네트워크 태그가 빠졌다. 그 결과 Client 와 Connector 는 클러스터를 찾을 수는 있지만 접속할 수는 없게 돼 교착 상태에 빠졌다.
문제는 us-east4 와 europe-west6 두 클러스터에서만 났다. 클러스터 전체 크기에 따라 달라지는 설정 차이가 있었기 때문이다. 스테이징 환경은 이 크기 차이와 그에 따라 달라지는 설정 결과를 제대로 반영하지 않았고, 그래서 테스트에서 문제가 드러나지 않았다.
Twingate 는 01:40 UTC 에 두 클러스터의 연결 수가 줄어든 것을 알아챘고, 02:04 UTC 에 두 클러스터의 파드를 꺼서 Client 와 Connector 가 다음으로 가까운 Relay 클러스터로 다시 붙게 했다. 연결이 다른 클러스터로 다시 나뉜 뒤 전체 연결 지표는 정상으로 보였다. 03:30 UTC 에 설정 오류를 고치고 두 클러스터를 다시 배포해 문제를 해결했다.
- 심각도
- –
- 영향 범위
- Client and Connector connections to the Relay clusters in us-east4 and europe-west6; after failover, some slowness for customers close to those clusters
- 영향 사용자
- –
- 지역
- us-east4, europe-west6
- 감지까지
- –
- 복구까지
- –
증상
Terraform 변경을 전 세계 Relay 클러스터에 적용하던 중 01:40 UTC 에 us-east4 와 europe-west6 두 클러스터의 연결 수가 줄어드는 것이 보였다. Client 와 Connector 는 두 클러스터를 찾을 수는 있었지만 접속할 수는 없어 교착 상태에 빠졌다.
상태 페이지에는 02:06 UTC 에 미국 Relay 클러스터 2 의 문제를 조사한다는 글이 먼저 올라왔다. 02:37 UTC 에는 버지니아의 미국 클러스터와 취리히의 유럽 클러스터 두 곳이 문제라고 알렸다.
두 클러스터를 내린 뒤 Client 와 Connector 는 다음으로 가까운 Relay 클러스터에 자동으로 다시 붙었다. 상태 페이지는 이 때문에 두 클러스터 가까이에 있는 고객 일부는 접속이 느려질 수 있다고 안내했다.
엔지니어들은 리전 단위의 클라우드 사업자 장애가 아닌지 확인하려고 클라우드 인프라 사업자에게 먼저 연락했다.
증상 네트워크 도달 불가
원인
원인 설정 변경
- 촉발
- 2023년 2월 14일 01:00 UTC 에 Relay 클러스터 인프라에 스팟 인스턴스 스케일링을 넣는 Terraform 변경을 전 세계 모든 Relay 클러스터에 적용하기 시작했다. 적용에는 약 45분이 걸렸다.
감지
01:40 UTC 에 엔지니어들이 us-east4 와 europe-west6 두 클러스터의 연결 수가 줄어든 것을 보고 조사를 시작했다.
조치
- 02:04 UTC 에 영향을 받은 두 클러스터의 파드를 꺼서 Client 와 Connector 가 다음으로 가까운 Relay 클러스터로 다시 붙게 했다.
- 03:30 UTC 에 Terraform 설정 오류를 고치고 영향을 받은 클러스터를 다시 배포했다.
후속 조치
- 스테이징 환경에 Relay 클러스터의 크기 차이와 설정 차이를 정확히 반영한다.
- 기능 개발 브랜치에서 운영의 모든 설정 변형을 포함해 모든 환경의 Terraform plan 을 자동으로 만든다.
- 필요한 네트워크 방화벽 태그가 없으면 Connector 와 Client 가 그 클러스터를 발견하지 못하도록 Relay 헬스 체크를 강화한다.
- Relay 클러스터 인프라에 Terraform 으로 단계적 롤아웃을 하는 방법을 조사하고 도입한다.
- 중기 계획으로 Connector 가 여러 클러스터에 연결할 수 있게 해 리전 단위의 Relay 클러스터 문제를 자동으로 처리한다.
교훈
–
출처
- https://status.twingate.com/incidents/5y3blrdzvw25 · official-status
관련 사례
같은 원인 · 공통 VPC 라우팅 테이블과 방화벽 규칙, Terraform
IL-0091Terraform 으로 노드 인스턴스 타입을 바꾸자 노드가 한꺼번에 교체되어 사용자 운영 파드가 모두 지워지고 서비스가 내려갔다UK Ministry of Justice · 2023같은 원인 · 공통 Terraform
IL-0109로그 수집을 고치려던 EKS 노드 롤오버가 꼬이면서 Auto Scaling 그룹이 정상 워커 노드를 모두 종료해 클러스터에 노드가 하나도 남지 않았다.DFDS · 2023 · sev1같은 원인 · 공통 Terraform
같은 원인 · 공통 Terraform
같은 원인 · 공통 Terraform
같은 원인 · 공통 Terraform
IL-0061Terraform 상태 파일이 리뷰 빌드에서 바뀐 데다 권한 차이까지 겹쳐 Terraform 이 운영 GKE 클러스터 세 개 중 두 개를 삭제했다Spotify · 2019같은 원인 · 공통 Terraform
같은 원인 · 공통 VPC 라우팅 테이블과 방화벽 규칙
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0541
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0541/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.