부하분산이란?
부하분산은 서버-클라이언트 환경에서 고가용성 및 내결함성을 향상시켜 장애 발생 시 유연하게 대처가 가능하며
서비스를 안정적으로 유지한다.
이러한 부하분산을 로드밸런싱이라고 부르며 부하분산 수행 대상을 로드 밸런서라고 칭한다
Amazon ELB
✅ Amazon ELB란?
ELB는 로드 밸런싱 기술로 EC2에서 운영중인 애플리케이션,카이크로서비스, 컨테이너 서비스를 자동 분산 처리한다
ELB는 여러 가용 영역에서 작동하며 다양한 프로토콜을 지원한다.
- AWS CloudWatch 기능 활용하여 로그와 메트릭 모니터링 가능
- 오토스케일 기능과 결합해 자동으로 인스턴스추가 및 가용성 유지
- SSL 암호화 지원으로 보안 강화
✅ ELB 구성요소
세가지 요소로 구성
- 로드밸런서
- 여러대의 EC2 인스턴, IP 주소, 람다 등을 사용하여 트래픽을 대상 그룹 인스턴스로 분산
- 대상그룹
- 로드 밸런서에서 분산할 대상의 집합을 정의하는 구성 요소.
- 인스턴스에 대해 정적 동적으로 구성하며 규칙에 따라 그룹 선택
- 로드밸런서는 대상의 상태를 정기 확인하여 장애 발생 대상 자동 제외 및 정상 서버에만 요청
- 리스너
- 로드 밸런서에 사용할 포트와 프로토콜을 설정하는 구성 요소.
- 클라이언트 요청을 수신, 요청 처리 그룹을 선택하는 역할
✅ ELB 동작 방식
ELB 생성 시 설정한 가용 영역별로 로드 밸런서 노드가 생성되며 앞단에 리스너 실행.
리스너는 프로토콜을 지원하며 요청에 대한 그룹의 라우팅 정의
- 클라이언트 요청 수신
- 로드 밸런서에서 클라이언트 요청 수신
- 로드 밸런서는 클라이언트와 연결을 유지하며 요청을 수신하기 위해 리스너 등록
- 대상 그룹 선택:
- 수신한 클아이언트 요청을 처리할 대상 그룹 선택
- 대상 그룹은 IP 주소, 람다 함수 ALB 등으로 구성
- 수신한 클아이언트 요청을 처리할 대상 그룹 선택
- 트래픽 분산 :
- 수신한 클아이언트 요청을 처리할 대상 그룹 선택
- 선택된 대상으로 요청을 분산
- 로드 밸런서는 각 대상의 가용성 상태를 모니터링, 가용치 않은 대상을 제외
- 응답 반환
- 분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환
- 응답은 로드 밸런서에서 수신 후 반환되므로 대상 그룹에서 응답을 받은 것으로 확인
ELB 교차 영역 로드 밸런싱
교차영역 로드 밸런싱[비활성화] 상태일시 같은 50의 트래픽을 2개의 서버에 나눌경우 25씩 할당하여
대상그룹에 분배된다 교차영역 로드밸런싱을 통해 모든 영역에 균등한 트래픽을 나눌 수 있도록 한다.
- ALB 사용시 기본적으로 활성화 되나 NLB 사용시 비활성화 되어있다
ELB 종류
- CLB
- 초기 로드 밸런서로 L4 L7 프로토콜을 지원한다
- SSL/TLS 암호화 프로토콜을 지원하며 SSL 인증서를 사용
- 고정 IP 주소를 사용하여 DNS이름으로 액세스 가능
- 서버의 기본 주소 변경 시 로드밸런서 새로 생성해야함
- 기능적 한계로 포트, 헤더 같은 데이터를 수정 및 변경이 불가능하다
- 서버의 아키텍처의 복잡성 증가 시 사용비용 증가
- ALB
- L7 로드밸런서로 HTTP/HTTPS 같은 앱 애플리케이션 프로토콜 지원
- ALB 그룹 단위 트래픽 분산하며 EC2 ,람다, 컨테이너 및 IP 주소 라우팅 기능 제공
- 경로 기반 라우팅: URL 경로 기반 요청 분산
- 호스트 기반 라우팅 : 호스트 이름을 기반으로 요청 분산
- 쿼리 문자열 기반 라우팅 : URL 쿼리 문자열 기반 요청 분산
- 오토 스케일링과 병행하여 사용하여 확장성 확보
- 인스턴스 상태 검사를 수행하고 문제 발생시 자동 장애 조치
- CloudWatch Log와 통합하여 로그 및 지표 데이터 수집, 모니터링 분석
- 웹 애플리케이션에 특화된 세밀한 라우팅 제어
- NLB
- L4 로드 밸런서로 TCP/UDP/TLS 프로토콜 지원
- L4를 지원하므로 TPC 레벨을 통해 대규모 트래픽 처리 가능
- 대규모 처리, IP 주소로 식별시 높은 처리량과 빠른 응답 시간을 보장한다
- 주요 대상 : VoIp 서비스, 미디어 스트리밍
- 높은 처리량, 초당 연산 기능을 사용하여 동일 IP 주소에서 여러 대상 그룹 지원
- 높은 처리량
- 빠른 응답시간
- 높은 가용성
- IP 주소 보존
- 모니터링 : CloudTrail , CloudWatch Log
- GWLB
- 네트워크 트래픽을 서드 파티의 방화벽 / 어플라이언스 장비로 부하분산을 처리
- 서드 파티 방화벽 / 어플라이언스 장비를 쉽게 배포하고 확장
- 요청에 따라 트래픽을 확장하거나 축소하여 가용성과 확장성 향상
- TCP/ UDP 프로토콜을 지원하여 유연하게 적용
CloudFormation
특징
- IAC
- 수동으로 자원을 생성하지 않고 선언된 코드를 사용하여 자원을 생성한다
- 불필요한 오류를 줄리고 다른 환경에서도 인프라를 쉽게 생성 가능
- 형상관리가 용이
- AWS 리소스 종속성 관리
- AWS리소스간 종속성을 템플릿에 정의가 가능
- 인프라 관리 자동화
- 인프라 구성을 자동화 하여 운영비용 감소
- 지속적 배포를 지원하는 CI/CD 파이프라인과 통합 가능
구성요소
- 템플릿 : AWS인프라를 JSON 또는 YAML 형식의 코드로 정의
- 스택 : 생성하는 AWS 인프라 집합
- 리소스 : AWS 리소스 EC2,RDS S3 등 포함
- 파라미터 : 스택 생성시 전달 가능한 매개변수
- 이벤트 : 모든 이벤트를 기록하여 형상관리에 사용하며 스택 문제 해결
실습
ALB 와 NLB를 이용한 로드 밸런싱 구성
ALB 실습
1. MyVPC -> MyEC2 서버 배치하여 ELB 로드 밸런싱
1. 로드밸런서 구성
1.1. EC2 대상그룹 생성
- ELB-VPC에 존재하는 그룹을 대상으로 ALB-TAG이름으로 대상 그룹 생성
1.2 로드밸런서 생성
- ALB 생성
- 네트워크 매핑 : 로드밸런서를 사용할 네트워크 선택
- 가용 영역 선택 : server 1,2,3 가 위치한 가용영역 선택
- 보안 그룹 지정 : elblab
- 리스너 및 라우팅 : HTTP 80 , 대상그룹 = ALB-TG
1.3 로드밸런서 동작 확인
동작 예상도
- 생성된 로드 밸런서는 두개의 가용 영역에 각각 ENI를 생성하여 통신을 할 수 있도록 하며 Public Ip 주소 할당
- HTTP 클라이언트인 MyEC2 에서 HTTP -> Server {1,2,3} 접근 시 각각 직접 접근이 아닌 ALB 도메인 주소로 접근
- 로드 밸런서의 정책에 의해 ALB 를 이용하여 로드 밸런싱 되어서 전달
- 90회 반복시 30%대 확률로 균등하게 로드 밸런싱
- 기본적으로 라운드 로빈 방식을 통해 ALB당 동일한 트래픽 전달
- 교차영역으로 인한 동일한 횟수로 전달함으로 서버가 적은 곳에 부하가 발생할 수 있음
1.4. ALB 경로 기반 라우팅 기능 구성
로드밸런싱 기능으로 인해 서버에 구성된 경로에 접속 하고자 할때 사용되는 경로가 다를경우 해당
경로를 갖지 않을 시 오류 발생
-> 경로 기반 라우팅 기능을 통해 해결
- 대상 그룹 생성
- 로드밸런서 규칙 추가
- 경로 기반추가
- 경로 지정
- 조건 순위 지정
1.5 ALB User-Agent를 활용하여 로드밸런싱 구성 및 확인
- 고급 라우팅 기능 중 HTTP 헤더 기반 라우팅 구성
- 특정 장치의 차단이 가능 예) 스마트폰
- 클라이언트에 맞는 최적의 데이터를 보낼 수 있음
실습 Yaml : https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter4/elblab.yaml
'Cloud' 카테고리의 다른 글
[Cloud] RDS 개념 및 실습 (0) | 2025.03.27 |
---|---|
[Cloud] VPC -> Pub -> Pri 서버 구성 (0) | 2025.03.19 |
[Cloud] 클라우드 네트워크 (0) | 2025.02.25 |
[Cloude] AWS EC2 생성 실습 (0) | 2025.02.23 |
[Cloud] 클라우드 기초 (0) | 2025.02.23 |