본문 바로가기

⭐ AWS/NLB (NerworkLoadBalancer)

NLB가 어떻게 동작하는지 정리

# NLB 동작 정리

이번 NLB 구성을 통해서 알게 된점을 정리하면 아래와 같다.

1. NLB 리스너?

- 리스너(Listner)는 한국말로 번역하면 수신기 즉 출발지에서 보낸 트래픽을 받는 수신기 라고 이해하면 쉽다.

리스너 예시를 보면 아래와 같다. 해당 캡처 내용은 ALB의 리스너 정보를 나타낸다. (퍼옴)

리스너의 구성을 보면 위와 같이 되어 있다. 출발지 에서 트래픽을 보내면 ELB의 DNS 주소가 맵핑되어 있는 서브넷의 IP로 트래픽이 들어올 것이고 해당 트래픽의 헤더에는 목적지 정보와 Port정보를 달고 들어올 것이다.

그리고 받는 목적지의 Destination 리소스의 위치 즉 퍼블릭 서브넷에 존재 하느냐 프라이빗 서브넷에 존재하느냐에 따라서 퍼블릭 IP를 바라보고 들어올지 아니면 내부 리소스 라면 프라이빗 IP를 바라보고 들어올지 정해질 것이고 해당 경로로 쭉 트래픽이 들어올 거싱다.

(참고로 TCP 헤더 정보는 아래와 같다.)

2. NLB Works

NLB의 흐름을 정리하자면 아래와 같다.

Inbound와 Outbound를 나눠서 흐름을 보면 아래와 같을 것이다.

위의 그림을 보면 빨간색 라인은 SourceIP 즉 출발지 IP에서 Destination IP로 트래픽을 보내는 과정인데

SourceIP에서 설정한 목적지 IP는 해당 NLB의 IP가 된다. 여기서 주의할 점은 서비스가 프라이빗에 존재하는지 퍼블릭에 존재하는지 여부를 체크하여 NLB IP를 지정해 주어야 한다.

2024.03.06 - [⭐ AWS/Load Balancing & TargetGroup] - TargetGroup(대상 그룹) IP 및 HealthCheck

관련 내용은 위의 링크에 잘 나와 있으니, 참고

그리고 초록색 라인은 Destination IP에서 출발하여 Source IP로의 전달을 나타낸 것이다.

위의 그림과 같이 초록색 라인은 NLB를 거치지 않고 다이렉트로 통신을 하는것을 볼 수 있다.

그리고 참고로 NLB가 달고 나가는 IP 정보는 EKS 같은 경우는 Ingress.yaml에 정의된 옵션에 따라 다른데, type을 instance로 하게되면 NodeIP를 달고 나가고, 타입을 IP로 하게되면 IP 주소를 생성 후 해당 IP 정보를 달고 나간다.

3. 결과

어떻게 보면, 당연한 내용인데 다시한번 정리가 필요 했던거 같다.

결론을 말하자면 ELB의 리스너로 맺어진 연결은 인바운드와 아웃바운드 모두 해당 리스너의 연결된 통로로 수행이 된다.

하지만 리스너로 맺어진 연결이 아닌것은 너무나 당연하지만, 출발지에서 목적지경로를 다이렉트로 바라보게 될 것이다.

4. 주의 해야할 점

주의 해야할 점은 ELB 리스너는 출발지로 부터 인바운드 된 데이터를 목적지의 리소스로 전달함으로 문제가 없다면 정상적으로 연결이 맺어지고 송/수신을 진행한다. 하자민 ELB 리스너가 없는 아웃바운드 같은 경우는 ELB를의 리스너를 거치지 않고 다이렉트로 목적지 IP로 전달되기 때문에 해당 내용을 주의해야할 필요가 있다.

 

- 끝 -