
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 : 서버가 살아있는지 확인하는 것 (서버에 장애가 생기거나 중단되면 더 이상 트래픽을 분배하지 않음)
Connection Draining (등록 취소 지연) : 사용자의 요청을 처리 중인 서버를 곧바로 삭제하지 못하도록 방지하는 기능 (요청이 끝날 때까지 기다린 이후 인스턴스 중지)
Latency : Load Balancer와 서버 사이의 지연 시간
고정 세션 : 사용자 세션을 특정 인스턴스에 고정하여 이전에 접속했던 인스턴스로 다시 접속할 수 있도록 해줌

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
GWLB(Gateway Load Balancer) : 네트워크 수준에서 작동하는 Load Balancer, 트래픽을 체크하는 역할

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, 비밀번호 시스템 로그에서 확인





📢 세 줄로 정리해보기!
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) 구성 & 사용법 가이드