[AWS] ELB (Elastic Load Balancing) #4

­박찬영·2025년 2월 13일

AWS

목록 보기
4/15
post-thumbnail

📌 Load Balancing


Load Balancing이란?

  • Load Balancing (부하 분산) : 부하(서버에 들어오는 클라이언트의 요청, 트래픽)를 여러 대의 서버로 잘 분산시켜 요청을 시간(timeout) 내에 처리할 수 있게 하는 것

    • Load Balancer : 각 서버로 부하를 분산시켜주는 역할 → ELB

    • ELB는 서버로 오는 요청을 자신이 정한 알고리즘에 따라 골고루 각 서버로 분산

  • Load Balancing의 목적

    • 성능 향상 : 요청을 여러 대의 서버가 나눠서 처리하므로 빠른 응답 가능

    • 안정성 향상 : 여러 개의 EC2 인스턴스에 장애가 생겨도 남은 EC2 인스턴스들이 클라이언트의 요청 처리 가능

    • 서버 장애 예방 : 클라이언트의 요청이 대량으로 몰려오거나 여러 개의 EC2 인스턴스가 중간에 장애가 생겨도 미리 계획해둔 백업 계획에 따라 EC2 인스턴스를 더 추가 가능

    • 고가용성(High Availability, HA) : 장애가 나지 않고 지속적으로 서버가 정상적으로 잘 작동할 수 있음

    • 성능 향상 기반 제공 : 클라이언트의 요청이 갑자기 많아져도 EC2 인스턴스를 더 추가하고 Load Balancer를 통해 부하를 분산시킴으로써 성능 향상 가능

  • Load Balancing 관련 용어

    • Load Balancing 알고리즘 : 트래픽을 각 서버에 분배하는 방법

    • Health Check : 서버가 살아있는지 확인하는 것 (서버에 장애가 생기거나 중단되면 더 이상 트래픽을 분배하지 않음)

      • 포트 감시 방법(해당 포트의 Listen 상태 감시), 서비스 감시 방법(HTTP/HTTPS에서 실제 HTML 파일 접근 가능 여부를 확인)
    • Connection Draining (등록 취소 지연) : 사용자의 요청을 처리 중인 서버를 곧바로 삭제하지 못하도록 방지하는 기능 (요청이 끝날 때까지 기다린 이후 인스턴스 중지)

    • Latency : Load Balancer와 서버 사이의 지연 시간

    • 고정 세션 : 사용자 세션을 특정 인스턴스에 고정하여 이전에 접속했던 인스턴스로 다시 접속할 수 있도록 해줌



📌 ELB

ELB란?

  • ELB(Elastic Load Balancing) : Load Balancing을 위해 제공하는 서비스

    • 부하를 여러 개의 EC2에 골고루 분산시켜 주는 역할

    • ELB는 리전에 존재, 리전별로 생성되어 여러 개의 가용 영역에 존재하는 EC2 인스턴스들에 부하를 분산시켜줌 (가용 영역 ⊂ 리전)

    • 모든 EC2 인스턴스가 아닌 대상 그룹(Target group)에 속한 EC2 인스턴스에게만 부하를 분산시킴

    • 가용 영역 하나가 통째로 중단되어도 정상적으로 운영 가능

    • Load Balancing 알고리즘으로 Round Robin Scheduling 사용 (Time Quantum 시간 단위로 나눠서 각 프로세스에 작업 할당)

  • ELB 구성

    • Virtual Private Network(VPC)에 탑재 (EC2 등 VPC 내의 리소스에 부하를 분산시킴)

    • 리스너(Listener) : 프로토콜과 포트를 기반으로 외부의 요청을 받아 검사하고 적절한 타겟으로 전달 (로드 밸런서는 최소 1개에서 최대 10개의 리스너가 설정됨)

    • 대상 그룹(Target group) : 부하를 분산시킬 대상 인스턴스들이 속한 그룹 (EC2의 각종 정보, 헬스 체크, 모니터링 기능)

    • 리스너 규칙(Rule) : 리스너와 대상 그룹 사이의 트래픽 분배를 위한 라우팅 규칙(우선순위, 액션, 조건 등), 조건이 만족되면 지정된 액션을 수행

    • 유휴 제한 시간(Connection Time Out) : 일정 시간 동안 통신이 없을 때 커넥션을 삭제할 것인지


