DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 채널 톡
  • Related reads#Istio
#DevOps

Istio 3-1편: 503과 Half-open Connection

Istio 3-1편: 503과 Half-open Connection
01

Summary

Istio Ambient 모드 배포 중 503 에러? '유령 커넥션'을 잡아라!

IP 재사용과 Stale Connection이 만났을 때 벌어지는 트러블슈팅의 기록

Istio Ambient 모드 도입 후 마주한 가장 까다로운 503 에러의 원인을 로그 분석, 패킷 캡처, 소켓 상태 확인을 통해 심층 추적합니다. Envoy와 ztunnel 사이의 커넥션 생명주기 관리 허점을 발견하고, 서비스 중단 없는 배포를 위한 현실적인 해결책을 제시합니다.

  • 01Waypoint가 종료된 Pod의 IP:Port 커넥션을 살아있는 것으로 착각하여 재사용하는 메커니즘 분석
  • 02tcpdump와 Wireshark를 활용해 터널 내부(HBONE)와 외부 트래픽을 비교 분석하여 핸드쉐이크 생략 현상 포착
  • 03AWS VPC CNI 환경의 빠른 IP 재할당이 stale connection 문제를 촉발하는 주요 트리거임을 입증
  • 04Istio 업스트림(ztunnel/Envoy) 아키텍처에서 커넥션 풀링 방식의 근본적인 결함 식별
  • 05EnvoyFilter를 통한 retry_on: reset 설정으로 프로덕션 환경의 503 에러 전파 차단 성공

+RECOMMENDATION

Istio Ambient 모드를 운영하거나 도입 예정인 팀에게 필수적인 사례 연구이며, 네트워크 이슈 발생 시 pcap 분석과 소켓 상태 확인을 통한 논리적 디버깅 과정을 학습하기에 매우 훌륭한 자료입니다.

The Problem

Istio Ambient 모드 환경에서 워크로드 배포 시 간헐적으로 503 에러가 발생했으며, 이는 Waypoint 프록시가 이미 종료된 이전 Pod의 stale connection을 새 Pod로의 요청에 재사용하면서 발생한 문제였습니다.

The Solution

단기적으로는 Envoy의 retry 정책을 확장하여 'reset' 발생 시 자동 재시도하도록 설정하고, 장기적으로는 Istio 업스트림에 커넥션 풀 키(key)에 Pod UID 등의 메타데이터를 포함하거나 ztunnel의 Graceful Close 기능을 강화할 것을 제안했습니다.

The Result

Waypoint 수준에서 reset에 대한 retry를 적용함으로써 stale connection 재사용으로 인한 UpstreamConnectionTermination(503) 문제를 효과적으로 해소하고 서비스 안정성을 확보했습니다.

Trade-off

RST에 대한 retry는 증상을 완화하는 임시 조치이며, 멱등성이 보장되지 않는 API의 경우 중복 실행에 따른 부작용이 발생할 수 있어 적용 시 주의가 필요합니다.

03

Key Concepts

Concept · 01

HBONE (HTTP-Based Overlay Network)

Istio Ambient 모드에서 mTLS와 트래픽 터널링을 위해 사용하는 HTTP/2 기반의 오버레이 네트워크 프로토콜입니다.

  • Waypoint와 ztunnel 사이의 통신을 캡슐화하는 데 사용됩니다.
  • 커넥션 풀이 이 터널링된 커넥션을 관리하며 이번 장애의 주요 지점이 되었습니다.
Concept · 02

Waypoint Proxy

Ambient 모드에서 L7 레이어 처리를 담당하는 공유 프록시로, 워크로드의 입출력 트래픽을 관리하고 정책을 적용합니다.

  • ORIGINAL_DST 클러스터를 통해 목적지 Pod로의 HBONE 커넥션을 유지합니다.
  • stale connection을 폐기하지 않고 재사용하여 503 에러를 발생시키는 주체로 분석되었습니다.
Concept · 03

Half-open (Stale) Connection

통신 한쪽 끝에서는 커넥션이 유효하지 않다고 보지만, 반대쪽은 여전히 연결되어 있다고 믿고 있는 비정상적인 상태입니다.

  • ztunnel이 Pod 종료 시 커넥션을 명시적으로 닫지 않아 Waypoint에 stale 상태로 남게 되었습니다.
  • 동일 IP를 할당받은 새 Pod에게 핸드쉐이크 없이 데이터를 전송하게 만들어 TCP RST 응답을 유발합니다.
Continue reading · same source

채널 톡More from 채널 톡

View all posts from 채널 톡
  • [신청 중] AI Product Frontiers: AI 시대, 최전선에서 방향을 만드는 사람들

    MeetupAI InfrastructureArtificial Intelligence
    1일 전
  • 채널콘 2026 디자인 비하인드

    FramerGenerative AILocalization
    2일 전
  • Swift 6 어때요? (1): 스레드, 블록, 태스크

    Swift ConcurrencyGCDRxSwift
    2일 전
  • 5년, 340개의 이야기로 이어온 개발 문화

    Developer RelationsKnowledge SharingEngineering Culture
    3일 전
  • 유저챗 개인정보 마스킹 개발기

    RegexRE2ReDoS
    4일 전

Related reads#Istio

Explore #Istio
채널 톡

Istio 3-4편: 507 status code와 istiod disconnected 탐지

#Istio1개월 전
채널 톡

Istio 3-2편: Partially Enrolled Pod와 Untaint Controller

#Istio1개월 전
Flex·ArgoCD

[인프라를 소프트웨어처럼 3/5] 환경은 브랜치에서 태어난다: Environment Variant

#Istio1개월 전
NAVER D2·Kubernetes

MLXP : Kubernetes LLM Serving 최적화 기술 도입기

#Istio2개월 전
채널 톡

Istio 2편: Envoy config로 해부하는 Ambient mode

#Istio4개월 전

Source

채널 톡
채널 톡
Engineering Blog

Published · June 26, 2026

Topics

IstioEnvoyService MeshKubernetesNetworking