초보자도 이해할 수있는 Elastic Load Balancer

2021.07.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 Elastic Load Balancer의 대한 설명을 할려고 합니다. Elastic Load Balancer는 트래픽을 관리해주는 서비스입니다.
이번 블로그를 통해 Elastic Load Balancer의 정보가 필요하셨던 분들께 조금이나마 도움이 되었으면 좋겠습니다. 그럼 시작 하겠습니다.

Load Balancer란?

애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는데에 도움을 주는 서비스 입니다.

단일 또는 여러 가용 영역에서 다양한 애플리케이션의 부하를 처리할 수 있는 네 가지의 로드 밸런서는 모두 애플리케이션의 내결함성에 필요한 고가용성, 자동 조정, 강력한 보안을 갖추고 있습니다.

Elastic Load Balancer 종류

  • Application Load Balancer (ALB)

  • Network Load Balancer (NLB)

  • Gateway Load Balancer (GWLB)

  • Classic Load Balancer (CLB)

기능

보안

  • VPC를 사용할 경우 ELB와 관련된 보안 그룹을 생성 및 관리하여 ALB 및 CLB를 위한 추가 네트워킹 및 보안 옵션을 제공할 수 있습니다.
  • 원하는 Load Balancer를 인터넷과 연결되도록 구성하거나 퍼블릭 IP 주소 없이 로드 밸런서를 생성하여 인터넷에 연결되지 않은 내부 로드 밸런서로 사용할 수 있습니다.

고가용성 및 탄력성

  • 수신되는 트래픽을 단일 가용 영역 또는 여러 가용 영역의 Amazon EC2 인스턴스 전체에 걸쳐 배포할 수 있습니다.
  • 수신되는 애플리케이션 트래픽에 대응하여 요청 처리 용량을 자동으로 조정합니다.
  • 대상이 사용 가능하고 정상 상태인지 확인하기 위해 구성 가능한 케이던스로 대상에 대해 상태 확인을 실행합니다.
  • 기본 애플리케이션 서버의 사용률에 따라 자동으로 추가되거나 제거됩니다.

높은 처리량

  • 트래픽 증가를 처리할 수 있도록 설계되었으며 초당 수백만 개의 요청을 로드 밸런싱할 수 있습니다.
  • 갑작스럽고 변동이 심한 트래픽 패턴을 처리할 수 있습니다.

상태 확인

  • EC2 인스턴스, 컨테이너, IP 주소, 마이크로서비스, Lambda 함수, 어플라이언스 등 정상 상태인 대상으로만 트래픽을 라우팅합니다.
  • 두 가지 방식으로 애플리케이션 상태에 대한 통찰력을 개선할 수 있습니다.
    • 상태 확인 개선을 통해 상세한 오류 코드를 구성할 수 있습니다.
    • 새로운 지표로 EC2 인스턴스에서 실행되는 각 서비스의 트래픽을 파악할 수 있습니다.

고정 세션

  • 요청을 동일한 클라이언트에서 동일한 대상으로 라우팅하는 메커니즘을 바탕으로 고정성은 대상 그룹 수준에서 정의됩니다.

운영 모니터링 및 로깅

  • Amazon CloudWatch가 ALB와 CLB에 대해 요청 횟수, 오류 횟수, 오류 유형, 요청 지연 시간 등의 지표를 보고합니다.
  • NLB와 GLBa에 대해 활성 플로우 수, 새 플로우 수, 처리된 바이트 등의 지표를 추적합니다.

삭제 방지

  • Elastic Load Balancer에서 삭제 방지를 활성화하여 우발적 삭제를 방지할 수 있습니다.

AWS로 마이그레이션

  • 자동 조정 기능이 포함되어 있어 용량을 예측할 필요가 없고, 기존 애플리케이션과 클라우드 네이티브 애플리케이션 모두의 로드 밸런싱에 적합합니다.
  • Terraform, Ansible과 같이 이미 익숙한 일반적인 관리 도구와도 잘 통합됩니다.

하이브리드 클라우드 구축

  • AWS와 온프레미스 리소스 전체에서 로드 밸런싱할 수 있는 기능을 제공합니다.
  • 모든 리소스를 동일한 대상 그룹에 등록하고 이 대상 그룹을 로드 밸런서와 연결하면 이를 달성할 수 있습니다.
  • AWS와 온프레미스 리소스에 DNS 기반 가중치 적용 방식의 로드 밸런싱을 사용할 수도 있습니다.

서버리스 운영 및 컨테이너로 애플리케이션 현대화

  • Lambda를 사용하는 경우 복잡한 구성을 거치거나 API 게이트웨이를 사용하지 않고도 ALB를 활용하여 네이티브 HTTP 기반 엔드포인트를 제공합니다.
  • Kubernetes를 사용한 컨테이너 및 컨테이너 오케스트레이션도 지원하여 클라이언트와 애플리케이션 간의 로드 밸런싱과 서비스 간 통신을 제공합니다.

타사 가상 어플라이언스 확장

  • GLB를 사용하면 클라우드에서 실행할 때의 확장성과 유연성을 활용하면서 원하는 공급업체의 어플라이언스를 배포할 수 있습니다.

통합 및 글로벌 접근성

  • EC2, ECS/EKS, Global Accelerator 및 운영 도구 등의 다른 AWS 서비스와 긴밀하게 통합됩니다.

알고리즘

라운드 로빈 방식

라운드 로빈은 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식입니다. 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당합니다. 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어집니다.

가중 라운드 로빈 방식

가중 라운드 로빈 방식은 실제 서버에 서로 다른 처리 용량을 지정할 수 있습니다. 각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정합니다.

최소 연결 방식

