개요
2023.05.25 - [AWS] LB 동작 방식에서 AWS 로드밸런서의 전반적인 동작 방식에 대해 정리를 했었는데, NLB는 조금 다르게 동작하는 부분이 있는 것 같아 추가로 적어둔다.
예로 들어, 아래와 같이 사용자가 NLB를 통해 서비스에 접근하는 구조가 있다고 하자. AWS ELB는 기본적으로 Healthy 상태인 타깃 인스턴스로 라우팅을 수행한다.
따라서 Target group - 80에 등록된 타깃 인스턴스가 전부 아래 사진과 같이 unhealthy 상태라면 사용자는 서비스에 접근할 수 없어야 한다.
하지만 접근을 할 수 있었다! 실제로 나는 1년이 넘는 시간 동안 Target 인스턴스가 전부 unhealthy인 웹 서버에 접속을 아주 잘 하고 있었다. 어떻게 이럴 수 있었을까?
이유
1. 서비스가 정상 동작 중인데 unhealthy 상태로 확인된 이유
NLB가 Target EC2의 health check할 포트를 접근할 수 없는 상태였기 때문이다.
NLB는 SG 없이 EC2의 SG를 참조한다. 따라서 NLB가 Target EC2에 대한 health check를 정상적으로 수행하기 위해서는 EC2가 NLB EIP를 대상으로 health check할 포트에 대해 인바운드 통신을 허용해야 한다.
2. Target Group에 등록된 EC2 인스턴스가 전부 unhealthy 상태인데 서비스에 접근할 수 있는 이유
경험적으로 NLB의 동작 방식을 정리하면 다음과 같다.
Target Group 상태 | NLB 동작 |
모든 인스턴스 Healthy | 모든 인스턴스를 대상으로 트래픽 전달 |
일부 인스턴스 Healthy / 일부 인스턴스 Unhealthy | Healthy 상태인 인스턴스를 대상으로 트래픽 전달 |
모든 인스턴스 Unhealthy | 모든 인스턴스를 대상으로 트래픽 전달 |
즉, NLB는 Target Group에 등록된 모든 인스턴스가 Unhealthy 상태라면 다른 LB와 다르게 라우팅을 수행한다. 참고로 NLB는 LB보다는 L4 스위치처럼 동작하는 것으로 알려져 있다고 한다.
참고 문서
https://kim-dragon.tistory.com/121