AWS의 탄력적 로드 밸런싱
게시 됨: 2022-08-10Elastic Load Balancing은 AWS 애플리케이션의 핵심입니다. 이 게시물에서 ELB, 유형 및 기능에 대해 모두 알아보십시오.
오늘날 대부분의 조직은 애플리케이션의 확장성, 가용성 및 내결함성을 관리하고 향상시켜야 합니다. AWS는 이를 위한 탁월한 솔루션, 즉 Elastic Load Balancing 서비스를 제공합니다. 이 서비스는 가상 서버와 같은 많은 컴퓨팅 리소스에 워크로드를 분산할 수 있는 로드 밸런서로 구성됩니다.

로드 밸런싱 서비스를 사용하면 컴퓨팅 리소스의 상태를 모니터링하도록 상태 확인을 구성할 수 있습니다. 또한 암호화 및 암호 해독 작업을 로드 밸런서로 오프로드하여 컴퓨팅 리소스가 주요 작업에 집중할 수 있도록 합니다.
Elastic Load Balancing(ELB): 개요
ELB는 들어오는 트래픽을 여러 EC2 인스턴스에 자동으로 분산하는 서비스입니다. 이는 애플리케이션 트래픽 분산을 위한 로드 밸런싱 용량을 제공함으로써 애플리케이션에서 더 높은 내결함성 수준을 달성하는 데 도움이 됩니다.

또한 Elastic Load Balancing은 비정상 EC2 인스턴스를 감지할 수 있으며 EC2 인스턴스가 비정상인 것으로 확인되는 즉시 ELB는 다시 정상이 될 때까지 해당 인스턴스로의 트래픽 전송을 중지합니다. 고객은 보다 일관된 애플리케이션 성능을 위해 단일 또는 여러 가용 영역 내에서 Elastic Load Balancing을 쉽게 활성화할 수 있습니다.
탄력적 로드 밸런싱 기능
보안
Amazon Virtual Private Cloud(VPC)에서 Elastic Load Balancing과 연결된 보안 그룹을 관리하고 생성하여 Application Load Balancer 및 Classic Load Balancer에 대한 추가 네트워킹 및 보안 옵션을 제공할 수 있습니다.
고가용성
Elastic Load Balancer는 고가용성입니다. 애플리케이션으로 들어오는 트래픽을 단일 가용 영역 또는 여러 가용 영역의 EC2 인스턴스에 배포할 수 있습니다.
높은 처리량
Elastic Load Balancer는 트래픽이 증가함에 따라 처리하도록 설계되었으며 초당 수백만 개의 요청을 로드하고 밸런싱할 수 있습니다. 또한 갑작스러운 트래픽 급증도 처리할 수 있습니다.
상태 확인
Elastic Load Balancing을 사용하면 EC2 인스턴스의 상태를 확인하고 비정상 인스턴스로 트래픽을 보낼 위험이 없습니다.
운영 모니터링 및 로깅
Amazon CloudWatch는 오류 수, 오류 유형, 요청 지연 시간, 요청 수 등과 같은 애플리케이션 및 Classic Load Balancer 지표를 보고합니다.
보호 삭제
Elastic Load Balancer에서 삭제 방지를 활성화하여 실수로 삭제되는 것을 방지할 수 있습니다.
Elastic Load Balancer의 구성 요소
청취자
로드 밸런서에 대해 하나 이상의 리스너를 구성해야 합니다. 연결 요청을 확인하는 프로세스입니다. 프런트 엔드 연결(클라이언트에서 로드 밸런서)을 위한 연결을 위한 프로토콜 및 포트와 백엔드 연결(로드 밸런서에서 백엔드 인스턴스로)을 위한 프로토콜로 설정됩니다.
탄력적 로드 밸런싱을 위해 지원되는 프로토콜은 다음과 같습니다.
- HTTPS(보안 HTTP)
- TCP
- SSL(보안 TCP)
로드 밸런서
로드 밸런서는 서버 앞에서 "트래픽 경찰" 역할을 하여 속도와 용량 활용도를 최대화하고 성능 저하를 초래할 수 있는 서버가 과도하게 작업되지 않도록 하는 방식으로 클라이언트 요청을 처리할 수 있는 모든 서버에 걸쳐 클라이언트 요청을 분산합니다.
로드 밸런서는 한 서버가 오프라인 상태가 될 경우 활성 서버로 트래픽을 라우팅합니다. 로드 밸런서는 서버 그룹에 추가될 때 새 서버에 대한 요청을 시작합니다.
대상 그룹
요청은 각 대상 그룹을 사용하여 하나 이상의 등록된 대상으로 라우팅됩니다. 각 리스너 규칙을 생성할 때 대상 그룹 및 조건을 정의합니다. 규칙 조건이 충족되면 트래픽이 적절한 대상 그룹으로 라우팅됩니다.
다양한 종류의 요청에 대해 별도의 대상 그룹을 만들 수 있습니다. 예를 들어 애플리케이션의 마이크로서비스에 대한 요청과 일반 요청에 대해 서로 다른 대상 그룹을 생성합니다.
로드 밸런서의 유형
애플리케이션 로드 밸런서
Application Load Balancer를 사용하면 개발자가 수신 최종 사용자 트래픽을 설정하고 AWS 퍼블릭 클라우드에서 실행되는 앱으로 보낼 수 있습니다.
로드 밸런싱은 수많은 웹 애플리케이션이 있는 클라우드 환경에서 매우 중요합니다. 로드 밸런서는 네트워크 트래픽과 정보 흐름을 여러 서버로 나누어 단일 서버에 과부하가 걸리지 않도록 합니다. 이를 통해 사용자 경험이 향상되고 애플리케이션 응답성과 가용성이 향상되며 DDoS(분산 서비스 거부) 공격을 방어할 수 있습니다.
웹 애플리케이션에 대한 액세스는 최근 몇 년 동안 크게 증가했습니다. 그러나 예기치 않은 트래픽 증가로 인해 온라인 서비스가 느려지고 가용성이 저하될 수 있습니다. Application Load Balancer는 퍼블릭 클라우드에서 네트워크 부하를 효율적으로 분산하여 안정성과 가용성을 높입니다.

