Elastic Load Balancer

박기원·2022년 5월 26일
0

AWS

목록 보기
3/11
post-thumbnail

Elastic Load Balancing : 네트워크 트래픽을 분산하여 애플리케이션 확장성 개선

  • 통합된 인증서 관리, 사용자 인증 및 SSL/TLS 복호화를 통해 애플리케이션을 보안합니다.
  • 고가용성 및 자동 크기 조정으로 애플리케이션을 지원합니다.
  • 실시간으로 애플리케이션 상태 및 성능을 모니터링하고 병목 현상을 파악하며 SLA 규정 준수를 유지 관리합니다.

Elastic Load Balancing(ELB)은 하나 이상의 가용 영역(AZ)에 있는 여러 대상 및 가상 어플라이언스에서 들어오는 애플리케이션 트래픽을 자동으로 분산합니다.

  • Application Load Balancing

  • Gateway Load Balancing

  • Network Load Balancing

작동순서

  1. Application Load Balancer 또는 Network Load Balancer를 선택하여 로드 밸런서를 생성
  2. 고유의 이름과 네트워크를 지정
  3. 로드 밸런서의 리스너를 생성
  • (Application Load Balancer의 경우 HTTP 또는 HTTPS, Network Load Balancer의 경우 TCP 또는 UDP).
  1. 로드 밸런서의 상태 확인 기능을 구성
  2. 다음 중 하나를 수행
  • 대상 그룹에 EC2 인스턴스를 수동으로 등록하고 로드 밸런서와 함께 대상 그룹을 등록
  • 로드 밸런서를 대상 그룹에 등록된 Auto Scaling 그룹에 연결

네트워크 로드 밸런서(NLB)란?

  • Elastic Load Balancing은 하나 이상의 가용 영역에 있는 EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 수신 트래픽을 자동으로 분산
  • 등록된 대상의 상태를 모니터링하고 정상적인 대상에만 트래픽을 라우팅
  • Elastic Load Balancing은 수신 트래픽이 시간이 지남에 따라 변경됨에 따라 로드 밸런서를 확장

네트워크 로드 밸런서 구성 요소

  • 로드 밸런서 는 클라이언트 의 단일 접점 역할
  • 로드 밸런서는 Amazon EC2 인스턴스와 같은 여러 대상에 수신 트래픽을 분산
  • 이렇게 하면 애플리케이션의 가용성이 높아지고 로드 밸런서에 하나 이상의 리스너를 추가
  • 리스너 는 구성한 프로토콜과 포트를 사용하여 클라이언트의 연결 요청을 확인하고 요청을 대상 그룹으로 전달
  • 각 대상 그룹 은 TCP 프로토콜과 지정한 포트 번호를 사용하여 EC2 인스턴스와 같은 하나 이상의 등록된 대상으로 요청을 라우팅
  • 드 밸런서의 리스너 규칙에 지정된 대상 그룹에 등록된 모든 대상에 대해 상태 확인이 수행

Network Load Balancer의 작동 방식

  1. 클라이언트가 애플리케이션에 요청을 보냅니다.
  2. 로드 밸런서는 직접 또는 프라이빗 연결을 위한 엔드포인트를 통해(AWS PrivateLink를 통해) 요청을 수신합니다.
  3. 로드 밸런서의 리스너는 일치하는 프로토콜 및 포트의 요청을 수신하고 지정한 기본 작업에 따라 해당 요청을 라우팅합니다. TLS 리스너를 사용하여 암호화 및 복호화 작업을 로드 밸런서로 오프로드할 수 있습니다.
  4. 하나 이상의 대상 그룹에 있는 정상 대상은 흐름 해시 알고리즘에 따라 트래픽을 수신합니다.

IP 주소 유형

  • 클라이언트가 IPv4 주소를 사용하여 로드 밸런서와 통신하는 경우 IPv4를 선택하고 클라이언트가 IPv4 및 IPv6 주소를 모두 사용하여 로드 밸런서와 통신하는 경우 dualstack을 선택한다.

  • 로드 밸런서가 내부 로드 밸런서이거나 UDP 또는 TCP_UDP 리스너를 추가하는 경우 IPv4를 선택해야 한다.

