
지금까지 우리는 두 개의 다른 가용 영역에 웹 서버 인스턴스를 각각 배포하여 장애에 대비한 기반을 마련하였다. 하지만 사용자가 두 서버의 IP 주소를 모두 알고 직접 접속해야 한다면, 이는 진정한 고가용성 아키텍처라 할 수 없다. AWS Elastic Load Balancing(ELB)은 이러한 문제를 해결하는 '지능형 교통 관제사'이다. ELB는 단일 진입점(DNS 이름)을 통해 들어오는 애플리케이션 트래픽을 여러 대상(EC2 인스턴스, 컨테이너 등)에 자동으로 분산시켜 애플리케이션의 내결함성과 가용성을 극대화한다.
1. Application Load Balancer(ALB)의 이해
ELB는 여러 유형을 제공하며, 본 실습에서는 HTTP/HTTPS와 같은 L7 계층에서 동작하여 유연한 라우팅 규칙을 제공하는 Application Load Balancer(ALB)를 사용한다. ALB는 세 가지 핵심 구성 요소로 이루어진다.
- 리스너(Listener): 설정된 프로토콜(예: HTTP) 및 포트(예: 80)로 들어오는 클라이언트의 연결 요청을 수신하는 프로세스이다. 리스너는 수신한 요청을 규칙에 따라 지정된 대상 그룹으로 전달하는 역할을 한다.
- 대상 그룹(Target Group): 로드 밸런서로부터 트래픽을 수신할 대상(예: EC2 인스턴스)들의 논리적인 그룹이다. 동일한 역할을 수행하는 여러 인스턴스를 하나의 대상 그룹으로 묶어 관리한다.
- 헬스 체크(Health Check): 대상 그룹에 등록된 각 대상의 상태를 주기적으로 확인하는 기능이다. ALB는 헬스 체크를 통해 'healthy' 상태로 확인된 대상에게만 트래픽을 라우팅하여, 장애가 발생한 인스턴스를 자동으로 격리한다.
2단계: Application Load Balancer 생성 실습
이제 두 웹 서버(webserver 1
, webserver 2
)의 트래픽을 분산시킬 ALB를 생성하는 과정을 진행한다.
2.1. 로드 밸런서 기본 구성
- EC2 콘솔 좌측 메뉴 하단의 '로드 밸런싱 > 로드 밸런서'로 이동 후, '로드 밸런서 생성'을 클릭한다.
- 'Application Load Balancer' 유형에서 '생성'을 클릭한다.
- '기본 구성' 섹션에서 아래와 같이 입력한다.
- 로드 밸런서 이름: web-alb
- 체계: 인터넷 경계(Internet-facing)
- '네트워크 매핑' 섹션에서
VPC-Lab
을 선택하고, 매핑 항목에서public subnet A
와public subnet C
를 모두 체크한다. 이는 ALB가 두 가용 영역에 걸쳐 트래픽을 분산시키도록 하는 핵심 설정이다.
2.2. 보안 그룹 및 리스너 설정
- '보안 그룹' 섹션에서 '새 보안 그룹 생성' 링크를 클릭하여 새 탭에서 보안 그룹 생성 페이지를 연다.
- 새 보안 그룹을 아래와 같이 생성한다. 이 보안 그룹은 외부 인터넷에서 ALB로 들어오는 웹 트래픽을 허용하는 역할을 한다.
- 이름:
webalb-sg
- 설명:
Security group for web ALB
- 인바운드 규칙: 유형
HTTP
, 소스위치 무관(0.0.0.0/0)
- 이름:
- 다시 ALB 생성 탭으로 돌아와, 방금 생성한
webalb-sg
를 선택한다. (새로고침 버튼 클릭 필요) - '리스너 및 라우팅' 섹션에서 프로토콜이
HTTP
, 포트가80
으로 설정되어 있는지 확인한다.
2.3. 대상 그룹 생성 및 등록
- '기본 작업' 항목에서 '대상 그룹 생성' 링크를 클릭한다.
- '대상 유형'은 '인스턴스'를 선택하고, 대상 그룹 이름을
webserver-tg
로 지정한 후 '다음'을 클릭한다. - '사용 가능한 인스턴스' 목록에서
webserver 1
과webserver 2
를 모두 체크하고, '보류 중인 것으로 포함' 버튼을 눌러 등록한다. - '대상 그룹 생성'을 클릭하여 완료한 후, 다시 ALB 생성 탭으로 돌아와 방금 생성한
webserver-tg
를 선택한다. - 모든 설정을 검토한 후, '로드 밸런서 생성' 버튼을 클릭한다.
3단계: 백엔드 보안 강화 (필수)
현재 아키텍처는 사용자가 ALB를 우회하여 EC2 인스턴스의 공인 IP로 직접 접속할 수 있는 보안 취약점이 있다. 모든 웹 트래픽이 반드시 ALB를 거치도록 강제하기 위해, EC2 인스턴스의 보안 그룹(webserver-sg
) 설정을 변경해야 한다.
1. EC2 콘솔의 '보안 그룹' 메뉴에서
webserver-sg
를 선택하고 '인바운드 규칙 편집'을 클릭한다.2. 기존에 있던 HTTP(포트 80) 규칙을 삭제한다.
3. '규칙 추가'를 눌러 새로운 HTTP 규칙을 생성한다.
4. '소스' 항목에서 '사용자 지정'을 선택하고, 검색창에
webalb-sg
를 입력하여 ALB의 보안 그룹을 선택한다.5. 규칙을 저장한다. 이제
webserver-sg
는 오직 webalb-sg
(즉, 우리의 ALB)로부터 오는 HTTP 트래픽만 허용하게 되어 보안이 크게 강화된다.4단계: ALB 동작 확인
로드 밸런서 목록에서 web-alb
의 상태가 'provisioning'에서 'active'로 변경될 때까지 기다린다. 완료되면, web-alb
를 선택하고 '세부 정보' 탭의 'DNS 이름'을 복사한다. 이 주소를 웹 브라우저에 붙여넣고 접속한다.
웹 페이지가 정상적으로 표시되면, 새로고침을 여러 번 반복해 본다. 페이지에 표시되는 인스턴스 ID 또는 IP 주소가 webserver 1
과 webserver 2
의 정보로 번갈아 나타나는 것을 확인할 수 있다. 이는 ALB가 라운드 로빈(Round Robin) 방식으로 트래픽을 두 인스턴스에 고르게 분산시키고 있음을 의미한다.
결론
이번 과정을 통해 Application Load Balancer를 성공적으로 구성하고, 다중 가용 영역에 분산된 웹 서버들로 트래픽을 분산시키는 고가용성 아키텍처를 완성하였다. 특히 백엔드 보안 그룹을 수정하여 오직 ALB를 통해서만 서버에 접근하도록 제한함으로써, 인프라의 보안 수준을 한 단계 끌어올렸다.
ALB는 단순한 트래픽 분산을 넘어 헬스 체크를 통한 자동 장애 조치, SSL/TLS 종료, 경로 기반 라우팅 등 다양한 고급 기능을 제공한다. 이 아키텍처는 이제 실제 프로덕션 환경에서 안정적으로 서비스를 제공할 수 있는 견고한 토대가 된다.
'기술' 카테고리의 다른 글
시작 템플릿과 조정 정책: EC2 Auto Scaling 핵심 개념 정복하기 (0) | 2025.06.24 |
---|---|
초보자를 위한 AWS 모니터링: CloudWatch와 SNS 연동하기 (0) | 2025.06.24 |
AMI로 EC2 인스턴스 복제하기: Multi-AZ 고가용성 아키텍처 완성 (0) | 2025.06.24 |
'골든 이미지'로 EC2 서버 관리 자동화하기 (AMI 생성 가이드) (0) | 2025.06.24 |
초보자를 위한 AWS EC2 인스턴스 생성 단계별 가이드 (0) | 2025.06.24 |