Application Load Balancer는 문제가 있는 애플리케이션이 계층 7에 도달하는 경우에만 클라우드 리소스 내의 정상적인 대상으로 트래픽을 보냅니다. WebSocket은 기본 서버와의 연결성을 높이기 위해 Application Load Balancer에서 지원하는 또 다른 프로토콜입니다.
컨테이너 또는 AWS EC2 인스턴스에서 실행되는 웹 사이트 및 모바일 애플리케이션은 애플리케이션 로드 밸런서를 사용하면 가장 큰 이점을 얻을 수 있습니다. 마이크로 서비스 아키텍처에서 Application Load Balancer는 특정 서비스를 구현하는 EC2 인스턴스 또는 Docker 컨테이너 앞에서 내부 로드 밸런서로 활용할 수 있습니다. 또한 RESTful API 애플리케이션 앞에서 사용할 수 있습니다.
다음을 포함하여 수많은 AWS 서비스가 애플리케이션 로드 밸런서와 호환됩니다.
- AWS 오토 스케일링
- Amazon Elastic Container Service
- AWS 클라우드 포메이션
- AWS CodeDeploy
- AWS 인증서 관리자
클래식 로드 밸런서
수신 애플리케이션의 트래픽은 클래식 로드 밸런서를 사용하여 수많은 EC2 인스턴스에서 다양한 가용 영역으로 분할됩니다. 클래식 로드 밸런서는 클라이언트의 유일한 접점 역할을 합니다. 이렇게 하면 애플리케이션에 더 쉽게 액세스할 수 있습니다. 애플리케이션에 대한 일반적인 요청 흐름을 손상시키지 않고 필요에 따라 클래식 로드 밸런서에서 인스턴스를 추가/제거할 수 있습니다.
리스너는 클라이언트 연결 요청을 모니터링하기 위해 설정한 프로토콜과 포트를 사용합니다. 그런 다음 리스너는 구성된 프로토콜 및 포트를 사용하여 하나 이상의 등록된 인스턴스에 요청을 전송합니다. 하나 이상의 리스너를 추가하여 로드 밸런서를 수정합니다.
로드 밸런서가 요청을 정상 인스턴스로만 라우팅하도록 하려면 등록된 인스턴스의 상태를 주시하는 데 사용되는 상태 확인을 구성할 수 있습니다.
기본적으로 클래식 로드 밸런서는 로드 밸런서에 대해 활성화한 가용 영역 간에 트래픽을 고르게 분산합니다. 로드 밸런서에서 교차 영역 로드 밸런싱을 활성화하여 활성화된 모든 가용 영역의 등록된 모든 인스턴스 간에 트래픽을 분산합니다.

