부하분산 = 로드 밸런싱(load balancing)
서버-클라이언트 환경에서 서버가 클라이언트 요청을 받아 처리하는 과정에서 발생하는 부하(연산 작업)에 대해 동일한 목적을 수행하는 다수의 서버에 분산 처리하는 기능
로드 밸런서(load balancer): 부하분산을 수행하는 대상
로드밸런싱을 수행하는 로드 밸런서 장치를 이용하여 서비스 안정화를 구현
장점:고가용성 및 내결함성이 향상되어 장애가 발생할 때 유연하게 대처, 서비스를 안정적으로 유지
Amazon ELB 기능
로드 밸런싱 기술을 제공
Amazon EC2 인스턴스에서 운영 중인 애플리케이션, 마이크로서비스 또는 컨테이너 서비스로 유입되는 트래픽을 자동 분산 처리하는 기술
ELB는 네트워크 및 응용 프로그램 수준의 로드밸런싱을 지원하여 다양한 애플리케이션에 적용할 수 있으며, SSL 암호화를 지원하여 애플리케이션의 보안을 강화
클라이언트에서 인스턴스로 향하는 트래픽을 ELB가 받아 다수의 대상으로 로드 밸런싱해서 전달하는 것을 확인할수 있다.
Amazon ELB 구성 요소 3가지
역할: 여러 대의 EC2 인스턴스, IP 주소, 람다 등을 사용하여 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지
동작 방식: 사용자 요청을 받아 애플리케이션 서버로 전달하고, 애플리케이션 서버의 응답을 사용자에게 반환
역할: 로드 밸런서에서 분산할 대상의 집합을 정의하는 구성 요소, 대상 그룹의 인스턴스에 대해 정적 또는 동적으로 구성할 수 있으며, 라우팅 규칙에 따라 요청을 받아들일 대상 그룹을 선택
동작 방식: 대상 그룹에 포함된 대상들의 상태를 정기적으로 확인하여 장애 발생 대상을 자동으로 제외하고, 정상적으로 동작하는 대상에만 요청을 전달
역할: 로드 밸런서에서 사용할 포트와 프로토콜을 설정하는 구성 요소, 로드 밸런서에서 클라이언트 요청을 수신하고, 해당 요청을 처리할 대상 그룹을 선택하는 역할
동작 방식: 로드 밸런서에 연결된 프로토콜과 포트를 사용하여 클라이언트 요청을 수신하고, 해당 요청을 대상 그룹으로 라우팅
Amazon ELB 동작 방식
설정한 가용 영역별로 로드 밸런서 노드가 생성되고 앞단에 리스너를 실행
리스너는 다양한 프로토콜(HTTP, HTTPS, TCP 등)을 지원하며, 요청에 대한 대상 그룹의 라우팅
을 정의
로드 밸런서는 가용 영역에 속한 대상 그룹의 인스턴스로 트래픽을 전달
➊ 클라이언트 요청 수신:
로드 밸런서에서 클라이언트 요청을 수신합니다. 로드 밸런서는 클라이언트와 연결을 유지하며, 요청을 수신하려고 리스너를 등록합니다.
➋ 대상 그룹 선택:
수신한 클라이언트 요청을 처리할 대상 그룹을 선택합니다. 대상 그룹은 인스턴스, IP 주소, 람다 함수, ALB 등 여러유형의 대상으로 구성됩니다.\
➌ 트래픽 분산:
선택된 대상 그룹에서 요청을 처리할 대상을 선택하고 해당 대상으로 요청을 분산합니다. 이때 로드 밸런서는 각 대상의 가용성 상태를 모니터링하고 가용하지 않은 대상을 제외합니다.
➍ 응답 반환:
분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환합니다. 이때 응답은 로드 밸런서에서 수신한 것으로 반환되므로, 클라이언트는 로드 밸런서가 대상 그룹에서 선택한 대상에게서마치 응답을 받는 것처럼 느낄 수 있습니다.
ELB를 생성할 때 로드 밸런서와 통신하는 방식
인터넷 경계 로드 밸런서: 외부에서 직접 로드 밸런서에 접근하는 방식
내부 로드 밸런서: 외부의 접근이 차단된 격리된 네트워크(내부 서버 전용)에서 로드 밸
런서를 사용하는 방식
Amazon ELB 교차 영역 로드 밸런싱
여러 가용 영역에 걸쳐 있는 EC2 인스턴스나 컨테이너 등 대상을 더 효과적으로 로드 밸런싱하는 기능
가용 영역별로 인스턴스 수량이 불균형하게 위치할 때 트래픽 비중을 보정
트래픽을 분산하는 기준이 가용 영역이 아닌 대상 그룹에 속한 자원을 기준으로 균일한 비중의 로
드 밸런싱을 수행
교차 영역 로드 밸런싱은 ALB를 사용할 때 기본적으로 활성화되어 있으나, NLB는 비활성화
대상 그룹 수준에서 구성할 수 있으므로 필요에 따라 각 대상 그룹별로 별도로 구성
Amazon ELB 종류(네 가지)
Amazon ELB에서 제공하는 로드 밸런서 종류는 트래픽의 프로토콜 종류나 서비스의 목적과 대상에 따라 네 가지로 분류
가장 초기에 출시된 로드 밸런서로, 4계층과 7계층 프로토콜을 모두 지원
HTTP/HTTPS 요청에 따른 최신 HTTPv1.2 프로토콜과 TCP의 SSL/TLS 암호화 프로토콜 지원
SSL 인증서를 사용
고정 IP 주소를 사용하여 로드밸런서를 생성
로드 밸런서에 대한 DNS 이름으로 액세스
서버의 기본 주소가 변경되면 로드 밸런서를 새로 생성
기능적인 한계 때문에 포트나 헤더 같은 데이터를 수정하거나 변경할 수 없는 등 제약 사항
서버의 구성과 아키텍처가 커지고 복잡해질수록 사용 비용이 증가
현재는 NLB와 ALB 같은 새로운 로드 밸런서 서비스가 출시되어 CLB를 대체해서 사용하는 추세이며, CLB는 레거시(legacy) 서비스로 분류
AWS에서 제공하는 L7 로드 밸런서
HTTP/HTTPS 같은 웹 애플리케이션 프로토콜을 지원
ALB는 대상 그룹 단위로 트래픽을 분산
각 대상 그룹은 ALB가 요청을 전달할 EC2 인스턴스, 람다 함수, 컨테이너 및 IP 주소로 라우팅하는 기능을 제공
특징(네 가지)
ALB는 웹 애플리케이션에 특화된 세밀한 라우팅을 제어할 수 있어 웹 애플리케이션을 위한 로드 밸런서로 사용
AWS에서 제공하는 L4 로드 밸런서
TCP·UDP·TLS 프로토콜을 지원
클라이언트와 로드 밸런서 간 연결을 TCP 레벨에서 유지하므로 대규모 트래픽을 처리
높은 처리량, 초당 연결 수, 대역폭 등 기능을 제공
동일한 IP 주소에서 여러 대상 그룹을 지원
특징(다섯 가지)
NLB는 대규모 네트워크 트래픽을 처리하고 대상 그룹의 대상이 IP 주소로 식별될 때 유용합니다. 또한 AWS에서 제공하는 다른 로드 밸런서보다 높은 처리량과 빠른 응답 시간을 보장하므로 게임 서버,
VoIP 서비스, 미디어 스트리밍 등에서 사용
네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서
서드 파티의 방화벽/어플라이언스 장비를 쉽게 배포하고 확장 및 관리
요청에 따라 트래픽을 확장하거나 축소하면서 다수의 서드 파티 장비에 로드 밸런싱을 처리
VPC내에서 실행되는 애플리케이션의 가용성과 확장성을 향상시키는 데사용
TCP 및 UDP 프로토콜을 지원하여 다양한 유형의 애플리케이션에 유연하게 적용