네트워크 매핑

  • 네트워크 매핑의 경우 먼저 대상에 사용할 가용 영역을 결정한다.

  • 그런 다음 선택한 각 가용 영역에 하나 이상의 서브넷을 사용하여 VPC(Virtual Private Cloud)를 구성한다.

  • 로드 밸런서가 인터넷 경계 로드 밸런서인 경우 서브넷이 퍼블릭 서브넷인지 확인한다.

  • 로드 밸런서에 대해 여러 가용 영역을 활성화한 다음 대상 그룹에 활성화된 각 가용 영역의 대상이 하나 이상 있는지 확인하면 애플리케이션의 내결함성이 높아진다.

리스너 및 라우팅

  • 리스너를 추가할 때 라우팅 요청을 위한 규칙을 지정한다.

  • 이 규칙은 지정한 대상 그룹에 요청을 전달한다.

  • TLS 리스너를 사용하여 암호화 및 복호화 작업을 로드 밸런서로 오프로드할 수 있다.

  • 리스너 프로토콜이 TLS인 경우 리스너에 정확히 하나의 SSL 서버 인증서를 배포해야 한다.

  • 프로토콜을 TLS에서 TCP 또는 UDP로 변경하면 보안 정책 및 서버 인증서가 제거된다.

  • 리스너는 구성한 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스이다.

  • 리스너가 수신한 트래픽은 해당 사양에 따라 라우팅된다.

기본 작업

  • 기본 작업은 라우팅 요청을 위한 기본 규칙을 지정한다.

  • Network Load Balancer의 경우 기본 작업은 지정된 대상 그룹으로 요청을 라우팅하는 전달 작업이다.

대상그룹 Health Check

  • 연결된 Load Balancer가 상태 테스트를 위해 등록된 대상에 아래 설정에 따라 요청을 주기적으로 전송합니다.

포트

  • 대상에 대한 상태 검사를 수행할 때 Load Balancer가 사용하는 포트입니다.

  • 기본값은 각 대상이 Load Balancer로부터 트래픽을 수신하는 포트이지만, 다른 포트를 지정할 수 있습니다.

정상 임계 값

  • 비정상 상태의 대상을 정상으로 간주하기까지 필요한 연속적 상태 검사 성공 횟수입니다.

비정상 임계값

  • 대상을 비정상 상태로 간주하기까지 필요한 연속적인 상태 검사 실패 횟수입니다.

제한 시간

  • 상태 검사 실패를 의미하는 응답이 없는 기간입니다.

간격

  • 개별 대상의 상태 검사 사이의 대략적인 시간입니다.

올바르지 못한 Health Check 시 Circuit Breaker(회로차단)으로 불필요한 트래픽 낭비를 줄인다.

Application Load Balancer 구성 요소

  • 로드 밸런서는 클라이언트에 대한 단일 접점 역할을 수행
  • 로드 밸런서는 여러 가용 영역에서 EC2 인스턴스 같은 여러 대상에 수신 애플리케이션 트래픽을 분산

Application Load Balancer 개요

  • Application Load Balancer는 개방형 시스템 간 상호 연결(OSI) 모델의 일곱 번째 계층인 애플리케이션 계층에서 작동
  • 로드 밸런서는 요청을 받으면 우선 순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙 작업의 대상 그룹에서 대상을 선택
  • 애플리케이션 트래픽의 콘텐츠를 기반으로 다른 대상 그룹에 요청을 라우팅하도록 리스너 규칙을 구성
  • 대상이 여러 개의 대상 그룹에 등록이 된 경우에도 각 대상 그룹에 대해 독립적으로 라우팅이 수행
  • 대상 그룹 레벨에서 사용되는 라우팅 알고리즘을 구성
  • 기본 라우팅 알고리즘은 라운드 로빈
  • 애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 대상을 추가 및 제거
  • 애플리케이션에 대한 트래픽이 시간에 따라 변화하므로 Elastic Load Balancing은 로드 밸런서를 확장
  • Elastic Load Balancing은 대다수의 워크로드에 맞게 자동으로 조정

