✅ 부하분산( = 로드 밸런싱, load balancing)
서버-클라이언트 환경에서 서버가 클라이언트 요청을 받아 처리하는 과정에서 발생하는 부하(연산 작업)에 대해 동일한 목적을 수행하는 다수의 서버에 분산 처리하는 기능이다. → 고가용성 및 내결함성이 향상되고 안정적이므로 클라우드에서 반드시 사용하는 기술!
- 로드 밸런싱(load balancing) : 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다. (= 부하분산)
- 로드 밸런서(load balancer): 부하분산을 수행하는 대상을 뜻한다.
로드 밸런싱의 이점
- 애플리케이션 가용성
서버 장애 등으로 인해 애플리케이션 가동 중지 시간이 늘면, 이 서버 문제를 로드 밸런서가 자동으로 감지하고 사용 가능한 서버로 리디렉션(이동) 시킨다. 로드 밸런싱을 이용하면 애플리케이션의 가동을 중지할 필요 없이 서버를 유지보수하거나 복구할 수 있고, 서버의 상태를 확인하기도 쉽다.
- 애플리케이션 확장성
로드 밸런서를 사용하여 여러 서버에 트래픽을 지능적으로 전달할 수 있다. 로드 밸런싱이 트래픽 병목 현상을 방지하고, 트래픽을 예측하고, 중복성을 추가하므로 수천개의 클라이언트 요청을 처리할 수 있다.
- 애플리케이션 보안
로드 밸런서에는 인터넷 어플리케이션에 또 다른 보안 계층을 추가할 수 있는 기능이 내장되어있어 분산 서비스 거부 공격(=DDoS Attack: 수천개의 트래픽으로 서버를 채워 장애를 일으키는 공격)을 처리할 수 있다. 트래픽을 모니터링하고 악성 콘텐츠를 차단하며, 여러 백엔드 서버로 자동 리디렉션해 공격의 영향을 최소화한다. 추가로 네트워크 방화벽 그룹으로 트래픽을 라우팅하기도 한다.
- 애플리케이션 성능
로드 밸런서는 응답 시간을 늘리고 네트워크 지연 시간을 줄여 애플리케이션 성능을 향상시킨다. 서버 간에 로드(=부하)를 균등하게 배포하여 성능을 향상시키고, 요청을 지리적으로 가까운 서버에 리디렉션해 응답 시간을 단축시키며 컴퓨팅 리소스의 신뢰성과 성능을 보장한다.
✅ Amazon ELB(Amazon Elastic Load Balancing)
아마존이 제공하는 로드 밸런스 기술로, Amazon EC2 인스턴스에서 운영 중인 서비스로 유입되는 트래픽을 자동 분산 처리하는 기술이다.
- 애플리케이션의 가용성을 향상
- HTTP, HTTPS, TCP, SSL 등의 프로토콜을 지원
- 같은 인스턴스에서 세션을 유지할 수 있도록 지원
- AWS의 CloudWatch 기능으로 로그(Log, 내부에서 발생하는 이벤트와 정보를 기록한 데이터)와 메트릭(Metric, 시간이 지남에 따라 변화하는 데이터)을 모니터링
- AWS의 오토 스케일링 기능과 결합해서 트래픽이 증가하면 자동으로 인스턴스 추가하거나 제거
- 다양한 애플리케이션에 적용 가능하고 SSL 암호화 지원
Amazon ELB의 구성요소
- 로드 밸런서: 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지
- 대상 그룹: 로드 밸런서에서 분산할 대상의 집합을 정의하는 구성 요소 → 정적, 동적으로 구성하고 라우팅 규칙에 따라 요청 받아들일 장애 발생 없는 대상 그룹 선택
- 리스너: 로드 밸런서에서 사용할 포트와 프로토콜 설정하고 요청에 대한 대상 그룹의 라우팅을 정의하는 구성 요소
Amazon ELB를 생성하면 설정한 가용 영역별로 로드 밸런서 노드가 생성되고 앞단에 리스너를 실행한다. 로드 밸런서는 가용 영역에 속한 대상 그룹의 인스턴스로 트래픽을 전달한다.
Amazon ELB의 작동 방식
- 클라이언트 요청 수신: 로드 밸런서에서 클라이언트와 연결을 유지하며 요청을 수신하기 위해 리스너를 등록한다.
- 대상 그룹 선택: 요청을 처리할 대상 그룹을 선택한다.
- 트래픽 분산: 요청을 처리할 대상을 선택하고 해당 대상으로 요청을 분산한다. (로드 밸런서가 대상의 가용성을 모니터링, 가용성 낮으면 제외)
- 응답 반환: 대상에서 요청을 처리하고 클라이언트에 응답을 반환한다.
Amazon ELB 교차 영역 로드 밸런싱
Amazon ELB는 여러 가용 영역에서 로드 밸런서 노드를 실행하고 요청을 분산하는데, 대상이 여러 가용 영역에 걸쳐 있을 때는 ELB 교차 영역 로드 밸런싱을 이용한다.
ELB 교차 영역 로드 밸런싱을 비활성화했을 때
→ 기본적으로 로드 밸런서는 동일한 비중으로 트래픽을 분산하는데, 이는 대상 그룹의 가용성을 높이는 방법이라 유용하지만 인스턴스 수량이 불균형할때는 일부 인스턴스로 트래픽이 몰리고 다른 인스턴스는 유휴 상태가 되는 불균형이 발생할 수 있다. (유휴 상태가 아니여도, 한쪽 인스턴스로 비율이 과도하게 몰리는 현상이 발생해 불균형이 발생한다.)
ELB 교차 영역 로드 밸런싱을 활성화했을 때
→가용 영역 별로 인스턴스가 불균형 할때 이를 ELB 교차 영역 로드 밸런싱이 보정하여 분산 기준이 가용 영역에서 대상 그룹에 속한 자원으로 바뀌게 된다.
✅ Amazon ELB의 종류
- CLB(Classic Load Balancer)
Amaon ELB의 가장 초기에 출시된 로드 밸런서로, 4계층과 7게층 프로토콜과 최신 HTTPv1.2 프로토콜, SSL/TLS 프로토콜, SSL 인증서 등을 모두 지원한다. 그러나 서버의 기본 주소가 변경되면 로드 밸런서를 새로 생성해야 하며 기능적인 한계 때문에 포트나 헤더 등을 수정하거나 변경할 수 없는 제약 사항들이 있으므로 서버 및 아키텍처가 커지고 복잡해질수록 사용 비용이 증가한다. (현재는 CLB는 레거시(legacy) 서비스로 분류되어 다른 서비스로 대체하는 추세이다.)
- ALB(Application Load Balancer)
AWS에서 제공하는 L7 로드 밸런서로, 웹 애플리케이션 프로토콜을 지원한다. 그룹 대상 단위로 트래픽을 분산하고 대상 내 인스턴스의 상태를 분석하고 장애 조치를 취할 수 있으며, ALB가 요청을 전달할 EC2 인스턴스, 람다 함수, 컨테이너 및 IP 주소로 라우팅(경로 기반 라우팅, 호스트 기반 라우팅, 쿼리 문자열 기반 라우팅)하고, Amazon CloudWatch Logs로 데이터 모니터링 및 분석하는 기능을 제공한다.
→ 웹 애플리케이션에 특화된 세밀한 라우팅을 제어할 수 있어 이를 위한 로드 밸런서로 사용
- NLB(Network Load Balancer)
AWS에서 제공하는 L4 로드 밸런서로, TCP/UDP/TLS 프로토콜을 지원한다. ALB와 달리 클라이언트-로드 밸런서 간 연결을 TCP 레벨에서 유지해 대규모 트래픽을 처리할 수 있다. 처리량이 높고, 응답 시간이 빠르며 가용성도 높고 IP 주소를 보존할 수 있다. 또한 모니터링도 제공한다.
- GWLB(GateWay Load Balancer)
네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서이다. GWLB를 사용하면 서드 파티의 방화벽/어플라이언스 장비를 쉽게 배포하고 확장하며 요청에 따라 트래픽을 확장하고 축소할 수 있다. VPC 내에서 실행되는 애플리케이션의 가용성과 확장성을 향상시키는데 사용하고 다양한 유형의 애플리케이션에 유연하게 적용할 수 있다.
? ALB와 NLB의 차이
- ALB: HTTP/HTTPSS 처리에 특화된 애플리케이션 레벨의 로드 밸런서로, 7계층에서 라우팅 동작이 가능하고 람다를 대상 그룹으로 지정할 수 있다.
- NLB: TCP/UDP/TLS에 대한 트래픽을 처리할 수 있는 4계층 로드 밸런서로 가장 높고 빠른 처리량을 지원하며 고정 IP를 사용할 수 있다.
[참고]
AWS 교과서 - 저자: 김원일, 출판: 김벗 2023.10.20
'Cloud > AWS' 카테고리의 다른 글
[클라우드] AWS 네트워킹 서비스(Amazon VPC)와 AWS 네트워크의 물리적 인프라 구성 (0) | 2025.03.25 |
---|---|
[클라우드] 네트워킹(Networking) 기초 개념 (0) | 2025.03.24 |
[클라우드] AWS 컴퓨팅 서비스에 대하여 01: Amazon EC2 (0) | 2025.03.22 |
[클라우드] 클라우드 기초 개념 (0) | 2025.03.10 |