IP 재사용과 Stale Connection이 만났을 때 벌어지는 트러블슈팅의 기록
Istio Ambient 모드 도입 후 마주한 가장 까다로운 503 에러의 원인을 로그 분석, 패킷 캡처, 소켓 상태 확인을 통해 심층 추적합니다. Envoy와 ztunnel 사이의 커넥션 생명주기 관리 허점을 발견하고, 서비스 중단 없는 배포를 위한 현실적인 해결책을 제시합니다.
Istio Ambient 모드를 운영하거나 도입 예정인 팀에게 필수적인 사례 연구이며, 네트워크 이슈 발생 시 pcap 분석과 소켓 상태 확인을 통한 논리적 디버깅 과정을 학습하기에 매우 훌륭한 자료입니다.
Istio Ambient 모드 환경에서 워크로드 배포 시 간헐적으로 503 에러가 발생했으며, 이는 Waypoint 프록시가 이미 종료된 이전 Pod의 stale connection을 새 Pod로의 요청에 재사용하면서 발생한 문제였습니다.
단기적으로는 Envoy의 retry 정책을 확장하여 'reset' 발생 시 자동 재시도하도록 설정하고, 장기적으로는 Istio 업스트림에 커넥션 풀 키(key)에 Pod UID 등의 메타데이터를 포함하거나 ztunnel의 Graceful Close 기능을 강화할 것을 제안했습니다.
Waypoint 수준에서 reset에 대한 retry를 적용함으로써 stale connection 재사용으로 인한 UpstreamConnectionTermination(503) 문제를 효과적으로 해소하고 서비스 안정성을 확보했습니다.
Trade-off
RST에 대한 retry는 증상을 완화하는 임시 조치이며, 멱등성이 보장되지 않는 API의 경우 중복 실행에 따른 부작용이 발생할 수 있어 적용 시 주의가 필요합니다.
Istio Ambient 모드에서 mTLS와 트래픽 터널링을 위해 사용하는 HTTP/2 기반의 오버레이 네트워크 프로토콜입니다.
Ambient 모드에서 L7 레이어 처리를 담당하는 공유 프록시로, 워크로드의 입출력 트래픽을 관리하고 정책을 적용합니다.
통신 한쪽 끝에서는 커넥션이 유효하지 않다고 보지만, 반대쪽은 여전히 연결되어 있다고 믿고 있는 비정상적인 상태입니다.