최소 연결 방식은 연결 수가 가장 적은 서버에 네트워크 연결방향을 정합니다. 동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 동적으로 변하는 요청에 대한 부하를 분산시킬 수 있습니다.

Application Load Balancer

ALB 기능

  • HTTP 및 HTTPS프로토콜과 1~65535의 TCP 포트, Lambda 호출, ECS를 사용하는 애플리케이션의 로드 밸런싱을 지원합니다.
  • 리디렉션, 고정 응답, 인증 및 전달을 위해 호스트 헤더, 경로, HTTP 헤더, 방법, 쿼리 매개 변수 및 소스 IP CIDR와 같은 규칙을 정할 수 있으며 규칙을 사용하여 특정 요청을 라우팅할 방법을 결정할 수 있습니다.
  • ACM과 통합되면서 아주 간단하게 인증서를 로드 밸런서에 연결할 수 있어 SSL/TLS 인증서를 구매, 업로드 및 갱신하는 작업이 매우 간편합니다.

요금

ALB가 실행된 시간 또는 부분 시간 그리고 시간당 사용된 로드 밸런서 용량 단위(LCU)에 대해 요금이 부과됩니다.

Network Load Balancer

NLB 기능

  • IP 프로토콜 데이터를 기반으로 Amazon VPC 내의 대상(Amazon EC2 인스턴스, 마이크로서비스 및 컨테이너)으로 연결을 라우팅합니다.
  • TCP 및 UDP 트래픽을 이상적인 매우 짧은 대기 시간을 유지할 수 있습니다.
  • 가용 영역당 단일 고정 IP 주소를 사용하여 갑작스럽고 변동성이 큰 트래픽 패턴을 처리하도록 최적화되어 있습니다.
  • Auto Scaling, ECS, Amazon CloudFormation 및 ACM와 같은 다른 인기 있는 AWS 서비스와 통합가능합니다.
  • WebSocket 유형의 애플리케이션에 매우 유용한 장기간 연결도 지원합니다.
  • 단일 (공용/인터넷 IP, 프라이빗 IP)만 지원합니다.
  • 컨테이너 내에서는 서로 다른 보안 그룹을 가질 수 있고, 여러 컨테이너에서 같은 포트를 사용할 수도 있습니다.

요금

NLB가 실행된 시간 또는 부분 시간 그리고 시간당 NLB에서 사용된 NLB용량 단위(NLCU)에 대해 요금이 부과됩니다.

Gateway Load Balancer

GLB 기능

  • 타사 가상 어플라이언스를 쉽게 배포, 확장 및 관리할 수 있습니다.
  • 흐름을 소스 IP, 대상 IP, 프로토콜, 소스 포트 및 대상 포트로 구성된 5-튜플의 조합으로 여러 가상 어플라이언스에 트래픽을 분산하는 동시에 수요에 따라 확장하거나 축소할 수 있는 하나의 게이트웨이를 제공하여 네트워크의 잠재적인 실패 지점이 제거되고 가용성이 높아집니다.
  • 배포 프로세스를 간소화하여 현재와 동일한 공급업체와 협력하든 새로운 시도를 하든 관계없이 가상 어플라이언스의 가치를 더 빨리 확인할 수 있습니다.
  • 서드 파티 가상 어플라이언스를 통한 모든 계층 3 트래픽을 투명하게 전달할 수 있습니다.

요금

GLB가 실행된 시간 또는 부분 시간 그리고 시간당 GLB에서 사용된 GLB 용량 단위(GLCU)에 대해 요금이 부과됩니다. GLB는 AWS PrivateLink 기술을 기반으로 한 새로운 유형의 VPC 종단점인 GLB 엔드포인트(GWLBE)를 사용하며, 이 엔드포인트는 애플리케이션이 VPC 경계에서 GWLB와 트래픽을 안전하게 교환하는 방법을 간소화합니다. GWLBE에는 별도의 요금이 책정 및 청구됩니다

Classic Load Balancer

CLB 기능

  • 여러 EC2 인스턴스에서 기본 로드 밸런싱을 제공하고 요청 수준과 연결 수준 모두에서 작동합니다.
  • EC2 네트워크 내에 구축된 애플리케이션을 HTTP 포트 80과 HTTPS 포트 443을 단일로 매핑 할 수 있습니다.
  • TTP, HTTPS(보안 HTTP), SSL(보안 TCP) 및 TCP 프로토콜을 사용하여 애플리케이션의 로드 밸런싱을 지원해줍니다.
  • ACM과 통합되면서 아주 간단하게 인증서를 로드 밸런서에 연결할 수 있어 SSL/TLS 인증서를 구매, 업로드 및 갱신하는 작업이 매우 간편합니다.

요금

CLB가 실행된 각 시간 또는 한 시간 미만, 그리고 로드 밸런서를 통해 전송된 각 GB 단위 데이터에 대해 비용이 청구됩니다.

마무리

이렇게 Elastic Load Balancer의 종류부터 기능, 종류별 기능과 요금에 대해 설명하였습니다.

Elastic Load Balancer는 서버에 가해지는 부담을 줄여 안전하게 운영을 도와주는 서비스이기에 웹서버와 같이 사용하는 유저가 많거나 데이터가 많다면 꼭 추가해 주어야할 서비스라고 생각합니다. Elastic Load Balancer를 사용하기 위해서는 EC2와 VPC에 대한 지식도 필요함으로 꼭 공부를 해주세요.
이상으로 Elastic Load Balancer에 대한 설명을 마치겠습니다 정보가 필요하셨던 분들께 꼭 도움이 되었으면 좋겠습니다.

참고한 내용

Elastic Load Balancer 공식 홈페이지

로드 밸런싱(Load balancing) 종류와 알고리즘

AWS 다시 시작 블로그 릴레이 Elastic Load Balancing 편