AWS LB 에는 클라이언트 IP 보존을 위한 옵션이 있다. 단 이 옵션을 EKS 환경에서 이해없이 사용 시 일부 트래픽이 응답을 받지 못하는 현상이 발생한다. 이에대해 알아보자

 

1) 클라이언트 IP 보존 기능이 비활성화 되었을 때 통신의 흐름
- 기본적으로 클라이언트 IP 보존 기능이 비활성화 되면 NLB 는 출발지의 IP 주소를 NLB 의 내부 IP 주소로 재기록하여 타겟과 통신을 하게 됩니다.(NLB 의 IP로 대상을 찾음)
다만, NLB 의 타겟이 다시 타겟의 NLB 를 재귀적으로 호출 (예> POD -> NLB -> POD) 하는 구조일때, 클라이언트 IP 보존 기능이 활성화 되어 있을 경우 타겟인 POD 는 자신의 IP 주소가 목적지인 패킷을 전달받을 수 있으며 (여러 타겟들이 있을 경우), 이러한 패킷에 대해서는 Timeout 이 발생할 수 있음
따라서 위와 같은 상황에서는 간헐적으로 통신이 실패하는 상황이 발생할 수 있으며, 위와 같은 아키텍처에서는 클라이언트 IP 주소 보존 기능을 비활성화 권장

2) 해당 기능이 활성화 되어있을 때 통신의 흐름 (예> 포트/IP 가 변경되는지 등)
- 기본적으로 해당 기능이 활성화 되어 있을때는 포트, IP 주소가 재기록 되지 않음
- 다만, 헤어핀 (응답 패킷이 타겟에서 NLB 를 거치지 않고 클라이언트로 직접 전달) 기능은 지원하지 않으며, 다시 NLB 를 거쳐 NLB 가 클라이언트에게 직접 응답하도록 구성되어 있습니다.
- 즉, 이러한 경우 응답 패킷이 정상적으로 돌아가지 않는 것은 아니며, 출발지/목적지 IP 주소가 변경되지 않아도 NLB 의 내부동작에 의해 NLB 를 거쳐 클라이언트로 응답 패킷이 반환됨

 

요약하자면, EKS 에서 서비스를 사용할 경우, POD 가 NLB를 통해 POD를 재호출 하는경우 트래픽이 정상적으로 흐르지 않으며, 일부 트래픽에서 TIME OUT 이 발생 한다. 따라서, EKS 에서 서비스를 할 경우에는 SVC 옵션에 어논테이션을 추가하여 Client IP 보존 옵션을 OFF 하도록 하자 (LB 컨트롤러 필요)

 

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-target-groups.html#client-ip-preservation

 

Network Load Balancer 대상 그룹 - Elastic Load Balancing

Network Load Balancer 대상 그룹 각 대상 그룹은 하나 이상의 등록된 대상에 요청을 라우팅하는 데 사용됩니다. 리스너를 생성할 때 기본 작업에 대한 대상 그룹을 지정합니다. 트래픽은 리스너 규칙

docs.aws.amazon.com

 

'AWS' 카테고리의 다른 글

AWS 특정 VPC, IP S3 버킷 허용 하는 방법  (0) 2023.07.11
AWS EC2 Instance Metadata(IMDS)  (0) 2023.07.10
EKS Config Update  (0) 2023.07.08
Multi Region Endpoint Sharing  (0) 2023.06.15
AWS EKS efs-csi-driver install  (0) 2023.06.07

+ Recent posts