Cloud

[Cloud] Amazon ELB / 부하 분산 서비스

cumo 2025. 2. 26. 23:13

부하분산이란?

부하분산은 서버-클라이언트 환경에서 고가용성 및 내결함성을 향상시켜 장애 발생 시 유연하게 대처가 가능하며
서비스를 안정적으로 유지한다.

이러한 부하분산을 로드밸런싱이라고 부르며 부하분산 수행 대상을 로드 밸런서라고 칭한다

 

Amazon ELB

Amazon ELB란?

ELB는 로드 밸런싱 기술로  EC2에서 운영중인 애플리케이션,카이크로서비스, 컨테이너 서비스를  자동 분산 처리한다

ELB는 여러 가용 영역에서 작동하며 다양한 프로토콜을 지원한다.

 

  •  AWS CloudWatch 기능 활용하여 로그와 메트릭 모니터링 가능
  •  오토스케일 기능과 결합해 자동으로 인스턴스추가 및 가용성 유지
  •  SSL 암호화 지원으로 보안 강화

ELB 구성요소

세가지 요소로 구성

  • 로드밸런서 
    • 여러대의 EC2 인스턴, IP 주소, 람다 등을 사용하여 트래픽을 대상 그룹 인스턴스로 분산
  • 대상그룹
    • 로드 밸런서에서 분산할 대상의 집합을 정의하는 구성 요소.
    • 인스턴스에 대해 정적 동적으로 구성하며 규칙에 따라 그룹 선택
    • 로드밸런서는 대상의 상태를 정기 확인하여 장애 발생 대상 자동 제외 및 정상 서버에만 요청
  • 리스너
    • 로드 밸런서에 사용할 포트와 프로토콜을 설정하는 구성 요소. 
    • 클라이언트 요청을 수신, 요청 처리 그룹을 선택하는 역할

 

 

 ELB 동작 방식

출처 : https://juju-study.tistory.com/m/1010

ELB 생성 시 설정한 가용 영역별로 로드 밸런서 노드가 생성되며 앞단에 리스너 실행.

리스너는 프로토콜을 지원하며 요청에 대한 그룹의 라우팅 정의

 

  • 클라이언트 요청 수신 
    • 로드 밸런서에서 클라이언트 요청 수신
    • 로드 밸런서는 클라이언트와 연결을 유지하며 요청을 수신하기 위해 리스너 등록
  • 대상 그룹 선택:
    • 수신한 클아이언트 요청을 처리할 대상 그룹 선택
      • 대상 그룹은 IP 주소, 람다 함수  ALB 등으로 구성
  • 트래픽 분산 :
    • 수신한 클아이언트 요청을 처리할 대상 그룹 선택
    • 선택된 대상으로 요청을 분산
    • 로드 밸런서는 각 대상의 가용성 상태를 모니터링, 가용치 않은 대상을 제외
  • 응답 반환
    • 분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환
    • 응답은 로드 밸런서에서 수신 후 반환되므로 대상 그룹에서 응답을 받은 것으로 확인

ELB 교차 영역 로드 밸런싱

교차영역 로드 밸런싱[비활성화] 상태일시 같은 50의 트래픽을 2개의 서버에 나눌경우 25씩 할당하여

대상그룹에 분배된다 교차영역 로드밸런싱을 통해 모든 영역에 균등한 트래픽을 나눌 수 있도록 한다.

출처 : https://juju-study.tistory.com/m/1010

  • 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 

ELB 설정

 

name: ALB 로드 밸런서 생성 완료

  1.3 로드밸런서 동작 확인

 

   동작 예상도

  1. 생성된 로드 밸런서는 두개의 가용 영역에 각각 ENI를 생성하여 통신을 할 수 있도록 하며 Public Ip 주소 할당
  2. HTTP 클라이언트인 MyEC2 에서 HTTP -> Server {1,2,3} 접근 시 각각 직접 접근이 아닌 ALB 도메인 주소로 접근
  3. 로드 밸런서의 정책에 의해 ALB 를 이용하여 로드 밸런싱 되어서 전달

각각 ALB 인터페이스 주소가 생성됨
로드 밸런싱 결과

  • 90회 반복시 30%대 확률로 균등하게 로드 밸런싱
  • 기본적으로 라운드 로빈 방식을 통해 ALB당 동일한 트래픽 전달
  • 교차영역으로 인한 동일한 횟수로 전달함으로 서버가 적은 곳에 부하가 발생할 수 있음

1.4. ALB 경로 기반 라우팅 기능 구성

로드밸런싱 기능으로 인해 서버에 구성된 경로에 접속 하고자 할때 사용되는 경로가 다를경우 해당
경로를 갖지 않을 시 오류 발생

 

-> 경로 기반 라우팅 기능을 통해 해결

 

  1. 대상 그룹 생성
  2. 로드밸런서 규칙  추가 
    1. 경로 기반추가
    2. 경로 지정
    3. 조건 순위 지정

경로 지정 전 오류 발생

 

지정된 경로로 이동

1.5 ALB User-Agent를 활용하여 로드밸런싱 구성 및 확인

  • 고급 라우팅 기능 중 HTTP 헤더 기반 라우팅 구성
  • 특정 장치의 차단이 가능 예) 스마트폰
  • 클라이언트에 맞는 최적의 데이터를 보낼 수 있음

 

 

 

 

 

실습 Yaml : https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter4/elblab.yaml