로드밸런서 세션 테이블 & DSR & Idle Timeout

핵심 개념

로드밸런서 세션 테이블

  • L4 로드밸런서는 클라이언트 패킷을 어떤 백엔드로 보낼지 추적하기 위해 세션 테이블을 메모리에 유지
  • 자원이 유한하므로 idle timeout 이후 엔트리 삭제
  • 삭제 후 클라이언트가 같은 연결로 패킷을 보내면 → 로드밸런서가 RST 반환

DSR (Direct Server Return)

  • 응답 트래픽이 로드밸런서를 우회하여 서버 → 클라이언트로 직접 전달
  • 로드밸런서가 응답 패킷을 볼 수 없어 세션 활성 판단이 요청 패킷에만 의존 → idle timeout에 더 취약
  • 주로 L4 로드밸런서(LVS, F5 nPath 등)에서 사용

AWS NLB

  • 순수 DSR 아님 — 클라이언트 IP는 보존하지만 응답 트래픽도 NLB를 경유 (Hyperplane 기반)
  • 그러나 세션 테이블 기반으로 동작하므로 idle timeout(350초) 문제는 동일하게 존재

nginx (L7 리버스 프록시)

  • 세션 테이블 방식이 아님 — 클라이언트/백엔드 각각 별도 TCP 연결을 직접 관리
  • 세션 테이블 만료로 인한 RST 문제 없음
  • 대신 자체 timeout 설정(keepalive_timeout, proxy_read_timeout)에 의해 의도적으로 연결 정리
  • 단, nginx 앞에 L4 로드밸런서가 있으면 그 구간에서는 동일한 문제 발생 가능

TCP Keepalive로 세션 유지

  • keepalive_time을 로드밸런서 idle timeout보다 짧게 설정
  • 예: tcp_keepalive_time=60, probes=3, intvl=10 → 60초마다 keepalive 패킷 전송
  • idle timeout 120초 > keepalive 60초 → 세션 테이블 만료 전에 항상 리셋됨

핵심 원칙: keepalive_time < 로드밸런서 idle timeout

정리 비교

구분 L4 LB (DSR) L4 LB (비DSR, NLB) nginx (L7)
세션 테이블 O O X
idle timeout RST 발생 발생 미발생
응답 경로 LB 우회 LB 경유 LB 경유
Keepalive 필요성 높음 높음 낮음 (자체 관리)

Read more

mybloodyvalentine 3집 loveless

마이블러디발렌타인의 정규 2집 loveless 엘피를 김밥레코즈에서 5만원가량의 금액으로 구매. 요건 평생 들어도 질리지않을거같아 바이닐로 구매했다. 물리적인 이슈가 발생하지않는 한 이제 스트리밍 플랫폼의 의존성없이 평생 청취 가능하다 내부 크레딧 개인적으로 빌린다 부처의 맥아리없는 보컬을 참 좋아한다. 바이닐 커버를 벗기면 평범하다 0:00 /0:12 1× 2집 loveless만큼 3집 mbv도 좋아해서 아마

By 권동혁