Network
Network Load Balancers(NLB)
Network Load Balancers(NLB)
Network Load Balancer(NLB)는 클라이언트에게 단일 접점(single point of contact)을 제공한다. ELB, ALB와의 차이는 ELB vs ALB vs NLB에 정리했다. 클라이언트는 NLB에게 요청을 보내고 NLB는 그 요청을 EC2 인스턴스(하나 이상의 Availability Zones)와 같은 타겟들에게 보낸다.
Load balancer state
provisioning: The Network Load Balancer is being set up. (설정 중)active: The Network Load Balancer is fully set up and ready to route traffic. (트래픽을 받을 준비 완료)failed: The Network Load Balancer couldn’t be set up. (설정 실패)
Connection idle timeout
클라이언트가 NLB를 통해 보내는 각 TCP 요청마다 NLB는 그 연결의 상태를 추적한다. 클라이언트나 타겟이 idle timeout보다 오래 데이터를 보내지 않으면 NLB는 그 연결을 더 이상 추적하지 않는다. 그 뒤에 데이터를 보내면 연결이 더 이상 유효하지 않다는 뜻의 TCP RST 패킷을 받는다.
Elastic Load Balancing은 TCP 흐름의 idle timeout을 350초로 둔다. 이 값은 수정할 수 없습니다. 클라이언트나 대상은 TCP keepalive 패킷을 보내 idle timeout을 다시 시작할 수 있다. 단, TLS 연결을 유지하기 위해 전송된 keepalive 패킷은 데이터나 페이로드를 포함할 수 없다.
TLS 리스너가 클라이언트나 대상에서 TCP keepalive 패킷을 수신하면 Network Load Balancer는 TCP keepalive 패킷을 생성하여 20초마다 프론트엔드와 백엔드 연결에 모두 전송한다. 이 동작은 수정할 수 없다.
UDP는 연결 없는 방식이지만, Network Load Balancer는 소스 및 대상 IP 주소와 포트를 기반으로 UDP 흐름 상태를 유지한다. 그래서 같은 흐름에 속하는 패킷은 같은 타겟으로 간다. idle timeout이 지나면 Network Load Balancer는 들어오는 UDP 패킷을 새 흐름으로 간주하여 새 대상으로 라우팅한다. Elastic Load Balancing은 UDP 흐름에 대한 유휴 시간 초과 값을 120초로 설정한다.
EC2 인스턴스는 반환 경로를 설정하기 위해 30초 이내에 새 요청에 응답해야 한다.
References
Recently
2024년 9월 3일 발표된 내용에 의하면 이제 NLB의 TCP idle timeout은 350초로 고정된 값이 아니라 60~6000초로 변경이 가능하다. 기본값은 하위 호환을 위해 350초로 남았다. 현재 문서 기준으로 TLS 리스너의 idle timeout은 여전히 350초이고 바꿀 수 없으며, UDP 흐름의 120초도 바꿀 수 없다(Connection idle timeout).
AWS Network Load Balancer now supports configurable TCP idle timeout
댓글
아직 댓글이 없습니다