Cloud & Platform
5강. ELB (Elastic Load Balancing)
5강. ELB (Elastic Load Balancing) 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. 로드 밸런싱 (Load Balancing) 이란?
로드 밸런싱(부하 분산)은 클라이언트의 요청을 여러 서버에 분산하여 처리하는 기술입니다. 이를 통해 시스템의 전반적인 성능과 안정성을 향상시킬 수 있습니다.
- 로드 밸런서(Load Balancer): 클라이언트의 요청을 받아 정해진 규칙(알고리즘)에 따라 여러 서버 중 하나로 전달하는 역할을 합니다. (강의 자료에서는 '선생님'으로 비유)
- 서버(Server): 클라이언트의 요청을 실제로 처리하는 주체입니다. (강의 자료에서는 '학생'으로 비유)
- 요청(Request): 처리해야 할 작업입니다. (강의 자료에서는 '빵'으로 비유)
로드 밸런서는 특정 알고리즘에 따라 요청을 분산시키고, 각 서버는 할당된 요청을 처리합니다.
로드 밸런싱의 목적
- 성능 향상 (Performance)
- 하나의 서버가 처리할 수 있는 요청에는 한계가 있습니다.
- 여러 서버에 요청을 분산함으로써 전체적인 처리 시간을 단축하고 시스템의 처리 용량을 높일 수 있습니다.
- 안정성 향상 (Stability)
- 일부 서버에 장애가 발생하더라도, 로드 밸런서는 정상적으로 작동하는 다른 서버로 요청을 보내 서비스가 중단되지 않도록 합니다.
- 서버 장애 예방 (Backup Plan)
- 요청량을 예측하기 어려울 때, 예비 서버를 준비해두고 트래픽이 급증할 경우 로드 밸런서가 예비 서버에도 요청을 분산시켜 장애를 예방합니다.
- 고가용성 (High Availability)
- 고가용성이란 서버가 오랜 기간 동안 정상적으로 작동할 수 있는 성질을 의미합니다.
- 로드 밸런싱을 통해 일부 서버에 문제가 생겨도 전체 서비스는 중단 없이 운영될 수 있으므로 고가용성을 확보할 수 있습니다.
- 성능 향상 기반 제공 (Performance Enhancement)
- 단일 서버 구조에서는 트래픽 증가 시 서버 자체의 사양을 높여야 하는 한계(Scale-up)가 있습니다.
- 로드 밸런싱을 사용하면 서버의 개수를 늘려(Scale-out) 시스템을 유연하게 확장할 수 있는 기반이 됩니다.
로드 밸런싱 관련 용어
- 로드 밸런싱 알고리즘: 트래픽을 각 서버에 분배하는 방법 (예: Round-robin).
- 헬스 체크 (Health Check): 로드 밸런서가 주기적으로 서버의 상태를 확인하여 정상적인 서버에만 트래픽을 보냅니다.
- 커넥션 드레이닝 (Connection Draining, 등록 취소 지연): 트래픽 감소 등으로 특정 서버를 서비스에서 제외할 때, 해당 서버에서 처리 중이던 요청이 모두 완료될 때까지 기다린 후 제외하는 기능입니다.
- 지연 시간 (Latency): 로드 밸런서와 서버 사이의 통신 지연 시간을 의미합니다.
2. AWS Elastic Load Balancing (ELB)
ELB는 AWS에서 제공하는 로드 밸런싱 서비스로, 여러 EC2 인스턴스에 트래픽을 자동으로 분산시켜 줍니다.
- ELB는 특정 **리전(Region)**에 생성되며, 해당 리전 내의 여러 **가용 영역(Availability Zone, AZ)**에 있는 EC2 인스턴스로 트래픽을 분산할 수 있습니다.
- 이를 통해 하나의 가용 영역 전체에 장애가 발생하더라도 다른 가용 영역의 인스턴스를 통해 서비스가 정상적으로 운영될 수 있어 고가용성을 보장합니다.
ELB의 유형
- ALB (Application Load Balancer)
- OSI 7계층(애플리케이션 계층)에서 작동하며, HTTP, HTTPS 프로토콜을 처리합니다.
- HTTP 헤더나 요청 URL 경로 등 정교한 조건에 따라 트래픽을 분배할 수 있습니다. (L7 스위치)
- NLB (Network Load Balancer)
- OSI 4계층(전송 계층)에서 작동하며, TCP, UDP 프로토콜을 처리합니다.
- IP 주소와 포트를 기준으로 트래픽을 분배하며, 매우 빠른 처리 속도가 장점입니다. (L4 스위치)
- CLB (Classic Load Balancer)
- 이전 세대의 로드 밸런서로, HTTP, HTTPS, TCP, UDP를 모두 지원합니다. (L4, L7 스위치)
- 현재는 특별한 경우가 아니면 ALB 또는 NLB 사용이 권장됩니다.
3. 실습: ELB와 EC2를 이용한 워드프레스 이중화 구성
1단계: EC2 워드프레스 인스턴스 생성
- AWS 콘솔에서 EC2 서비스로 이동 후, 인스턴스 시작을 클릭합니다.
- 이름 설정:
WordpressInstance와 같이 인스턴스 이름을 지정합니다. - AMI 선택:
- 애플리케이션 및 OS 이미지 검색창에
wordpress bitnami를 입력합니다. - AWS Marketplace AMI 탭에서
WordPress Certified by Bitnami and Automattic을 선택하고 구독을 진행합니다.
- 애플리케이션 및 OS 이미지 검색창에
- 인스턴스 유형: 프리티어 사용을 위해
t2.micro를 선택합니다. - 키 페어: 기존에 사용하던 키 페어를 선택하거나 새로 생성합니다.
- 네트워크 설정:
- 보안 그룹 생성을 선택합니다.
- 인터넷 트래픽을 허용하기 위해 SSH, HTTPS, HTTP 트래픽 허용 체크박스를 모두 선택합니다.
- 인스턴스 시작 버튼을 클릭하여 생성을 완료합니다.
- 인스턴스 상태가
실행 중으로 변경되고 상태 검사가 완료되면, 할당된 퍼블릭 IPv4 주소로 접속하여 워드프레스 사이트가 정상적으로 뜨는지 확인합니다.
2단계: ELB (Application Load Balancer) 생성
- EC2 메뉴에서 로드 밸런서로 이동 후, 로드 밸런서 생성을 클릭합니다.
- Application Load Balancer 유형을 선택하고 생성을 클릭합니다.
- 기본 구성:
- 로드 밸런서 이름:
MyFirstELB와 같이 이름을 지정합니다. - 체계:
인터넷 경계(Internet-facing)를 선택합니다.
- 로드 밸런서 이름:
- 네트워크 매핑:
- VPC는 기본 VPC를 선택합니다.
- 매핑에서 2개 이상의 가용 영역(AZ)을 선택합니다. 이때, 앞에서 생성한
WordpressInstance가 위치한 가용 영역을 반드시 포함해야 합니다.
- 보안 그룹: 앞에서 생성된 워드프레스용 보안 그룹을 선택합니다.
- 리스너 및 라우팅:
- 기본 리스너는
HTTP, 포트80으로 설정됩니다. - 기본 작업에서 대상 그룹 생성 링크를 클릭합니다.
- 기본 리스너는
대상 그룹(Target Group) 생성
- 대상 유형 선택:
인스턴스를 선택합니다. - 대상 그룹 이름:
MyTargetGroup과 같이 이름을 지정합니다. - 프로토콜 및 포트:
HTTP,80으로 설정합니다. - 상태 검사(Health checks): 기본 경로를
/로 설정하고다음을 클릭합니다. - 대상 등록:
- 사용 가능한 인스턴스 목록에서
WordpressInstance를 선택합니다. - 아래에 보류 중인 것으로 포함 버튼을 클릭합니다.
- 대상 그룹 생성을 클릭하여 완료합니다.
- 사용 가능한 인스턴스 목록에서
- 다시 로드 밸런서 생성 화면으로 돌아와, 리스너의 대상 그룹으로 방금 생성한
MyTargetGroup을 선택합니다. - 로드 밸런서 생성 버튼을 클릭하여 생성을 완료합니다.
- 로드 밸런서의 상태가
active가 될 때까지 기다린 후, DNS 이름으로 접속하여 워드프레스 사이트가 표시되는지 확인합니다.
3단계: 다른 가용 영역에 두 번째 EC2 인스턴스 생성
- 1단계와 동일한 방법으로 새 EC2 인스턴스를 생성합니다.
- 이름은
WordpressInstance2로 지정합니다. - 네트워크 설정 단계에서 서브넷을 첫 번째 인스턴스와 다른 가용 영역의 서브넷으로 지정합니다.
- 나머지 설정(AMI, 인스턴스 유형, 키 페어 등)은 동일하게 진행하고 인스턴스를 시작합니다.
4단계: ELB에 두 번째 EC2 인스턴스 등록
- EC2 메뉴에서 대상 그룹으로 이동하여
MyTargetGroup을 선택합니다. - 대상(Targets) 탭에서 대상 등록을 클릭합니다.
- 새로 생성한
WordpressInstance2를 선택하고, 아래에 보류 중인 것으로 포함을 클릭합니다. - 보류 중인 대상 등록을 클릭하여 추가를 완료합니다.
- 잠시 후, 대상 목록에 있는 두 인스턴스의 상태가 모두
healthy로 표시되는지 확인합니다.
5단계: 로드 밸런싱 작동 확인
- 첫 번째 인스턴스(
WordpressInstance)의 퍼블릭 IP 주소 뒤에/admin을 붙여 워드프레스 관리자 페이지로 접속합니다. - 로그인 후, 사이트 제목을 "Instance 1"과 같이 식별 가능하게 변경합니다.
- ELB의 DNS 주소로 접속합니다.
- 웹 브라우저를 여러 번 새로고침하면 사이트 제목이 "Instance 1"과 기본 제목(두 번째 인스턴스)으로 번갈아 나타나는 것을 볼 수 있습니다. 이는 ELB가 두 개의 EC2 인스턴스로 트래픽을 번갈아 분산시키고 있음을 의미합니다.
최종 요약
- 로드 밸런싱은 성능, 안정성, 고가용성을 높이기 위해 요청을 여러 서버에 분산하는 기술입니다.
- AWS의 ELB는 EC2 인스턴스에 대한 부하 분산을 자동화하며, ALB와 NLB가 주로 사용됩니다.
- 여러 가용 영역에 걸쳐 EC2 인스턴스를 배치하고 ELB로 연결하면, 한쪽 가용 영역에 장애가 발생해도 서비스 중단 없이 운영할 수 있는 견고한 아키텍처를 구축할 수 있습니다.