[AWS] Elastic Load Balancer (ELB)
로드밸런서 (Load Balancer)
: 여러 대상 인스턴스 또는 컨테이너로 들어오는 트래픽을 분산시켜 애플리케이션의 가용성과 확장성을
향상시키는 중요한 구성 요소
로드밸런서는 네트워크 트래픽을 관리하고 애플리케이션의 서비스를 제공하기 위해
효율적인 방식으로 트래픽을 분산시킴
로드밸런서는 클라이언트로부터의 요청을 받아, 이를 여러 대상으로 분산시켜주는 역할을 함
이를 통해 트래픽 부하를 공정하게 분산하여, 각 대상이 과도한 작업량을 처리하지 않도록 함
ELB (Elastic Load Balancer)
: AWS에서 제공하는 로드 밸런싱 서비스
서버 인스턴스의 상태를 모니터링하고 자동으로 트래픽을 분산시킴
ELB에는 3가지 종류가 있음
- ALB (Application Load Balancer)
- NLB (Network Load Balancer)
- CLB (Classic Load Balancer)
아래는 각 LB의 특징과 차이점을 정리해놓은 표
ALB | NLB | CLB | |
계층 | 애플리케이션 계층 로드 밸런서 | 네트워크 계층 로드 밸런서 | 클래식 로드 밸런서 |
기본 프로토콜 | HTTP, HTTPS | TCP, UDP, TLS | HTTP, HTTPS |
속도 및 성능 | 중간 | 매우 높음 | 중간 |
가용성 | 가용 영역 수준 | 가용 영역 수준 | 가용 영역 수준 |
IP 주소 유형 | IPv4 | IPv4, IPv6 | IPv4 |
정적 IP 주소 할당 | 가능 | 가능 | 가능 |
상태 확인 | HTTP(S) 및 경로 기반 | TCP, HTTP(S), ICMP, 경로 기반 | EC2 인스턴스 상태 검사 |
SSL/TLS 지원 | 지원 | 지원 | 지원하지 않음 |
웹 소켓 지원 | 지원 | 지원 | 지원하지 않음 |
사용자 정의 도메인 | 지원 | 지원 | 지원하지 않음 |
보안 그룹 | 보안 그룹 기반 | 보안 그룹 기반 | 클래식 보안 그룹 기반 |
대상 유형 | 인스턴스, 컨테이너, IP 주소, Lambda 함수 | 인스턴스, IP 주소, Lambda 함수 | 인스턴스, IP 주소, Lambda 함수 |
주로 사용되는 애플리케이션 유형 | 웹 애플리케이션, 마이크로서비스, 컨테이너화된 애플리케이션 | 네트워크 패킷 로드 밸런싱, TCP/UDP 기반 애플리케이션 | 전통적인 웹 애플리케이션, EC2 인스턴스 기반 애플리케이션 |
아래는 aws 프로젝트때 구현했던 아키텍처
web-was-db의 3tier 구성을 했으며, 부하 분산을 위해서
was단에는 보통 nlb를 사용하는게 일반적인데, 프로젝트 당시엔 alb를 두었음
HA 구성을 위해 a존 c존으로 가용영역을 나누어서 서버를 구성했기 때문에,
사용자의 요청이 다른 가용 영역으로 전달되는 경우엔 세션 관리를 통해서 사용자의 세션 상태를 유지해야 함
프로젝트 당시에는 alb에서 제공하는 session stickiness 기능을 사용했었음
사용자의 요청이 항상 동일한 인스턴스로 라우팅되도록 하는 기능
보통 웹 애플리케이션에서는 Redis를 통한 세션 클러스터링을 사용
이에 관한 자세한 내용은 다음 포스팅에서 다뤄보기로😵
결론
aws elb는 트래픽을 여러 대상 인스턴스에 분산시켜 애플리케이션의 가용성과 확장성을 향상시킴
세가지 유형이 있기때문에 각자의 환경에 맞는 로드밸런서를 사용하면 될 듯
'💻 CSP > AWS' 카테고리의 다른 글
[AWS] AWS Athena (0) | 2023.06.02 |
---|---|
[AWS] S3 & 스토리지 클래스 (0) | 2023.05.30 |
[AWS] SQS를 다른 AWS 인프라 웹 서비스와 함께 사용 (0) | 2023.05.06 |
[AWS] SQS (Simple Queue Service) (0) | 2023.05.05 |
[AWS SDK] Boto3 : boto3을 이용해서 S3 객체 copy 하기 (0) | 2023.05.01 |