본문 바로가기

Cloud/AWS

[AWS Developer Associate] ELB 정리

ELB란?

 

들어가기에 앞서 로드 밸런싱의 개념부터 알아보고 가면,

로드 밸런서는 서버 혹은 서버셋으로 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 서버들로 전달하는 역할을 합니다.

 

로드 밸런서가 필요한 이유?

- 부하를 다수의 다운스트림 인스턴스로 분산하기 위해서

- 애플리케이션에 단일 액세스 지점(DNS)을 노출하게 되고 다운스트림 인스턴스의 장애를 원활히 처리할 수 있음

-> 로드 밸런서가 상태 확인 메커니즘으로 어떤 인스턴스로 트래픽을 보낼수 없는지 확인.(인스턴스 상태 체크)

- 웹사이트에 암호화된 HTTPS 트래픽을 가질 수 있음

- 쿠키로 고정도를 강화할 수 있고 영역에 걸친 고가용성을 가지며

- 클라우드 내에서 개인 트래픽과 공공 트래픽을 분리할 수 있음

-> !!!! 강력한 보안 매커니즘!

-> 비용 절감

-> 무중단 서비스 제공

즉, 부하를 분산할 뿐 아니라 스케일 아웃에 대한 하나의 엔드포인트를 제공

 

ELB(Elastic Load Balancing)은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산합니다. 등록된 대상의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅합니다.

ELB는 수신 트래픽의 변화에 따라 로드 밸런서 용량을 자동으로 조정합니다.

ELB가 지원하는 로드 밸런서는

  • Application Load Balancers
  • Network Load Balancers
  • Gateway Load Balancers
  • Classic Load Balancer (v1)

가 있습니다.

 

Classic Load Balancer(v1)

CLB는 가장 기본적인 형태이자 초기에 제공되던 서비스

TCP나 트래픽 아니면 HTTP와 HTTPS를 지원합니다.

상태 확인은 TCP 또는 HTTP 기반으로 이루어집니다.

고정 호스트 이름을 부여받습니다.

 

 

단점

1. 서버의 기본 주소가 바뀌면 Load Balancer를 새로 생성해야하며 하나의 주소에 하나의 대상 그룹으로밖에 보내지 못한다.

2. 데이터를 수정/변경할 수 없어 포트, 헤더 등의 변경을 하지 못한다.

 

Application Load Balancer(v2)
  • ALB는 OSI 일곱 번째 계층인 애플리케이션 계층에서 작동. 
  • HTTP 전용 로드 밸런서로 머신 간 다수 HTTP애플리케이션의 라우팅에 사용
  • 동일 EC2 인스턴스 상의 여러 애플리케이션에 부하를 분산-컨테이너와 EC2 사용
  • HTTP/2 와 WebSocket 지원
  • 리다이렉트 지원 : HTTP에서 HTTPS로 트래픽을 자동 리다이렉트 가능
  • SSL 적용 가능
  • 경로 라우팅 지원
    •     URL 대상 경로 기반 ex) example.com/users & example.com/posts
    •     URL 호스트 이름 기반 ex) one.example.com & other.example.com
  • 쿼리 문자열과 헤더에 기반한 라우팅도 가능
  • IP 주소가 변동되기 때문에 Client에서 Access할 ELB의 DNS Name 을 이용

 

-> 도커와 ECS의 경우 ALB가 적합한 로드 밸런서가 될 수 있다. 포트 매핑 기능이 있어서 ECS 인스턴스의 동적 포트로의 리다이렉션을 가능하게 해준다.

 

CLB와 비교했을 때 CLB 는 다수의 애플리케이션을 사용하는 경우 여러 개의 클래식 로드 밸런서가 필요하지만,

ALB는 하나로 다수의 애플리케이션을 처리 가능하다.

 

 

Network Load Balancer(v2)
  • 네트워크 계층에서 작동(TCP나 UDP 기반의 트래픽을 인스턴스로 전달)
  • 초당 수백만 건의 요청 처리 가능한 고성능 로드 밸런서
  • 외부의 가용 영역 당 1개의 고정 IP를 노출
  • NLB 자체의 IP를 가져오는 대신 Elastic IP 할당을 제공
  • DNS Name 과 IP 주소 모두 사용이 가능
  • SSL 적용이 인프라 단에서는 불가능하여 애플리케이션에서 따로 적용해주어야 함

*NLB와 ALB를 결합하여 사용하면 NLB의 기능을 활용해서 고정 IP를 가질 수 있고,

규칙과 같은 HTTP관련 기능에 ALB를 활용할 수 있다.

 

Gateway Load Balancer

GWLB는 네트워크의 모든 트래픽이 방화벽을 통과하게 하거나 침입 탐지 및 방지 시스템에 사용합니다.

트래픽을 EC2에 도달하기 전에 먼저 트래픽을 검사/분석/인증/로깅하는 작업을 먼저 수행할 수 있게 해주는 서비스이다.

 

Sticky Session

ELB에서 사용하는 옵션으로 특정 세션의 요청을 처음 처리한 서버로만 전송하는 것.
로그인 세션을 유지하기 위해 사용
ALB, CLB에서 사용 가능 NLB는 제공하지 않음

단점
1. 로드 밸런싱이 의도한대로 동작하지 않을 수 있다.
2. 특정 서버만 과부하가 올 수 있다.
3. 특정 서버 Fail시 해당 서버에 붙어있는 세션들이 모두 소실될 수 있다.
Cross Zone Load Balancing


Zone별로 사용하는 EC2 개수에 차이가 있는 경우 사용하면 좋은 기능
기능이 disable되어 있다면, 각 Zone별로만 요청을 균등하게 받는다
기능이 enable되어 있다면, 각 Instance별로 요청을 균등하게 배분한다.