[aws] 로드밸런서 정의, 유형 별 비교

2022. 8. 28. 23:45✅ STUDY/AWS

안녕하세요 :)
오늘은 AWS의 부하 분산 서비스인 로드 밸런서에 대해 알아보려 합니다.


로드밸런싱

하나의 서버의 성능으로 인해 처리량을 초과한 대량 요청 트래픽의 경우, 속도 저하나 서비스 지연 또는 장애를 유발합니다.
이것을 대비해 트래픽(부하)을 다수 서버로 분산하는 것을 말합니다.
AWS의 부하 분산AWS에서는 부하 분산 서비스로 Elastic Load Balancer(ELB)를 제공합니다.

로드밸런서 4가지 유형

  1. 애플리케이션 로드밸런서(Application Load Balancer, ALB)
    • HTTP 및 HTTPS 트래픽이 있는 애플리케이션에 유연한 분기 처리가 필요한 경우 사용
    • [분기 방법]
      path-pattern : 요청 URL을 기반으로 분기 ex) /img/*
      host-header : 호스트 이름을 기반으로 분기 ex) *.example.com
      http-request-method : HTTP 요청 메소드 기반으로 분기 ex) POST, GET 메소드
      http-header : HTTP 헤더를 기반으로 라우팅
      query-string : 쿼리 문자열의 키/값 또는 값을 기반으로 분기
      source-IP : 소스 IP 주소를 기반으로 분기
    • [대상 종류]
      프로토콜 버전이 gRPC 또는 HTTP/2인 경우는 forward만 가능
      forward : 기본적인 대상 그룹에 요청을 전달
      fixed-response : 고정된 HTTP 응답을 반환 ex) 404 error
      redirect : 한 URL에서 다른 URL로 요청을 리다이렉트 ex) /index.html -> /main/index.html
      authenticate-cognito : HTTPS 일 때, Amazon Cognito를 사용하여 사용자를 인증하도록 설정
      authenticate-oidc : HTTPS 일 때, OIDC(OpenID Connect)를 준수하는 ID 공급자를 사용해 사용자를 인증하도록 설정
    • 클라이언트가 요청을 보내면, ELB 노드의 퍼블릭 IP와 연결되며 실제 대상 내부 인스턴스는 ELB 노드의 프라이빗 IP와 연결됨
  2. 네트워크 로드밸런서(Network Load Balancer, NLB)
    • 초고성능(초당 수백만 개의 요청을 처리 가능), 대규모 TLS 오프로딩, 중앙 집중식 인증서 배포, UDP 지원, 애플리케이션에 대한 고정 IP 주소가 필요한 경우 사용
    • 소스/대상 확인을 하지 않아, 데이터 변경 없이 대상으로 포워딩
    • (클라이언트 IP 보존 설정을 비활성화한 경우) 클라이언트가 요청을 보내면, ELB 노드의 퍼블릭 IP와 연결되며 실제 대상 내부 인스턴스는 ELB 노드의 프라이빗 IP와 연결됨
    • (클라이언트 IP 보존 설정을 활성화한 경우) 클라이언트가 요청을 보내면, ELB 노드의 퍼블릭 IP와 연결되며 실제 대상 내부 인스턴스는 클라이언트 IP와 연결되므로 SG, NACL 또한 클라이언트 IP에 맞게 설정해야 함
  3. 클래식 로드밸런서(Classic Load Balancer, CLB)
    • EC2-Classic 네트워크에서 실행 중인 기존 애플리케이션이 있는 경우 사용
  4. 게이트웨이 로드밸런서(Gateway Load Balancer, GWLB)
    • GENEVE를 지원하는 다양한 타사 가상 어플라이언스(방화벽)를 두어 중간 경유지 처럼 사용하고 싶은 경우 사용
    • UDP 6081 port를 사용하는 가상 어플라이언스로만 분기됨
    • 소스/대상 확인을 하지 않아, 데이터 변경 없이 대상으로 포워딩
  ALB NLB CLB GWLB
보안 그룹 사용 O X O X
대상 그룹 사용 O O X O
대상 그룹 유형 인스턴스, IP, Lambda 인스턴스, IP, ALB 인스턴스 GENEVE 지원
어플라이언스(인스턴스)
대상 그룹 포트 지정 인스턴스 별 지정 가능 인스턴스별 지정 가능 리스너별 1개 고정(UDP 6081)
상태 검사 단위 대상 그룹 대상 그룹 로드밸런서 대상 그룹
계층 L7 L4 L4/L7 L3/L4
리스너(대상그룹) 프로토콜 HTTP, HTTPS TCP, UDP, TCP _UDP, TLS HTTP, HTTPS, TCP, SSL/TLS IP
가용 영역 선택 조건 최소 2개 최소 1개
가용 영역 별 선택 가능한 서브넷 개수 1개
가용 영역 변경 범위
(추가, 변경, 삭제)
모두 가능 추가만 가능 모두 가능 변경 불가
교차 영역 로드밸런싱 속성 기본 값 / 속성 변경 활성화 / 불가 비활성화 / 가능 API, CLI: 비활성화, 콘솔: 활성화 / 가능 비활성화 / 가능
인터넷 체계 사용 가능 O X
노드에 탄력적 IP 연결 가능 X O X X

 

ELB의 특징

- ELB 생성과 동시에 선택한 서브넷에 ELB용 ENI가 생성됨 = 로드밸런서 노드
- 클라이언트가 실제 접속하는 ELB의 IP는 노드의 IP
- 각 가용 영역의 노드는 가용 영역의 모든 서브넷으로 로드밸런싱 할 수 있음
- 클라이언트 요청을 받은 ELB는 각 가용 영역에 대기중인 노드로 명령을 내려 실제 로드밸런싱을 수행함

ELB의 다중화 (교차 영역 로드밸런싱 속성)

교차 영역 로드밸런싱 속성을 활성화하면, A 가용영역의 로드밸런서 노드가 장애가 났을 때에도 C 가용영역의 로드밸런서 노드가 A 가용영역의 인스턴스로 로드밸런싱이 가능함

가변 노드

ELB는 유형에 따라 노드 생성 방식이 다릅니다.

가변 노드인 ELB : ALB, CLB

- ALB와 CLB는 로드밸런싱 대상 상태에 따라 노드를 확장하고 삭제하며 가변적으로 조정
ALB와 CLB는 로드밸런싱 대상이 없으면 랜덤 가용 영역 한 곳에만 노드를 생성하며, 대상 인스턴스가 등록되면 그 가용영역에 노드를 생성하고, 기존 노드를 제거하고 새 노드를 만들어 교체하기도 합니다.

- ALB와 CLB는 동적 퍼블릭 IP만 사용 가능
위 성질 때문에, ALB와 CLB는 동적 퍼블릭 IP만 사용할 수 있습니다. 실제, DNS 이름을 쿼리하면 상황에 따라 노드의 IP와 그 개수가 달라지는 것도 확인 가능합니다. 고정 IP가 필요하다고 하면 NLB를 생성한 뒤 ALB를 대상으로 연결해 보완할 수 있습니다.

고정 노드인 ELB : NLB

- NLB의 로드밸런싱 노드의 private IP는 고정되므로, 탄력적 IP도 부여 가능
NLB는 로드밸런싱 대상 상태와 관계 없이, 선택한 모든 가용 영역에 노드 1개씩을 생성해두고 노드 변경 또한 일어나지 않습니다. 이에, NLB의 로드밸런싱 노드의 private IP는 고정되기 때문에 프라이빗 IP 단위로 할당되는 탄력적 IP도 부여할 수 있게 됩니다.

 

 


참고) Amazon VPC 네트워킹 원리와 보안

 

Amazon VPC 네트워킹 원리와 보안 - YES24

기업 클라우드 보안 정책을 수립하고 적합성 평가를 직접 수행하며 겪은 저자의 노하우가 담긴 VPC 네트워킹 책이다. VPC 공간과 컴퓨팅, 네트워킹 연결 서비스의 구조와 원리를 AWS 토폴로지로 친

www.yes24.com

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/load-balancer-types.html

 

로드 밸런서 유형 - Amazon Elastic Container Service

로드 밸런서 유형 Elastic Load Balancing은 다음 유형의 로드 밸런서를 지원합니다. Application Load Balancer, Network Load Balancer 및 Classic Load Balancer. Amazon ECS 서비스는 이러한 유형의 로드 밸런서를 사용할

docs.aws.amazon.com