Amazon ELB(Elastic Load Balancing)
사용자의 트래픽을 앞단에서 처리하는 서비스로, 하나 이상의 가용영역에 트래픽을 자동으로 분산한다.
최초에는 L4/L7의 트래픽을 분산하는 Classic Load Balancer가 있었고, 이후 사용자의 요구사항이 세분화됨에 따라서 ALB, NLB, GLB이 생기게 되었다.
기능 | Application Load Balancer | Network Load Balancer | Gateway Load Balancer | Classic Load Balncer |
유형 | L7 | L4 | L3 Gateway + L4 | L4/L7 |
대상 | IP, 인스턴스, Lambda | IP, 인스턴스, ALB | IP, 인스턴스 | - |
프로토콜 | HTTP, HTTPS, gRPC | TCP,UDP, TLS | IP | TCP, SSL/TLS, HTTP, HTTPS |
ALB 생성하기
ALB 생성은 리소스를 분산 시킬 대상 그룹(Target Group)을 먼저 생성해야한다.
EC2 관리 콘솔에서 [대상 그룹] 탭에서 그룹 생성을 선택한다. 대상룹은 동일 VPC 내에 있어야하며, 정상/비정상 상태에 대한 판단 기준, 체크 간격 등을 설정할 수 있다.
이후 EC2 관리 콘솔에서 ALB를 선택하여 생성한다. 생성 시 보안 그룹에서 출발지로 사용자가 접속할 IP/Port에 대해 선택하고, 목적지는 대상 그룹을 선택한다.
AWS Auto Scaling
네트워크 트래픽 및 CPU 사용량에 따라 자동으로 수평/수직으로 확장을 지원하는 기능이다. 리소스가 부족할 때 자동으로 인스턴스를 생성하고, 유휴 리소스가 많을 때는 축소하는 기능이다.
AWS 에서 제공하는 아래 서비스에 대해서 Auto Scaling이 가능하다.
- Amazon EC2: Launch or terminate Amazon EC2 instances in an Amazon EC2 Auto Scaling group. Learn more.
- Amazon EC2 Spot Fleets: Launch or terminate instances from an Amazon EC2 Spot Fleet, or automatically replace instances that get interrupted for price or capacity reasons. Learn more.
- Amazon ECS: Adjust ECS service desired count up or down to respond to load variations. Learn more.
- Amazon DynamoDB: Enable a DynamoDB table or a global secondary index to increase its provisioned read and write capacity to handle sudden increases in traffic without throttling. Learn more.
- Amazon Aurora:
ELB와 Auto Scaling를 사용하는 것이 확장성을 제공하는 AWS 패턴으로 소개되고 있다.
사용자는 ALB로 요청을 하고, 적절하게 EC2에 이를 분산하여 처리한다. Auto Scaling은 ALB에서 요청하는 인스턴스를 그룹화하여 모니터링하다가 자원이 부족하면 인스턴스를 생성한다.