로드 밸런싱(Load Balancing)이란?
애플리케이션을 지원하는 리소스 전체에 트래픽이 균등하게 분산되도록 하는 방법이다.
수많은 사용자가 접속하는 애플리케이션은 트래픽량이 아주 많이 몰리는데, 이러한 경우 대부분 여러 대의 중복 서버를 운영한다. 로드밸런서가 이 서버 풀 앞단에서 사용자의 요청을 여러 대의 서버들에게 균등하게 배정해주는 역할을 수행한다. 또한 특정 서버에 문제가 발생했다면 해당 서버로 트래픽이 전달되는 것을 방지해준다. 로드밸런서를 사용해 로드 밸런싱을 수행하면 고가용성 및 내결함성이 향상되어 장애 발생에 유연한 대처가 가능하고, 서비스가 높은 안정성을 가질 수 있도록 도와준다.
Scale Up / Scale Out
Scale Up
기존 서버의 성능을 업그레이드 하는 방법이다. 수직 확장이라고도 한다.
관리가 쉽지만 단일 서버를 업그레이드 하여 사용하므로 해당 서버에 문제가 생겨 다운되었을 시 조치가 어렵다는 단점이 있다.
Scale Out
장비를 추가해서 성능을 높이는 방법이다. 한 대의 서버가 처리하던 일을 서버를 추가한다면 여러 대의 서버가 처리할 수 있게 되어 성능의 향상을 불러올 수 있다. 수평 확장이라고도 한다. Scale Out의 경우 서버 앞에 로드밸런서를 사용하여 트래픽을 균등하게 분배해야 하며, 사용자가 특정 서버에만 연결된다는 보장이 없으므로 Stateless로 설계할 필요가 있다.
Amazon ELB(Elastic Load Balancing)
AWS에서 제공하는 로드 밸런싱 기술이다. EC2, Lambda, Fargate, ECS, EKS를 사용하여 운영 중인 서비스로 유입되는 트래픽을 자동 분산 처리해주는 완전 관리형 서비스이다. 로드 밸런싱의 대상이 되는 서버들의 이상 징후를 모니터링하고 정상적인 상태의 서버로만 트래픽을 전달(Health Check)하며 AWS 오토 스케일링 기능과 결합하여 트래픽이 증가하면 인스턴스를 자동으로 추가하거나 제거하면서 애플리케이션의 가용성을 유지하는 데 도움을 준다.
오토 스케일링을 사용하게 되면 트래픽 양에 따라서 서버를 늘리거나 줄일 수 있는데, 서버는 하나의 컴퓨터이므로 개별 IP 주소를 갖게 된다. 따라서 사용자는 서비스 이용을 위해 여러 대의 IP 주소에 접속할 수 있게 되는 것이다. 하지만, 서버가 Scale in/out 됨에 따라 변화하는 IP 주소를 일일이 기억하거나 매번 확인하는 것은 상당한 불편함이 있다. 따라서 ELB는 로드 밸런서를 구성함으로써 사용자들에게 서비스 접속을 위한 하나의 엔드포인트를 제공하는 역할(실제 IP는 계속 변경되므로 도메인 기반 접근 필요) 역시 수행하는 것이다.
Amazon ELB의 구성 요소와 동작 과정
Amazon ELB 구성 요소
- 로드 밸런서: 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지하는 역할을 수행한다.
- 대상 그룹: 로드 밸런서를 사용하여 트래픽을 분산시켜 전달할 대상의 집합을 정의하고 대상의 상태를 확인하는 요소이다.
- 리스너: 로드 밸런싱을 처리하는 트래픽의 프로토콜과 포트 번호를 정의하고 대상 트래픽을 어떻게 처리(action)할지 규칙(rule)을 생성한다. 구성한 포트 및 프로토콜 정보를 기반으로 연결 요청을 검사하고, 정의한 규칙에 따라 로드 밸런서가 등록된 대상으로 요청을 라우팅하는 방법이 결정된다.
Amazon ELB 동작 과정
- 사용자의 요청이 로드 밸런서의 DNS 주소로 전달된다.
- Amazon의 DNS 서버가 로드밸런서 노드(가용 영역별로 로드 밸런서 노드가 존재) IP 리스트를 사용자에게 전달한다.
- 사용자는 IP 중 하나를 선택하여 로드 밸런서에 접근한다.
- 사용자는 Port 번호가 일치하는 리스너에 접근하게 되고 리스너는 이 요청을 받아 규칙에 따라 적절한 대상그룹으로 전달한다.
- 리스너로부터 전달받은 요청을 대상 그룹의 인스턴스가 처리한 후 다시 사용자에게 반환된다.
Amazon ELB 종류
ALB(Application Load Balancer)
L7 로드 밸런서로, HTTP/HTTPS 같은 웹 애플리케이션 프로토콜을 지원한다.
람다(Lambda)를대상 그룹으로 지정할 수 있다.
- HTTP 헤더를 확인하여 다양한 라우팅 기능 제공(경로 기반, 호스트 기반, 쿼리 문자열 기반)
- 웹 애플리케이션에 특화된 세밀한 라우팅 제공
NLB(Network Load Balancer)
L4 로드 밸런서로, TCP, UDP, TLS 프로토콜을 지원한다.
클라이언트와 로드 밸런서 간 연결을 TCP 레벨에서 유지하므로 대규모 트래픽을 처리할 수 있다.
- 높은 처리량과 빠른 속도
- Elastic IP 할당 가능
- 도메인 기반 라우팅은 불가능
GWLB(Gateway Load Balancer)
네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서이다. 요청에 따라 트래픽을 확장하거나 축소하면서 다수의 서드 파티 장비에 로드 밸런싱을 처리한다. 클라이언트가 요청을 전송하면 해당 트래픽을 VPC 내부의 서드 파티 어플라이언스를 경유하도록 라우팅하고, 검사, 인증, 로깅 등의 작업을 수행한 후에 서버에 전달되도록 한다.
참고 자료
https://www.youtube.com/watch?v=mqtUMduyKjk
☁️ ELB(Elastic Load Balancer) 구성 & 사용법 가이드
ELB (Elastic Load Balancer) 이란 ELB(Elastic Load Balancer)란 애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는데에 도움을 주는 서비스다. EC2뿐만 아니라 컨테이너(
inpa.tistory.com
https://hungseong.tistory.com/108
[시스템 설계: 한번에 인터뷰 합격하기] 수평 스케일링 vs 수직 스케일링
1. 알고자 하는 것 많은 트래픽에 대응하기 위한 확장성 - 수직 스케일링 vs 수평 스케일링 2. 알게 된 것 확장성이 없는 단일 서버 (Single Server)는 개인 웹사이트와 같이 트래픽이 많지 않고, 서버
hungseong.tistory.com
'AWS' 카테고리의 다른 글
[AWS]Amazon RDS에 MySQL Workbench로 연결하기(Amazon Aurora) (0) | 2024.05.10 |
---|---|
[AWS]EC2 인스턴스 모니터링 설정하기(수동 모니터링, CloudWatch 경보 설정하기) (0) | 2024.05.01 |
[AWS]EC2에서 Apache 웹 서버 실행해보기 (0) | 2024.04.30 |
[AWS]스토리지 서비스 - EBS(개념과 실습) (0) | 2024.04.09 |
[AWS]EC2 인스턴스 생성 후 SSH 접속하기 (0) | 2024.04.04 |