ELB란 무엇일까?

2025. 7. 10. 20:23·김동주

ELB의 개요

ELB란

Elastic Load Balancing의 약자로,
AWS의 로드발란서 서비스
  • 네트워크 트래픽을 EC2, 컨테이너, IP 주소 등 여러 대상으로 자동 분산 가능
  • 애플리케이션의 가용성과 내구성을 높일 수 있음
  • 로드발란서에서 비정상을 탐지하면, 비정상이 탐지된 대상으로의 라우팅을 중단하고 정상으로만 라우팅함

 

Load Balancer란?

네트워크 트래픽을 분산하는 역할 담당

 

ELB의 종류

  1. Application Load Balancer
    • Layer 7
    • HTTP, HTTPS
    • HTTP Header Content로 라우팅 요청 처리
    • 웹 애플리케이션, 서비스에 적합
  2. Network Load Balancer
    • Layer 4
    • TCP, UDP, TLS
    • Protocol, Port Number를 사용해 라우팅 요청 처리
    • 수백만의 대용량 트래픽 처리에 적합
  3. Gateway Load Balancer
    • Layer 3
      • Gateway Load Balancer Endpoint
    • Layer 4
      • Gateway Load Balancer
    • GENEVE protocol을 사용해서 encapsulation 트래픽 전송
    • Transparency한 네트워크 게이트웨이를 제공
      • 보안 검사를 위한 방화벽. IPS, IDS 등의 원본 패킷의 데이터가 중요한 가상 어플라이언스에 적합
  4. Classic Load Balancer
    • Layer 4, Layer 7
    • HTTP, HTTPS, TCP, TLS
    • Protocol, Port Number를 사용해 라우팅 요청 처리
    • 이전 세대의 EC2-Classic 네트워크에서 사용

 

ELB의 구성

Gateway Load Balancer 제외!

 

클라이언트에서 리스너로, 리스너에서 Target Group으로 요청

Client → Listener → Target Group

Listener

  • 연결 요청을 확인하는 기능
  • 리스너의 규칙에 따라 대상그룹에서 대상으로 라우팅하는 방법이 결정됨
  • 연결을 위해 프로토콜 및 포트 번호로 구성

Target Group

  • 대상(Target)의 모임
  • Target
    • EC2 인스턴스
    • EC2 Auto Scaling Group
    • IP 주소
    • Lambda
    • Application Load Balancer

 

고가용성과 확장성

확장성(Scalability)

수직적 확장

  • 자원을 추가하는 방식
  • ex) EC2 인스턴스 유형 변경: t2.micro → t2.large

수평적 확장

  • 노드를 추가하는 방식
  • 사용량에 따라 즉시 리소스를 확장, 축소 가능하기에 탄력성 있음
  • ex) EC2 인스턴스 개수 늘리기

 

고가용성(High Availability) vs 내결함성(Fault Tolerance)

고가용성(High Availability)

  • 서비스 중단 최소화
  • 애플리케이션의 99.99% 실행이 목표
  • 2개 이상의 가용영역에 애플리케이션이나 리소스를 운영하는 것
  • 내결함성보다 설계가 덜 복잡하며, 비용이 상대적으로 적게 발생함

내결함성(Fault Tolerance)

  • 서비스 중단 없음
  • 애플리케이션의 지속적인 실행이 목표(zero downtime)
  • 구성요소에 오류가 발생해도 계속 작동하도록 중복 하드웨어로 구성함
    • 중복된 리소스를 구성하므로, 구성이 복잡하며 비용이 비교적 많이 발생함

 

Target Groups 개요 및 실습

대상 유형(Target Type)

  1. 인스턴스
    • 개별 EC2 인스턴스
    • EC2 Auto Scaling Groups
  2. IP 주소
  3. Lambda 함수
    • Application Load Balancer만 연결 가능함
  4. Application Load Balancer
    • Network Load Balancer만 연결 가능함

 

프로토콜

Application Load Balancer HTTP
HTTPS
Network Load Balancer TCP
TLS
UDP
TCP_UDP
Gateway Load Balancer GENEVE

 

상태 검사(Health Checks)

등록된 대상(Target)에게 상태 확인 메시지를 보내서 대상의 상태를 확인할 수 있는 기능

 

 

속성 - HTTP/HTTPS

Application Load Balancer에서 사용

  • 등록 취소 지연(Deregistration delay/Connecting Draining)
    • 등록 취소된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
    • 진행중인 요청이 있다면, 설정해 놓은 시간동안 연결이 유효상태가 되지 않으면 연결 요청 하지 않음
  • 느린 시작 기간(Slow start duration)
    • 기본적으로는 대상은 대상 그룹으로 등록되자마자 전체 요청을 받기 시작하여 초기 상태 확인을 전달함
    • 느린 시작 모드에서는 로드밸런서가 대상으로 보낼 수 있는 요청 수를 선형으로 증가 
  • 알고리즘
    • 라운드 로빈(Round-Robin): 일정 시간마다 라우팅 변경
    • 최소 미해결 요청(Least Outstanding Requests): 처리하고 있는 요청이 가장 적은 대상에게 라우팅
  • 고정(Stickness Sessions / Session Affinity)
    • 세션이 유지된 상태면, 모든 요청을 동일한 인스턴스로 유지하는 기능
    • 세션 데이터를 잃지 않으려는 상태 정보를 유지하는 서버에 적합

 

