Amazon Web Services 한국 블로그
신규 Network Load Balancer 출시 – 초당 수백만 요청을 처리 확장성 제공
ELB (Elastic Load Balancing)와 Auto Scaling 및 Amazon CloudWatch 등 3종 세트는 AWS 초기 부터 매우 중요한 부분입니다. 그 이후로 많은 기능이 추가하였고, Application Load Balancer는 컨테이너에서 실행되는 애플리케이션의 콘텐츠 기반 라우팅을 지원하도록 설계하여 마이크로서비스, 스트리밍 및 실시간 서비스 등에 최적화되어 있습니다.
오랫 동안 AWS 고객은 ELB를 사용하여 T2 인스턴스에서 실행하는 단순한 웹 사이트에서부터 다수의 고급 인스턴스에서 실행되는 복잡한 애플리케이션에 이르기까지 다양한 규모의 서비스에 활용하여 방대한 양의 트래픽을 처리 할 수 있었습니다. ELB는 배후에서 트래픽을 모니터링하고, 수요에 맞게 자동으로 확장합니다. 몇년 간 높은 반응 속도를 보이도록 개선 한 결과, ELB를 사용한 온라인 생중계, 깜짝 판매 이벤트 등의 이벤트성 서비스에도 잘 동작합니다. 그러나, 리전 간 순간적인 페일 오버 또는 극히 까다로운 워크 로드와 같은 일부 상황에서 트래픽 급상승을 예상하는 경우 ELB를 사전에 미리 설정해 두고(pre-warm)으로 제공하는 옵션을 제공했습니다.
신규 네트워크 로드 밸런서 출시
오늘 네트워크 로드 밸런서 (NLB)를 새롭게 소개합니다. 본 서비스는 낮은 대기 시간에 높은 처리량을 유지하면서 초당 수천만 건의 요청을 처리 할 수 있도록 설계되었습니다. NLB는 대상 그룹에 대해 API 호환성이 높은 ALB입니다. 아래는 주요 기능을 소개합니다.
- 고정 IP 주소 – 각 NLB는 각 VPC 서브넷마다 하나의 IP 주소를 제공합니다. us-west-2a의 서브넷에 대상이 있고 us-west-2c의 서브넷에 있는 다른 대상이 있는 경우 NLB는 두 개의 IP 주소(서브넷 당 하나)를 만들고 관리합니다. 해당 IP 주소에 대한 연결은 서브넷의 인스턴스간에 트래픽을 분산시킵니다. 각 서브넷에 대해 기존의 Elastic IP를 지정할 수도 있습니다. IP 주소를 완전히 제어하면 IP 주소를 DNS 레코드, 고객 방화벽 규칙 등에 하드 코딩해야하는 상황에서 NLB를 사용할 수 있습니다.
- Zonality – 서브넷 당 고정 IP 기능은 향상된 성능으로 지연 시간을 줄이고 격리 및 내결함성을 통해 가용성을 향상 시키며 NLB 클라이언트에서 바로 사용 가능합니다. 또한, NLB는 자동 장애 조치를 통해, 특정 소스의 일련의 요청을 단일 서브넷의 대상으로 라우팅합니다.
- 소스 주소 보존 – NLB를 사용하면 들어오는 연결의 원래 소스 IP 주소 및 포트가 수정되지 않으므로 응용 프로그램 소프트웨어는 X-Forwarded-For, 프록시 프로토콜 또는 다른 해결 방법을 지원할 필요가 없습니다. 이는 VPC 보안 그룹을 포함한 일반 방화벽 규칙을 대상에서 사용할 수 있습니다.
- 장기 연결 유지 및 실행 – NLB는 내결함성을 내장한 연결을 처리하고 몇 달 또는 몇 년 동안 커넥션을 처리 할 수 있으므로 IoT, 게임 및 메시징 응용 프로그램에 매우 적합합니다.
- 장애 조치 – Route 53 상태 검사에 의해 작동되는 NLB는 리전 내 및 리전 간 IP 주소 간의 장애 조치를 지원합니다.
Network Load Balancer 만들기
EC2 콘솔에 가면, 새로운 Load Balancers항목에서 Create Load Balancer를 클릭합니다.
네트워크 로드 밸런서를 선택하고 만들기를 클릭 한 다음 세부 정보를 입력합니다. 대상 VPC의 각 서브넷에 대해 Elastic IP 주소를 선택할 수 있으며, 태그를 지정할 수 있습니다.
그런 다음 라우팅 구성을 클릭하고 새 대상 그룹(Target Group)을 만듭니다. 이름을 입력 한 다음 프로토콜과 포트를 선택합니다. 트래픽 포트와 상태 확인 방법을 설정할 수 있습니다.
Register Targets를 눌러 EC2 인스턴스를 설정 한 후, Add to registered:를 클릭합니다.
모든 것이 잘 설정 되었으면, Create를 선택합니다.
신규 로드 밸런서가 완료 되면 몇 분 후 provisioning에서 active로 바뀝니다.
테스트 목적으로 콘솔에서 Load Balancer의 DNS 이름을 가져옵니다 (실제로는 Amazon Route 53 와 좀 더 친숙한 이름을 사용합니다.)
이제 대량 트래픽을 한번 보내 볼 때입니다.
$ while true;
> do
> wget http://nlb-1-6386cc6bf24701af.elb.us-west-2.amazonaws.com/phpinfo2.php &
> done
몇 가지 트래픽 흐름을 허용하기 위해, CloudWatch 지표를 확인하면 갑작 스러운 트래픽을 잘 처리 할 수 있음을 확인했습니다.
또한, EC2 인스턴스를 보고 부하가 어떻게 작동하는지 확인했습니다.
AWS 개발팀에서 위의 것 보다 더 나은 테스트를 해 보았고, 수백 대의 EC2 인스턴스로 클러스터에서 초당 150 만 건의 요청을 시작으로 신속하게 초당 300만 건의 요청과 총 대역폭의 30Gbps를 달성했습니다.
Load Balancer 선택하기
로드 밸런서를 선택할 때, 여러분의 애플리케이션 요구 사항을 고려해야합니다. 다음은 몇 가지 지침입니다.
- Network Load Balancer (NLB) – TCP 트래픽 로드 밸런싱에 이상적인 NLB는 초저 대기 시간을 유지하면서 초당 수백만 건의 요청을 처리 할 수 있습니다. NLB는 가용성 영역 당 하나의 고정 IP 주소를 사용하면서 갑작스럽고 불안정한 트래픽 패턴을 처리하도록 최적화되어 있습니다.
- Application Load Balancer (ALB) – HTTP 및 HTTPS 트래픽의 고급 로드 밸런싱에 이상적인 ALB는 마이크로서비스 및 컨테이너 기반 응용 프로그램을 포함한 최신 응용 프로그램 아키텍처를 지원하는 고급 요청 라우팅을 제공합니다.
- Classic Load Balancer (CLB) – EC2-Classic 네트워크 내에 구축 된 애플리케이션에 이상적입니다.
좀 더 자세한 사항은 Elastic Load Balancer 세부 정보 테이블을 살펴 보시기 바랍니다.
현재 Classic Load Balancer를 사용 중이고 Network Load Balancer로 마이그레이션하려면 Load Balancer Copy Utility를 살펴보십시오. 이 Python 도구를 사용하면 기존의 Classic Load Balancer와 동일한 구성으로 NLB를 만들 수 있습니다. 기존로드 밸런서를 사용하여 기존 EC2 인스턴스를 등록 할 수도 있습니다.
가격 및 가용 방법
Application Load Balancer와 마찬가지로 가격 책정은 Load Balancer Capacity Unit 또는 LCU를 기본으로합니다. 청구액은 다음 측정 기준에서 가장 높은 값을 기준으로 한 LCU 당 0.006 달러입니다.
- 대역폭 – LCU 당 1GB.
- 신규 연결 – LCU 당 800.
- 활성 연결 – LCU 당 100,000.
대부분의 애플리케이션은 대역폭에 따라 달라 지고, 기존의 ALB와 비교할 때 약 25%의 비용 절감 (로드 균형 조정)이 있습니다. 네트워크로드 밸런서는 현재 China (Beijing)를 제외한 AWS CloudFormation, Auto Scaling 및 Amazon ECS 등을 지원되는 모든 AWS 상용 리전에서 사용할 수 있습니다.
— Jeff;
이 글은 New Network Load Balancer – Effortless Scaling to Millions of Requests per Second의 한국어 번역입니다.