Small Asteroid Blog

Ingress Keep-Alive 본문

클라우드 및 인프라/Kubernetes

Ingress Keep-Alive

작은소행성☄️ 2025. 5. 26. 09:42
728x90

ingress keep-alive는 Kubernetes 환경이나 클라우드 인프라에서 많이 등장하는 개념인데, 네트워크 레이어에서 "연결을 얼마나 오래 유지할지"를 결정하는 중요한 설정입니다.

 

개념 설명

  • Ingress
    Kubernetes에서 Ingress는 외부 트래픽(HTTP/HTTPS 등)을 내부 서비스로 라우팅해주는 리소스입니다.
    일반적으로 NGINX, Traefik, AWS ALB 등 다양한 Ingress Controller가 사용됩니다.
  • Keep-Alive
    Keep-Alive는 HTTP/1.1부터 기본으로 제공되는 기능으로,
    클라이언트와 서버가 하나의 TCP 연결을 여러 요청/응답에 재사용하도록 하는 옵션이에요.

 

Ingress Keep-Alive란?

Ingress Controller가 외부 클라이언트(예: 브라우저)와 백엔드 서비스(예: 웹 서버) 간에 HTTP 연결을 끊지 않고 일정 시간(또는 요청 개수) 동안 "유지"하는 기능을 의미합니다.

  • 보통 keep-alive timeout, max keep-alive requests 등의 파라미터로 조절합니다.
  • 예시: keepalive_timeout 75s; (NGINX의 경우)

 

왜 중요할까?

  • 성능 최적화
    매 요청마다 새로운 TCP 연결을 만들면 느리고 리소스 낭비가 큼.
  • 리소스 관리
    너무 오래 연결을 유지하면 반대로 커넥션이 쌓여서 리소스 고갈 문제가 생길 수 있음.
  • 로드 밸런싱
    Connection reuse 때문에 특정 백엔드에 트래픽이 쏠릴 수도 있음. 적절한 조정 필요.

 

실전 예시 (NGINX Ingress Controller 기준)

nginx.ingress.kubernetes.io/keep-alive
nginx.ingress.kubernetes.io/proxy-connect-timeout
이런 어노테이션이나 ConfigMap을 통해 설정할 수 있음.

예시:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/keep-alive: "10"
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
  • keep-alive: "10"
    → 최대 10개의 keep-alive 커넥션을 유지
  • proxy-connect-timeout: "30"
    → 백엔드와의 연결 대기 시간 30초

 

결론

  • Ingress Keep-Alive = 연결을 일정 시간/요청 수만큼 유지
  • 장점: 속도 ↑, 서버부하 ↓
  • 단점: 너무 길면 커넥션 폭주 위험
  • 적정값: 서비스 특성과 트래픽 패턴에 따라 조정 필
728x90
반응형