Classic Load Balancer 유형:
- 인터넷 연결 클래식 로드 밸런서 : 인터넷 연결 로드 밸런서는 공개적으로 확인 가능한 DNS 도메인 덕분에 인터넷을 통해 클라이언트의 요청을 로드 밸런서에 등록된 EC2 인스턴스로 라우팅할 수 있습니다. 로드 밸런서는 빌드될 때 클라이언트가 요청하는 데 사용할 수 있는 공용 DNS 이름이 지정됩니다. DNS 서버는 로드 밸런서의 DNS 이름을 로드 밸런서 노드의 공용 IP 주소로 변환합니다. 사설 IP 주소는 각 부하 분산 노드를 백엔드 인스턴스에 연결합니다.
- 내부 클래식 로드 밸런서: 내부 로드 밸런서의 노드에는 개인 IP 주소만 있습니다. 내부 로드 밸런서의 DNS 이름은 공개적으로 노드의 IP 주소로 확인될 수 있습니다. 결과적으로 로드 밸런서의 VPC에 액세스할 수 있는 클라이언트의 내부 로드 밸런서에서만 요청을 라우팅할 수 있습니다.
네트워크 로드 밸런서
네트워크 로드 밸런서는 OSI 모델의 네 번째 계층에서 작동합니다. 초당 수백만 개의 요청을 처리할 수 있습니다.
로드 밸런서는 연결 요청을 받은 후 기본 규칙에 대한 대상 그룹에서 대상을 선택합니다. 수신기 설정에 표시된 포트에서 선택한 대상에 대한 TCP 연결을 설정하려고 시도합니다.
애플리케이션의 내결함성을 높이려면 네트워크 로드 밸런서를 위한 AWS의 유료 서비스인 여러 가용 영역을 활성화할 수 있습니다. 하나의 가용 영역이 다운되더라도 애플리케이션은 작동을 중지하지 않습니다.
TCP 트래픽의 경우 프로토콜, 소스 포트, 소스 IP 주소, 대상 포트, 대상 IP 주소 및 TCP 시퀀스 번호를 기반으로 하는 플로우 해시 알고리즘을 사용하여 대상을 선택합니다.
클라이언트의 TCP 연결은 시퀀스 번호와 소스 포트가 다르므로 연결이 다른 대상으로 라우팅됩니다. 각각의 고유한 TCP 연결은 연결 기간 동안 단일 대상으로 라우팅됩니다.
게이트웨이 로드 밸런서
타사 가상 어플라이언스는 Gateway Load Balancer를 사용하여 간단하게 배포, 확장 및 관리할 수 있습니다. 수많은 가상 어플라이언스 간에 트래픽을 분할하고 수요에 따라 확장 또는 축소할 수 있는 단일 게이트웨이를 제공합니다. 이렇게 하면 네트워크의 잠재적인 실패 지점이 제거되고 가용성이 높아집니다.
독립 제조업체의 가상 어플라이언스는 AWS Marketplace를 통해 직접 찾고, 테스트하고, 구매할 수 있습니다. 현재 공급업체와 계속 협력하고 싶든 새로운 것을 시도하고 싶든 이 통합 환경은 배포 프로세스를 가속화하여 가상 어플라이언스의 이점을 더 빨리 얻을 수 있습니다.
게이트웨이 로드 밸런서의 이점:
- 타사 가상 어플라이언스의 더 빠른 배포.
- 비용을 관리하면서 가상 어플라이언스를 확장합니다.
- 가상 어플라이언스의 가용성 향상
마지막 단어
Elastic Load Balancer는 AWS에서 만들어진 많은 인프라의 중요한 부분입니다. ELB에서 제공하는 기능을 통해 인프라를 더 쉽게 관리할 수 있습니다. Elastic Load Balancing은 여러 대상 또는 인스턴스에 애플리케이션 및 웹 트래픽 요청을 분산시키는 검증된 방법입니다.
Elastic Load Balancer를 사용하여 다양한 워크로드를 자동으로 확장할 수 있습니다. AWS에서 제공하는 모든 유형의 로드 밸런서를 다루었으며 애플리케이션의 요구 사항에 따라 사용할 수 있습니다.