속성 - TCP/UDP/TLS

Network Load Balancer에서 사용

  • 등록 취소 지연(Deregistration delay)
    • 등록 취소된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
    • 진행중인 요청이 있다면, 설정해 놓은 시간동안 연결이 유효상태가 되지 않으면 연결 요청 하지 않음
  • 등록 취소시 연결 종료(Connection termination on deregistration)
    • 등록 취소 지연에 도달하면 NLB가 활성 연결 종료
  • 프록시 프로토콜 v2
  • 클라이언트 IP 주소 보존(Preserve client IP address)
    •  들어오는 모든 트래픽의 IP를 애플리케이션으로 전달
  • 고정(Stickness Sessions / Session Affinity)
    • 세션이 유지된 상태면, 모든 요청을 동일한 인스턴스로 유지하는 기능
    • 세션 데이터를 잃지 않으려는 상태 정보를 유지하는 서버에 적합

 

고정 세션(Stickness Sessions / Session Affinity)

대상 그룹의 동일한 대상으로 트래픽을 라우팅하는 기능
  • Application Load Balancer, Network Load Balancer 모두 사용 가능
    • ALB의 경우, 세션 유지를 위해 쿠키를 사용하므로 클라이언트에서 쿠키를 지원해야 함

 

교차 영역 로드 밸런싱(Cross-Zone Load Balancing)

교차 영역 로드 밸런싱 비활성화

  • 가용영역 내의 타겟에만 트래픽 분배

교차 영역 로드 밸런싱 활성화

  • 모든 가용영역의 등록된 모든 타겟 인스턴스에 동일하게 트래픽 분배

 

Application Load Balancer

Application Load Balancer

HTTP, HTTPS 프로토콜을 사용하는 애플리케이션 로드 밸런싱에 사용
  • 리스너 규칙을 기반으로 라우팅 설정 가능
  • HTTPS 프로토콜 사용시 SSL/TLS 인증서 배포해야 함
    • ACM(AWS Certificate Manager) or 클라이언트 인증서
  • AWS Web Application Firewall(WAF)와 통합하여 로드 밸런서 뒤의 웹 애플리케이션을 공격으로부터 보호 가능

 

Listener 규칙

host-header(호스트 헤더)

  • 각 요청의 호스트 이름을 기반으로 라우팅

path-pattern(경로)

  • 요청의 URL 경로 패턴을 기반으로 라우팅

http-header(HTTP 헤더)

  • 각 요청의 HTTP 헤더를 기반으로 라우팅

http-request-method(HTTP 요청 메서드)

  • 각 요청의 HTTP 요청 메서드를 기반으로 라우팅

query-string(쿼리 문자열)

  • 쿼리 문자열의 키/값 페어 또는 값을 기반으로 라우팅

source-ip(소스 IP)

  • 각 요청의 소스 IP 주소를 기반으로 라우팅

 

 

Network Load Balancer(NLB)

TCP, UDP, TLS 요청을 로드밸런싱 해야 하는 경우에 사용
  • 초당 수백만 개의 요청과 갑작스럽고 변동성이 높은 트래픽 패턴을 처리하도록 설계됨
  • 대기 시간이 매우 짧음
  • 고도의 성능이 요구되거나 대기 시간이 낮아야 하는 애플리케이션에 적합
    • 게임 등의 수백만의 동시 사용자 처리에 적합
  • 고정 IP 주소 할당 가능
  • TLS 프로토콜 사용시 SSL/TLS 인증서 배포해야 함
    • ACM(AWS Certificate Manager) or 클라이언트 인증서

 

Gateway Load Balancer

방화벽, 침입 탐지 및 방지 시스템, 심층 패킷 검사 시스템과 같은 가상 어플라이언스를 배포, 확장 및 관리

 

 

'김동주' 카테고리의 다른 글

지란스터디 4기 계획  (0) 2025.08.03
AWS EC2에 대해서  (0) 2025.06.25
'김동주' 카테고리의 다른 글
  • 지란스터디 4기 계획
  • AWS EC2에 대해서
이제부터100도씨
이제부터100도씨
zglzgl 님의 블로그 입니다.
  • 이제부터100도씨
    지글지글
    이제부터100도씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • 김동훈 (6)
      • 김동주 (3)
      • 김보근 (6)
      • 임동윤 (1)
      • 임이삭 (4)
      • 오성찬 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 스터디 소개글
  • 링크

  • 공지사항

    • 지글지글 3기 공지사항
    • 지글지글 4기 공지사항
  • 인기 글

  • 태그

    AWS
    rust
    Web
    개발
    cardgorilla
    EC2
    스터디 3기
    Editor
    웹크롤링
    3기
    js
    bug
    ELB
    in-dark
    Loading
    coding
    Tool
    Card
    IT
    AI
    로드밸런서
    cursor
    zgl
    error
    Gorilla
    selenium
    fix
    chat
    Younique
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이제부터100도씨
ELB란 무엇일까?
상단으로

티스토리툴바