1. 개요
AWS의 Elastic Load Balancing은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산합니다. 등록된 Target의 상태를 모니터링 하면서 상태가 양호한 Target으로만 트래픽을 라우팅하도록 동작하는데, AWS에서는 Application Load Balancer를 제외하고 Cross-zone load balancing이라는 기능을 활성화/비활성화할 수 있는 옵션을 제공하여 이 기능이 활성화되면 각 Load Balancer 노드는 활성화된 모든 가용 영역의 등록된 Target에 트래픽을 분산합니다.
- Application Load Balancer 는 기본적으로 활성화
이번 포스팅에서는 활성화된 각 가용 영역에 대해 고정 IP 주소를 가져오는 Network Load Balancer에서 Cross-zone load balancing 기능을 활성화하는 경우와 비활성화하는 경우 각각에 대해 설정된 Listener 개수 및 유무, Target으로 등록된 EC2의 Healthy/Unhealthy에 따른 서비스 이슈 발생 가능성에 대해 확인해 보도록 하겠습니다.
TEST는 아래의 6가지 CASE로 나누어 진행하며, 서비스 사용자는 Network Load Balancer의 DNS Name을 호출하여 얻게 되는 각 가용 영역의 IP로 트래픽을 보내므로, 서비스 이슈 여부는 Network Load Balancer의 DNS Name을 호출한 결과와 Target의 Healthy/Unhealthy 상태로 확인합니다.
2. CASE 별 TEST 결과
2.1 CASE 1
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing의 비활성화/활성화 관계없이 서비스 사용자는 모든 가용 영역으로 트래픽을 보내며, 모든 가용 영역의 Target이 Healthy 상태이므로 서비스 제공에 문제가 없습니다.
2.2 CASE 2
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing의 비활성화/활성화 관계없이 서비스 사용자는 모든 가용 영역으로 트래픽을 보내며, 모든 가용 영역의 Target이 Healthy 상태이므로 서비스 제공에 문제가 없습니다. Cross-zone load balancing이 활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내나 Cross-zone load balancing 동작에 의해 Healthy인 Target이 있는 가용 영역으로 서비스 제공에 문제가 없습니다.
2.3 CASE 3
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing의 비활성화/활성화 관계없이 서비스 사용자는 모든 가용 영역으로 트래픽을 보내나, 모든 가용 영역의 Target이 Unhealthy 상태이므로 서비스가 불가합니다. (서비스 불가가 정상)
2.4 CASE 4
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing이 비활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내는데 Cross-zone load balancing이 비활성화 되어 있으므로 Blue Target Group의 Unhealthy Target이 있는 가용 영역으로 보내진 트래픽은 Healthy Target이 있는 가용 영역으로 이동할 수 없어 서비스 제공에 이슈가 있을 수 있습니다. Cross-zone load balancing이 활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내나
Cross-zone load balancing 동작에 의해 Healthy인 Target이 있는 가용 영역으로 서비스 제공에 문제가 없습니다. (Blue의 경우)
2.5 CASE 5
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing이 비활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내는데 Cross-zone load balancing이 비활성화 되어 있으므로 Blue/Green Target Group의 Unhealthy Target이 있는 가용 영역으로 보내진 트래픽은 Healthy Target이 있는 가용 영역으로 이동할 수 없어 서비스 제공에 이슈가 있을 수 있습니다. Cross-zone load balancing이 활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내나 Cross-zone load balancing 동작에 의해 Healthy인 Target이 있는 가용 영역으로 서비스 제공에 문제가 없습니다.
2.6 CASE 6
1) TEST 구성 및 설정
2) TEST 결과
Cross-zone load balancing이 비활성화된 경우, 서비스 사용자는 Healthy인 Target만 존재하는 가용 영역으로 트래픽을 보내며 서비스 제공에 문제가 없습니다. Cross-zone load balancing이 활성화된 경우, 서비스 사용자는 모든 가용 영역으로 트래픽을 보내나 Cross-zone load balancing 동작에 의해 Healthy인 Target이 있는 가용 영역으로 서비스 제공에 문제가 없습니다. (Blue의 경우)
3. 결론
앞서 각각의 CASE TEST 결과에서 확인할 수 있듯이 Cross-zone load balancing이 비활성화되어 있으면, ④와 ⑤의 CASE 에서는 서비스 이슈가 발생할 수 있습니다. 따라서 Network Load Balancer 생성 시 Cross-zone load balancing은 가급적, 특히 ④와 ⑤ 같은 CASE는 반드시 활성화하여 서비스 이슈를 사전에 방지하도록 하는 것이 좋겠습니다.
4. 참고
● https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html
● https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html