티스토리 뷰
* 부하분산
- 서버-클라이언트 환경에서 서버가 클라이언트 요청을 받아 처리하는 과정에서 발생하는 부하(연산 작업)에 대해 동일한 목적을 수행하는 다수의 서버에 분산 처리하는 기능
- 부하분산을 사용하면 고가용성 및 내결함성이 향상되어 장애가 발생할 때 유연하게 대처할 수 있고, 서비스를 안정적으로 유지할 수 있어 클라우드를 구성할 때 반드시 사용해야 하는 기술
[참고]
고가용성 : 시스템이나 서비스가 지속적으로 작동 가능하도록 하는 기능
내결함성 : 시스템의 일부 구성 요소가 작동하지 않더라도 계속 작동할 수 있는 기능
* 로드 밸런싱 & 로드 밸런서
- 로드 밸런싱(Load Balancing) : 부하분산을 처리하는 기술
- 로드 밸런서(Load Balancer) : 부하분산을 수행하는 대상
* Amazon ELB 기능
- AWS에서 ELB(Elastic Load Balancing)라는 로드 밸런싱 기술 제공함
- Amazon EC2 인스턴스에서 운영 중인 애플리케이션, 마이크로서비스 또는 컨테이너 서비스로 유입되는 트래픽을 자동 분산 처리하는 기술로, 여러 가용 영역에서 작동하여 애플리케이션 가용성을 향상 시킴
- HTTP, HTTPS, TCP, SSL 등 다양한 프로토콜을 지원하며, 사용자가 같은 인스턴스에서 세션을 유지할 수 있도록 지원함
- AWS의 CloudWatch 기능을 이용하여 로그와 메트릭을 모니터링 할 수 있음
- AWS의 오토 스케일링 기능과 결합해서 트래픽이 증가할 때 자동으로 인스턴스를 추가하거나 제거하면서 애플리케이션 가용성을 유지함
- 네트워크 및 응용 프로그램 수준의 로드 밸런싱을 지원하여 다양한 애플리케이션에 적용할 수 있으며, SSH 암호화를 지원하여 애플리케이션의 보안을 강화함
* Amazon ELB 구성 요소
1) 로드 밸런서
- 여러 대의 EC2 인스턴스, IP 주소, 람다 등을 사용함
- 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지하는 역할
- 로드 밸런서는 사용자의 요청을 받아 애플리케이션 서버로 전달하고, 애플리케이션 서버의 응답을 사용자에게 반환함
2) 대상 그룹
- 로드 밸런서에서 분산할 대상의 집합을 정의하는 구성 요소
- 대상 그룹의 인스턴스에 대해 정적 또는 동적으로 구성할 수 있음
- 라우팅 규칙에 따라 요청을 받아들일 대상 그룹을 선택함
- 로드 밸런서는 대상 그룹에 포함된 대상들의 상태를 정기적으로 확인하여 장애 발생 대상을 자동으로 제외하고, 정상적으로 동작하는 대상에만 요청을 전달함
3) 리스너
- 로드 밸런서에서 사용할 포트와 프로토콜을 설정하는 구성 요소
- 로드 밸런서에서 클라이언트 요청을 수신하고, 해당 요청을 처리할 대상 그룹을 선택하는 역할
- 로드 밸런서에 연결된 프로토콜과 포트를 사용하여 클라이언트 요청을 수신하고, 해당 요청을 대상 그룹으로 라우팅함
* Amazon ELB 구성요소 간 관계
- 사용자와 인스턴스 간 로드 밸런싱 통신을 할 수 있도록 로드 밸런서가 위치함
- 로드 밸런서는 대상 그룹을 통해 로드 밸런싱 대상을 지정하고 상태를 확인함
- 리스너는 로드 밸런싱을 처리하는 트래픽의 프로토콜과 포트 번호를 정의하고 대상 트래픽을 어떻게 처리할 지 규칙 생성
- Amazon ELB 구성 요소를 통해 애플리케이션의 가용성과 확장성 향상할 수 있음
* Amazon ELB 동작 방식
- Amazon ELB를 생성하면 설정한 가용 영역별로 로드 밸런서 노드가 생성되고 앞단에 리스너를 실행함
- 리스너는 다양한 프로토콜(HTTP, HTTPS, TCP 등)을 지원하며, 요청에 대한 대상 그룹의 라우팅을 정의함
- 로드 밸런서는 가용 영역에 속한 대상 그룹의 인스턴스로 트래픽을 전달함
[동작 방식]
1) 클라이언트 요청 수신
- 로드 밸런서에서 클라이언트 요청을 수신함
- 로드 밸런서는 클라이언트와 연결을 유지하며, 요청을 수신하려고 리스너를 등록함
2) 대상 그룹 선택
- 수신한 클라이언트 요청을 처리할 대상 그룹을 선택함
- 대상 그룹은 인스턴스, IP 주소, 람다 함수, ALB 등 여러 유형의 대상으로 구성됨
3) 트래픽 분산
- 선택된 대상 그룹에서 요청을 처리할 대상을 선택하고 해당 대상으로 요청을 분산함
- 분산 시 로드 밸런서는 각 대상의 가용성 상태를 모니터링하고 가용하지 않은 대상을 제외함
4) 응답 반환
- 분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환함
- 응답은 로드 밸런서에서 수신한 것으로 반환되므로, 클라이언트는 로드 밸런서가 대상 그룹에서 선택한 대상에게서 마치 응답을 받는 것처럼 느낄 수 있음
* ELB 생성 시 로드 밸런서와 통신하는 방식
1) 인터넷 경계 로드 밸런서 : 외부에서 직접 로드 밸런서에 접근하는 방식
2) 내부 로드 밸런서 : 외부의 접근이 차단된 격리된 네트워크(내부 서버 전용)에서 로드 밸런서를 사용하는 방식
* Amazon ELB 교차 영역 로드 밸런싱
1) 교차 영역 로드 밸런싱 비활성화
- 가용 영역별로 로드 밸런서가 배치되고 다수의 인스턴스가 구성되어 있는데, 대상 인스턴스 수량이 첫 번째 가용 영역은 두 대, 두 번쨰 가용 영역은 여덟 대로 영역별로 불균형하게 구성되어 있음
- 사용자 PC에서 ELB 도메인 주소로 트래픽을 전송하면, 도메인을 해석하여 50:50 비중으로 가용 영역에 위치한 로드 밸런서로 전달
- 두 로드 밸런서는 트래픽 비중이 다르게 되어 로드 밸런싱이 불균형해지는 것을 확인할 수 있음
2) 교차 영역 로드 밸런싱 활성화
- ELB 교차 영역 로드 밸런싱(Cross-zone Load Balancing) : 여러 가용 영역에 걸쳐 있는 EC2 인스턴스나 컨테이너 등 대상을 더 효과적으로 로드 밸런싱하는 기능
- 교차 영역 로드 밸런싱은 가용 영역별로 인스턴스 수량이 불균형하게 위치할 때 트래픽 비중을 보정할 수 있으며, 트래픽을 분산하는 기준이 가용 영역이 아닌 대상 그룹에 속한 자원을 기준으로 균일한 비중의 로드 밸런싱을 수행할 수 있음
- 비활성화 시와 동일하게 가용 영역별로 인스턴스 수량이 불균형한 환경에서 가용 영역별로 50:50 비중으로 트래픽을 전달한다고 가정할 때, 대상 자원의 비율에 따라 가용 영역을 교차하기 때문에 각 10의 비중을 맞추어 균일하게 로드 밸런싱함
- 교차 영역 로드 밸런싱 활성화하면 가용 영역과 무관하게 대상 자원의 비율을 고려하여 가용 영역을 교차할 수 있어 좀 더 효율적으로 로드 밸런싱을 할 수 있음
* Amazon ELB 종류
- 트래픽의 프로토콜 종류나 서비스의 목적과 대상에 따라 네 가지로 분류할 수 있음
구분 | CLB | ALB | NLB | GWLB |
주요 특징 | EC2-Classic을 대상으로 트래픽을 부하분산 처리하는 로드 밸런서 | HTTP와 HTTPS에 대한 트래픽을 부하분산 처리하는 OSI 7계층의 로드 밸런서 | TCP와 UDP에 대한 트래픽을 부하분산 처리하는 OSI 4계층 로드 밸런서 | VPC 내부 라우팅으로 서드 파티의 방화벽/어플라이언스 대상으로 경유하는 트래픽을 부하분산 처리하는 로드 밸런서 |
유형 | 4계층, 7계층 | 7계층 | 4계층 | 3계층 게이트웨이, 4계층 로드 밸런서 |
프로토콜 | TCP, SSL/TLS, HTTP, HTTPS |
HTTP, HTTPS, gRPC | TCP, UDP, TLS | IP |
대상 유형 | EC2-Classic | IP, 인스턴스, AWS Lambda, 컨테이너 |
IP, 인스턴스, ALB, 컨테이너 | IP 인스턴스 |
고정 IP 제공 | 미지원 | 미지원 | 지원 | 미지원 |
보안 그룹 | 보안 그룹 미사용 | 보안 그룹 미사용 | 보안 그룹 사용 | 보안 그룹 미사용 |
* CLB(Classic Load Balancer)
- Amazon ELB의 가장 초기에 출시된 로드 밸런서
- 4계층과 7계층 프로토콜을 모두 지원함
- HTTP/HTTPS 요청에 따른 최신 HTTPv 1.2 프로토콜과 TCP의 SSL/TLS 암호화 프로토콜도 지원하며, SSL인증서를 사용
- 고정 IP 주소를 사용하여 로드 밸런서를 생성하고, 로드 밸런서에 대한 DNS 이름으로 액세스 할 수 있음
- 서버의 기본 주소가 변경되면 로드 밸런서를 새로 생성해야 하며, 기능적인 한계 때문에 포트나 헤더 같은 데이터를 수정하거나 변경할 수 없는 등 제약 사항이 있기 때문에 서버의 구성과 아키텍처가 커지고 복잡해져 비용이 증가함
- 현재는 NLB와 ALB 같은 새로운 로드 밸런서로 대체하여 사용하는 추세이며, 레거시 서비스로 분류됨
* ALB(Application Load Balancer)
- AWS에서 제공하는 L7 로드 밸런서
- HTTP/HTTPS 같은 웹 애플리케이션 프로토콜을 지원함
- ALB는 대상 그룹 단위로 트래픽을 분산하며, 각 대상 그룹은 ALB가 요청을 전달할 EC2 인스턴스, 람다 함수, 컨테이너 및 IP 주소로 라우팅하는 기능을 제공함
- 웹 애플리케이션에 특화된 세밀한 라우팅을 제어할 수 있어 웹 애플리케이션을 위한 로드 밸런서로 사용함
- Lambda를 대상 그룹 지정할 수 있음
[특징]
- HTTP 헤더를 확인하여 다양한 라우팅 기능을 제공함
1) 경로 기반 라우팅 : URL 경로를 기반으로 요청을 분산함
2) 호스트 기반 라우팅 : 호스트 이름을 기반으로 요청을 분산함
3) 쿼리 문자열 기반 라우팅 : URL 쿼리 문자열을 기반으로 요청을 분산함
- 오토 스케일링과 함께 사용하여 확장성 있는 애플리케이션을 구성할 수 있음
- 대상 그룹 내 인스턴스에 대해 상태 검사를 수행하고, 문제가 발생하면 자동으로 장애 조치를 취할 수 있음
- Amazon CloudWatch Logs와 통합되어 로그 및 지표 데이터를 수집하고 모니터링 및 분석할 수 있음
* NLB(Network Load Balancer)
- AWS에서 제공하는 L4 로드 밸런서로, TCP, UDP, TLS 프로토콜을 지원함
- NLB는 ALB와 다르게 클라이언트와 로드 밸런서 간 연결을 TCP 레벨에서 유지하므로 대규모 트래픽을 처리할 수 있음
- 이를 위해 높은 처리량, 초당 연결 수, 대역폭 등 기능을 제공하며 동일한 IP 주소에서 여러 대상 그룹을 지원할 수 있음
- 대규모 네트워크 트래픽을 처리하고 대상 그룹의 대상이 IP 주소로 식별될 때 유용함
- AWS에서 제공하는 다른 로드 밸런서보다 높은 처리량과 빠른 응답 시간을 보장하므로 게임 서버, VoIP 서비스, 미디어 스트리밍에 사용
- 고정 IP 사용할 수 있음
[특징]
1) 높은 처리량 : 초당 수백만 개의 연결을 처리함
2) 빠른 응답 시간 : 빠른 응답 시간을 위해 최적회된 L4 로드 밸런싱 알고리즘 사용
3) 높은 가용성 : 여러 가용 영역에서 인스턴스를 실행하고 매우 빠른 인스턴스 검색을 수행하여 신속하게 장애를 복구함
4) IP 주소 보존 : 클라이언트 IP 주소를 원래 IP 주소로 보존할 수 있음
클라이언트 IP 주소를 유지하면서 로드 밸런싱을 수행할 수 있음을 의미함
5) 모니터링 : AWS CloudTrail, Amazon CloudWatch Logs 같은 모니터링 기능을 지원함
* GWLB (GateWay Load Balancer)
- 네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서
- 사용 시 서드 파티의 방화벽/어플라이언스 장비를 쉽게 배포하고 확장 및 관리할 수 있음
- 요청에 따라 트래픽을 확장하거나 축소하면서 다수의 서드 파티 장비에 로드 밸런싱을 처리함
- VPC 내에서 실행되는 애플리케이션의 가용성과 확장성을 향상시키는데 사용되며, TCP 및 UDP 프로토콜을 지원하여 다양한 유형의 애플리케이션에 유연하게 적용할 수 있음
'개인공부 > AWS' 카테고리의 다른 글
[AWS] 데이터베이스 서비스 (0) | 2024.01.25 |
---|---|
[AWS] 스토리지 서비스 (0) | 2024.01.25 |
[AWS] AWS 네트워킹 (0) | 2024.01.21 |
[AWS] 네트워킹 기초 정리 (0) | 2024.01.21 |
[AWS] Amazon CloudWatch 이메일 경보 설정 방법 (0) | 2024.01.20 |