ELB Load Balancer 유형

  • ALB(Application Load Balancer) : 요청 수준에서 작동하는 Load Balancer, HTTP/HTTPS 트래픽 사용 애플리케이션을 위한 유연한 기능 제공 (웹 화면 요청 등)

    • HTTP/HTTPS 헤더 기준 트래픽 분배 (L7 switch), IP 주소 + 포트 번호 + 패킷

    • path(경로)와 port(포트)에 따라 다른 대상 그룹으로 매핑 가능

    • 지속적으로 IP 주소가 바뀌고 고정이 불가능하기에 도메인 기반으로 사용해야 함 (ELB의 DNS Name)

    • SSL 적용 가능, 리스너 규칙(Rule) 설정 가능

    • 교차 영역 로드 밸런싱(Cross Zone Load Balancing) : 가용 영역을 가리지 않고 고르게 부하를 분산 (ALB에서는 기본 활성화)

  • NLB(Network Load Balancer) : 연결 수준에서 작동하는 Load Balancer, 초고성능 · 고정 IP 주소가 필요한 경우 (일반적으로 내브 트래픽 전송과 처리)

    • IP 주소 + 포트 번호 기준 트래픽 분배 (L4 switch, TCP/UDP)

    • 할당한 Elastic IP를 Static IP로 사용이 가능, DNS Name과 IP주소 모두 사용 가능

    • SSL 적용이 인프라 단에서 불가능 (애플리케이션에서 따로 적용)

  • CLB(Classic Load Balancer) : 과거 사용하던 Load Balancer

    • HTTP 헤더 및 IP 주소와 포트 번호 기준 트래픽 분배
    • 하나의 주소에 하나의 대상 그룹으로만 보낼 수 있음
  • GWLB(Gateway Load Balancer) : 네트워크 수준에서 작동하는 Load Balancer, 트래픽을 체크하는 역할

    • 방화벽, 침입 탐지 및 방지 시스템, 심층 패킷 검사 시스템 등


📌 ELB 사용해보기


EC2 WordPress 인스턴스 생성하기

  • EC2 WordPress 인스턴스 : WordPress가 이미 설치되어 곧바로 블로그 사용 가능한 형태

  • EC2 인스턴스 시작 → AMI WordPress Certified by Bitnami and Automattic, 인스턴스 유형 프리 티어 → 인스턴스 생성 후 퍼블릭 IPv4 주소로 접속



ELB Load Balancer 생성하기

  • WordPress 인스턴스가 있는 가용 영역을 반드시 포함하기

  • 보안 그룹은 로드 밸랜서로 들어오고 나가는 트래픽에 대한 가상의 방화벽 (외부에서 ELB를 통해 WordPress 인스턴스로 접속할 수 있도록 설정)



다른 가용 영역에 EC2 WordPress 인스턴스 생성하기

  • 이전과 동일하게 진행하되 서브넷 다르게 선택



ELB 대상 그룹에 새로운 EC2 인스턴스 등록하기



Load Balancing 작동 확인

  • <첫 번째로 생성한 EC2 인스턴스의 퍼블릭 IPv4 주소>/admin 접속

  • 아이디 user, 비밀번호 시스템 로그에서 확인

  • ELB 로드 밸런서의 DNS 이름으로 접속 → 새로고침할 때마다 다른 인스턴스로 부하 분산


📢 세 줄로 정리해보기!

1️⃣ Load Balancing이란 부하(트래픽)을 여러 대의 서버로 분산시켜 처리하는 것으로, 성능과 안정성 향상, 서버의 장애 예방에 기여한다.

2️⃣ ELB(Elastic Load Balancing)은 Load Balancing을 위해 리전에 존재하는 서비스로, 부하를 대상 그룹(Target Group)에 속한 EC2 인스턴스에게 분산시킨다.

3️⃣ ELB Load Balancer에는 ALB, NLB, CLB 등이 있다. 리스너(Listener)는 프로토콜과 포트를 기반으로 외부의 요청을 적절한 타겟으로 전달하는데, ALB(Application Load Balancer)에서는 HTTP/HTTPS 헤더, NLB(Network Load Balancer)에서는 IP 주소와 포트 번호가 기준이 된다.


참고 자료
소플의 처음 만난 AWS
ELB(Elastic Load Balancer) 구성 & 사용법 가이드

profile
Develop하는 개발자

0개의 댓글