부하분산은 서버가 요청에 대한 처리 과정에서 생기는 부하에 대해 동일 기능을 하는 다수의 서버에 부하를 분산시키는 것을 말한다. 이를 로드밸런싱이라고 한다.
부하분산을 수행하는 대상은 로드밸런서라고 한다.
로드밸런싱을 하는 이유는 트래픽을 효율적으로 배분하고 서버 장애에 대응하기 위해서이다.
AWS에서는 ELB(Elastic Load Balancing)라는 로드 밸런싱 서비스가 있다.
이 서비스는 트래픽을 자동 분산 처리해주는 기술을 제공한다.
로드밸런서
여러 개의 자원을 사용하여 트래픽을 대상 그룹에 있는 인스턴스로 분산한다.
중간에서 사용자 요청을 받아 서버로 보내고 서버의 응답을 받아 사용자에게 전달한다.
대상 그룹
로드 밸런싱을 적용할 그룹이다.
리스너
리스너는 로드 밸런서에서 사용할 포트와 프로토콜을 설정하는 구성 요소.
로드 밸런서에서 클라이언트 요청을 수신한 뒤 요청을 처리할 대상 그룹을 선택하는 역할을 한다.
클라이언트 요청 수신
로드 밸런서에서 클라이언트 요청 수신
대상 그룹 선택
수신한 클라이언트 요청을 처리할 대상 그룹 선택
트래픽 분산
선택된 대상 그룹에서 요청을 처리할 대상을 선택하고 해당 대상으로 요청을 분산
응답 반환
분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환
ELB 교차 영역 로드 밸런싱은 여러 가용 영역에 걸쳐 있는 EC2 인스턴스나 컨테이너 등을 대상으로 균일하게 부하를 분산하는 것입니다.
ALB(Application Load Balancer)는 활성화 되어있지만
NLB(Network Load Balancer)는 비활성화입니다.
CLB(Classic Load Balancer)
가장 초기에 출시된 로드 밸런서
4계층과 7계층 지원
기능적인 한계로 인해 현재에 와서는 쓰이지 않음.
아주 옛날에 CLB에서 작동하게 만든 앱에만 사용하는 것을 권장.
ALB(Application Load Balancer)
7계층 로드 밸런서
대상 그룹 단위로 트래픽을 분산
HTTP 헤더를 확인하여 다양한 라우팅 기능 제공.
- 경로 기반 라우팅
- 호스트 기반 라우팅
- 쿼리 문자열 기반 라우팅
오토 스케일링과 함께 사용 가능
대상 그룹 내 인스턴스에 대해 상태 검사 수행 및 장애 조치
Amazon CloudWatch Logs와 통홥되어 로그 및 지표 데이터를 수집, 모니터링, 분석
웹 애플리케이션에 특화된 세밀한 라우팅 제어가 가능
웹 애플리케이션을 위한 로드 밸런서로 사용
NLB(Network Load Balancer)
4계층 로드 밸런서
대규모 트래픽을 처리 할 수 있다
동일한 IP 주소에서 여러 대상 그룹을 지원
초당 수백만 개의 연결을 처리하는 높은 처리량
빠른 응답 시간
높은 가용성
클라이언트 IP 주소를 원래 IP 주소로 보존
Amazon CloudWatch Logs와 통홥되어 로그 및 지표 데이터를 수집, 모니터링, 분석
게임 서버, VoIP 서비스, 미디어 스트리밍 등에서 사용
GWLB(GateWay Load Balancer)
네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서
서드 파티의 방화벽/어플라이언스 장비를 쉽게 배포, 확장, 관리