Application Load Balancer의 작동 방식

  1. 클라이언트가 애플리케이션에 요청을 보낸다.
  2. 로드 밸런서의 리스너는 구성한 프로토콜 및 포트와 일치하는 요청을 수신한다.
  3. 수신 리스너는 지정된 규칙에 따라 수신 요청을 평가하고, 해당되는 경우 요청을 적절한 대상 그룹으로 라우팅한다. HTTPS 리스너를 사용하여 TLS 암호화 및 복호화 작업을 로드 밸런서로 오프로드할 수 있다.
  4. 하나 이상의 대상 그룹에 있는 정상 대상은 로드 밸런싱 알고리즘과 리스너에서 지정한 라우팅 규칙을 기반으로 트래픽을 수신한다.

기본구성

체계

로드 밸런서를 생성할 때 로드 밸런서를 내부 로드 밸런서로 설정할지 아니면 인터넷 경계 로드 밸런서로 설정할지 선택

인터넷 경계 로드 밸런서의 노드에는 퍼블릭 IP 주소가 있다.

내부 로드 밸런서의 노드에는 프라이빗 IP 주소만 있다.

인터넷 경계 및 내부 로드 밸런서는 모두 프라이빗 IP 주소를 사용하여 대상으로 요청을 라우팅한다.
따라서 대상은 내부 또는 인터넷 경계 로드 밸런서의 요청을 수신하기 위해 퍼블릭 IP 주소가 필요하지 않다.

IP 주소 유형

클라이언트가 IPv4 주소를 사용하여 로드 밸런서와 통신하는 경우 IPv4를 선택하고 클라이언트가 IPv4 및 IPv6 주소를 모두 사용하여 로드 밸런서와 통신하는 경우 Dualstack을 선택한다.

로드 밸런서가 내부 로드 밸런서인 경우 IPv4를 선택해야 한다.

Application Load Balancer는 VPC에서 기본 인터넷 프로토콜 버전 6(IPv6)를 지원한다. 이를 통해 클라이언트는 IPv4 또는 IPv6를 통해 Application Load Balancer에 연결할 수 있다.

네트워크 매핑

네트워크 매핑의 경우 먼저 대상에 사용할 가용 영역을 결정한다.

그런 다음 선택한 각 가용 영역에 하나 이상의 서브넷을 사용하여 VPC(Virtual Private Cloud)를 구성한다.

로드 밸런서가 인터넷 경계 로드 밸런서인 경우 서브넷이 퍼블릭 서브넷인지 확인한다.

애플리케이션의 내결함성을 높이려면 로드 밸런서에 대해 여러 가용 영역을 활성화하고 또한 대상 그룹에 활성화된 각 가용 영역에 하나 이상의 대상이 있는지 확인

VPC

대상에서 사용하는 각 가용 영역에 퍼블릭 서브넷이 하나 이상 있는 VPC(Virtual Private Cloud)가 있어야 한다.

매핑

2개 이상의 가용 영역을 활성화하여 애플리케이션의 내결함성을 높입니다.

영역당 하나의 서브넷을 선택한다. 로드 밸런서에 대해 듀얼 스택 모드를 활성화한 경우 연결된 IPv6 CIDR 블록이 있는 서브넷을 선택힌다. 다음 중 하나를 지정할 수 있다.

  • 2개 이상의 가용 영역의 서브넷
  • 하나 이상의 Local Zones의 서브넷
  • One Outpost 서브넷

리스너 및 라우팅

리스너를 추가할 때 라우팅 요청을 위한 규칙을 지정한다. 이 규칙은 지정하는 대상 그룹에 요청을 전달한다.

Application Load Balancer용 리스너는 다음 프로토콜 및 포트를 지원한다.

  • 프로토콜: HTTP, HTTPS
  • 포트: 1-65535

ALB VS NLB

ALB

  • ALB는 L7단의 로드 밸런서를 지원합니다.
  • ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
  • ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
  • ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
  • ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.

NLB

  • NLB는 L4단의 로드 밸런서를 지원합니다.
  • NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
  • NLB는 IP + 포트번호를 보고 스위칭합니다.
  • NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
  • NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.

0개의 댓글