AWS Elastic Load Balancer(ELB)는 트래픽을 분배해주는 관리형 Load Balancer 서비스이다.


특징

  1. 자동화: AWS EC2 인스턴스 등의 대상에 대해서 트래픽을 자동으로 분배한다.
  2. 헬스체크: 등록된 대상의 상태를 모니터링하여 상태가 양호한 대상으로만 트래픽을 라우팅한다. (↔ Amazon CloudWatch와 연동)
  3. 고가용성: 각 리전에서 서비스되며, 리전 내 가용영역 단위로 분배하여 안정적이다. 
  4. 확장성: 유동적인 트래픽과 워크로드에 대응할 수 있다. (↔ Amazon EC2 Auto Scaling과 연동)

종류

  • Application Load Balancer
  • Network Load Balancer
  • Classic Load Balancer: EC2-Classic 네트워크 내에 구축된 어플리케이션에 대한 로드밸런서이다.

종류 별 설명

(1) Application Load Balancer(ALB)

HTTP/HTTPS 어플리케이션을 L7에서 로드밸런싱하는 로드밸런서이다. 아래와 같은 특징이 있다.

  • HTTP, HTTPS, HTTP/2, WebSockets 등을 지원
  • 컨텐츠 기반 라우팅 지원(Path 기반 또는 Host 기반)
  • Microservices, Container 기반 어플리케이션과 호환
  • Amazon ECS, EKS와 호환
  • Listener와 Target Group으로 구성

Listener는 Listening Port와 Protocol, Contents 기반 Rule을 지정하는 구성요소다.

Target Group은 Listener의 판정에 따라 접근 여부가 결정되는 logical 그룹이다. (대상: EC2, ECS/EKS 컨테이너, IP 주소, Lambda)

Listener, TargetGroup, Path 기반 라우팅을 조합하면

- 80번 포트의 "/dev/" 로 접근하는 경우에는 개발용 EC2 인스턴스 그룹으로 연결되도록, 

- 80번 포트의 "/ops/", 또는 8080번 포트의 "/dev/"로 접근하는 경우에는 또 다른 인스턴스 그룹에 연결되도록 지정할 수 있다.

Target Group은 EC2 뿐 아니라, ECS, EKS등의 컨테이너 그룹, IP 주소, Lambda 등 기타 서비스도 포함할 수 있기 때문에  Host, Path 기반의 Listener Rule과 연계하면 용도에 맞도록 다양한 조합의 Load Balancer 기반 아키텍처를 구축할 수 있다.

(2) Network Load Balancer(NLB)

TCP 및 UDP 프로토콜을 활용하는 어플리케이션에 대해 L4에서 로드밸런싱한다. 아래와 같은 특징이 있다.

  • 고성능: 초당 수백만 Request 처리 / 낮은 Latency
  • AZ당 하나의 고정 IP 부여
  • ALB와 동일하게 Listener, Target group으로 구성 (Rule: Port기반 Target Group 지정)
  • TLS Termination 지원 (부하 감소시키는 기능)
  • ACM(Amazon Certificate Manager) 연동 가능 

일반적으로 오랜 시간 연결이 유지되거나, 수많은 request에 대해서도 latency를 낮게 유지해야하는 등의 고성능을 필요로 하는 환경에서 장점을 발휘한다.  (ex. IoT, Gaming, Messaging Applications)


액세스 방법

ELB는 다음 네가지 수단을 이용하여 생성/관리할 수 있다.

  • AWS Management 콘솔
  • AWS CLI(명령줄 인터페이스)
  • AWS SDK
  • 쿼리 API