일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 머신러닝
- LG
- OpenAI
- 해커톤
- supervised learning
- 분류
- gpt
- 지도학습
- 딥러닝
- 티스토리챌린지
- LG Aimers
- AI
- 오블완
- GPT-4
- LG Aimers 4th
- regression
- LLM
- 회귀
- ChatGPT
- Classification
- PCA
- deep learning
- Machine Learning
Archives
- Today
- Total
SYDev
[핸즈온 AWS] Chapter 4. AWS 부하분산 서비스 본문
4.1. Amazon ELB
4.1.1. 부하분산이란
- 부하분산: server가 client의 요청을 받아 처리하는 과정에서 발생하는 부하(연산 작업)에 대해 동일한 목적을 수행하는 다수의 server에 분산 처리하는 기능
- 고가용성 및 내결함성 향상 -> 장애 발생에 유연한 대처, 서비스를 안정적으로 유지
- 고가용성: 시스템이나 서비스가 지속적으로 작동 가능하도록 하는 기능
- 내결함성: 시스템의 일부 구성 요소가 작동하지 않더라도 계쏙 작동할 수 있는 기능
- 부하 분산 -> Load Balancing
- 부하 분산을 수행하는 대상 -> Load Balancer
-> 여러 대의 서버를 운영하더라도 load balancing 기능이 없으면 서버로 향하는 트래픽을 효율적으로 배분하기 어려움
-> 서버 하나에 장애가 발생하면 접근하는 서비스에 따라 다른 결과가 나올 수 있음
4.1.2. Amazon ELB
- ELB(Elastic Load Balancing): Amazon EC2 인스턴스에서 운영 중인 application, micro service로 유입되는 트래픽을 자동 분산 처리하는 기술
- HTTP, HTTPS, TCP, SSL 등 다양한 프로토콜 지원
- 사용자가 같은 instance에서 session을 유지할 수 있도록 지원
- AWS의 CloudWatch 기능을 이용하여 로그와 메트릭을 모니터링 가능
- AWS의 오토 스케일링 기능과 결합 -> 트래픽이 증가할 때 자동으로 instance를 추가하거나 제거 -> application 가용성 유지
4.1.3. Amazon ELB 구성 요소
Load Balancer
- 여러 대의 EC2 instance, IP address, Lambda 등을 사용하여 트래픽을 대상 그룹에 있는 instance로 분산시켜 application의 가용성을 유지
- 사용자 request -> application server로 전달 -> application server response 반환
Target Group
- Load Balancer에서 분산할 대상의 집합을 정의하는 구성 요소
- 대상 그룹의 instance에 대해 정적 또는 동적으로 구성
- routing 규칙에 따라 요청을 받아들일 대상 그룹을 선택
- Load Balancer는 대상 그룹에 포함된 대상들의 상태를 정기적으로 확인 -> 장애 발생 대상을 자동으로 제외 -> 정상적으로 동작하는 대상에만 요청을 전달
Listener
- Load Balancer에서 사용할 port와 protocol을 설정하는 구성 요소
- Load Balancer에서 client request를 수신하고, 해당 request를 처리할 target gruop을 선택하는 역할
-> user와 instance 간 load balancing 통신을 할 수 있도록 load balancer 위치
-> 대상 그룹을 통해 load balancing target을 지정하고 상태를 확인
-> listener는 load balancing을 처리하는 트래픽의 protocol과 port number를 정의하고, 대상 트래픽을 어떻게 처리할지 규칙을 생성
-> ex) tcp 80번 포트로 로드 밸런싱 트래픽을 정의, 이런 대상 트래픽에 대한 rule을 생성하고 어떤 action을 수행할지 정의
4.1.4. Amazon ELB 동작 방식
- 클라이언트 요청 수신: load balancer에서 client 요청 수신. load balancer는 client와 연결을 유지하며, 요청을 수신하려고 listener를 등록
- target group 선택: 수신한 client request를 수신할 target group 선택. target group은 instance, ip address, lambda functionl, ALB 등 여러 유형의 대상으로 구성
- traffic 분산: 선택된 target group에서 request를 처리할 대상을 선택, 해당 대상으로 요청을 분산. 이때 load balancer는 각 대상의 가용성 상태를 mornitoring하고 가용하지 않은 대상을 제외
- response 반환: 분산된 request를 대상에서 처리하고 client에 response를 반환
4.1.5. Amazon ELB 교차 영역 Load Balancing
- Amazon ELB는 여러 availability zone에서 노드를 실행 -> 각 노드는 availability zone 내 target group으로 요청을 분산
- 이때 target group에 등록된 대상이 여러 가용 영역에 걸쳐 있다면 -> load balancer는 동일한 비중으로 가용 영역 내에 있는 대상으로 트래픽을 분산 -> 가용성 향상, but 가용 영역 내 instance 수량이 불균형할 때는 일부 인스턴스로 트래픽이 몰리고 다른 instance는 유휴 상태가 되는 불균형 처리 문제 발생
-> 첫 번째 가용 영역 두 대, 두 번째 가용 영역 여덟 대로 영역별로 불균형한 구성
-> 사용자 PC에서 ELB 도메인 주소로 전송한 트래픽은 1:1 비율로 각 가용 영역에 위치한 load balancer로 전달
-> Amazon ELB에서 제공하는 교차 영역 로드 밸런싱 기능
- ELB cross-zone load balancing: 여러 가용 영역에 걸쳐 있는 EC2 인스턴스나 컨테이너 등 대상을 더 효과적으로 로드 밸런싱하는 기능
- 가용 영역 별로 인스턴스 수량이 불균형 -> 트래픽 비중을 보정
4.1.6. Amazon ELB 종류
Amazon ELB에서 제공하는 load balancer 종류는 트래픽의 프로토콜 종류나 서비스 목적과 대상에 따라 네 가지로 분류
CLB(Classic Load Balancer)
- 4계층과 7계층 프로토콜 모두 지원하는 로드 밸런서
- HTTP/HTTPS 요청에 따른 최신 HTTPv1.2 프로토콜과 TCP의 SSL/TLS 암호화 프로토콜도 지원, SSL 인증서 사용
- 고정 IP 주소를 사용하여 로드 밸런서 생성, 로드 밸런서에 대한 DNS 이름으로 액세스 가능
- 서버의 기본 주소가 변경되면 로드 밸런서를 새로 생성해야 함
- 기능적 한계로 port나 header 같은 데이터를 수정하거나 변경할 수 없는 제약 사항
- 서버의 구성과 아키텍처가 커지고 복잡해질수록 사용 비용 증가
ALB(Application Load Balancer)
- AWS에서 제공하는 L7 로드 밸런서
- HTTP/HTTPS 같은 웹 애플리케이션 프로토콜 지원
- Target Group 단위로 트래픽 분산
- HTTP 헤더를 확인하여 다양한 라우팅 기능 제공 - 경로 기반 라우팅(URL 경로 기반), 호스트 기반 라우팅(호스트 이름 기반), 쿼리 문자열 기반 라우팅(URL 쿼리 문자열 기반)
- 오토 스케일링과 함께 사용하여 확장성 있는 애플리케이션 구성 가능
- target group 내 인스턴스에 대해 상태 검사 수행 -> 문제 발생 시 자동으로 장애 조치
- Amazon CloudWatch Logs와 통합 -> 로그 및 지표 데이터 수집 -> 모니터링 및 분석
NLB(Network Load Balancer)
- AWS에서 제공하는 L4 로드 밸런서
- TCP, UDP, TLS 프로토콜 지원
- 클라이언트와 로드 밸런서 간 연결을 TCP 레벨에서 유지 -> 대규모 트래픽 처리 가능
- 높은 처리량: 초당 수백만 개의 연결 처리
- 빠른 응답 시간: 최적화된 L4 로드 밸런싱 알고리즘
- 높은 가용성: 여러 가용 영역에서 인스턴스 실행, 매우 빠른 인스턴스 검색 수행
- IP 주소 보존: client IP 주소를 원래 IP 주소로 보존 -> client ip 주소를 유지하면서 로드 밸런싱 수행
- 모니터링: AWS CloudTrail, Amazon Cloud Watch Logs 같은 모니터링 기능 지원
GWLB(GateWay Load Balancer)
- 네트워크 트래픽을 서드 파티의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서
4.2. ALB와 NLB를 이용한 로드 밸런싱 구성
- 실습을 위한 기본 인프라를 CloudFormation으로 배포
- 기본 인프라 환경을 검증
- ALB 생성 후 동작 과정 확인
- ALB의 경로 기반 라우팅 기능을 이용한 로드 밸런싱 방법을 구성하고 확인
- ALB의 User-Agent를 활용한 로드 밸런싱 방법을 구성하고 확인
- NLB를 생서아고 교차 영역 로드 밸런싱 기능 여부를 동작 과정을 거쳐 확인
- ALB와 NLB의 출발지 IP 보존 방식에 대한 동작 과정을 확인
- 실습을 위해 생성된 자원을 모두 삭제
4.2.1. CloudFormation 소개
CloudFormation: IaC(Infrastructure as Code) 기반으로 AWS 인프라 리소스를 자동으로 생성하는 서비스
- IaC: 수동으로 자원을 만들지 않고 선언된 코드로 자원을 생성
- AWS 리소스 간 종속성 관리
- 인프라 관리의 자동화
CloudFormation 구성 요소
- 템플릿: AWS 인프라를 JSON 또는 YAML 형식의 코드로 정의하는 파일
- 스택: CloudFormation을 이용하여 생성하는 AWS 인프라의 집합
- 리소스: Amazon EC2 인스턴스, Amazon RDS 데이터베이스, Amazon S3 버킷 등 ..
- 파라미터: 스택을 생성할 때 전달할 수 있는 매개변수
- 이벤트: CludeFormation 스택에서 발생하는 모든 이벤트를 기록
- CloudFormation: 템플릿을 해석해서 스택을 생성하고, 정의된 AWS 인프라를 생성/변경/삭제
4.2.2. CloudFormation으로 기본 인프라 배포하기
- CloudFormation으로 생성된 기본 인프라 자원
- MyVPC: MyEC2 서버를 배치 -> ELB에서 제공하는 로드 밸런싱 기능 테스트
- ELB-VPC: 실습에 사용되는 서버가 위치 -> 첫 번째 서브넷에 1개, 두 번째 서브넷에 2개
- SNMP(Simple Network Management Protocol): 네트워크 장비들을 모니터링하고 관리하는 프로토콜
4.2.6. ALB의 User-Agent를 활용한 로드 밸런싱을 구성하고 확인하기
4.2.7. NLB 생성 후 교차 영역 로드 밸런싱 동작 확인
참고자료
- AWS 교과서, 김원일 외 2명, 길벗, 2023.10.20
'KHUDA 6th > Study' 카테고리의 다른 글
[Docker & Kubernetes] 4주차 정리 (1) - Chapter 7. 쿠버네티스의 기본 구조 (0) | 2024.08.10 |
---|---|
[핸즈온 AWS] Chapter 5. AWS 스토리지 서비스 (0) | 2024.08.07 |
[Docker & Kubernetes] Port Forwarding이란? (1) | 2024.08.06 |
[Docker & Kubernetes] 3주차 정리 (2) - Chapter 6. 도커를 활용한 Flask 실행 (0) | 2024.08.05 |
[Docker & Kubernetes] 3주차 정리 (1) (0) | 2024.08.05 |