250x250
Notice
Recent Posts
Recent Comments
«   2024/10   »
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 29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[핸즈온 AWS] Chapter 4. AWS 부하분산 서비스 본문

KHUDA 6th/Study

[핸즈온 AWS] Chapter 4. AWS 부하분산 서비스

시데브 2024. 8. 7. 01:33
728x90

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 동작 방식

  1. 클라이언트 요청 수신: load balancer에서 client 요청 수신. load balancer는 client와 연결을 유지하며, 요청을 수신하려고 listener를 등록
  2. target group 선택: 수신한 client request를 수신할 target group 선택. target group은 instance, ip address, lambda functionl, ALB 등 여러 유형의 대상으로 구성
  3. traffic 분산: 선택된 target group에서 request를 처리할 대상을 선택, 해당 대상으로 요청을 분산. 이때 load balancer는 각 대상의 가용성 상태를 mornitoring하고 가용하지 않은 대상을 제외
  4. 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를 이용한 로드 밸런싱 구성

  1. 실습을 위한 기본 인프라를 CloudFormation으로 배포
  2. 기본 인프라 환경을 검증
  3. ALB 생성 후 동작 과정 확인
  4. ALB의 경로 기반 라우팅 기능을 이용한 로드 밸런싱 방법을 구성하고 확인
  5. ALB의 User-Agent를 활용한 로드 밸런싱 방법을 구성하고 확인
  6. NLB를 생서아고 교차 영역 로드 밸런싱 기능 여부를 동작 과정을 거쳐 확인
  7. ALB와 NLB의 출발지 IP 보존 방식에 대한 동작 과정을 확인
  8. 실습을 위해 생성된 자원을 모두 삭제

 

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
728x90