Hello World 웹서버 2개의 EC2 인스턴스를 로드밸런싱하는 Application Load Balancer(ALB) 구축 방법
이번 실습 시나리오에서는 두 개의 EC2 인스턴스에 각각 "Hello World" 메시지를 반환하는 간단한 웹 서버를 실행하고, 이를 Application Load Balancer(ALB)를 사용해 로드밸런싱하는 방법을 설명하겠습니다. 모든 단계를 AWS 관리 콘솔을 통해 수행합니다.
시나리오 목표
- 두 개의 EC2 인스턴스 생성 및 설정.
- EC2 인스턴스에 간단한 웹 서버 설치 및 "Hello World" 반환.
- Application Load Balancer(ALB) 생성 및 EC2 인스턴스와 연결.
- ALB를 통해 트래픽을 균등하게 분산하여 "Hello World" 페이지 제공.
1. 두 개의 EC2 인스턴스 생성
- AWS 콘솔에 로그인하고, EC2 대시보드로 이동합니다.
- 인스턴스 시작을 클릭하여 EC2 인스턴스를 생성합니다.
- AMI 선택: Amazon Linux 2 AMI(Free Tier)를 선택합니다.
- 인스턴스 유형 선택: t2.micro를 선택하고, 다음을 클릭합니다.
- 네트워크 구성:
- 기본 VPC를 선택하고, 서브넷은 퍼블릭 서브넷으로 설정합니다.
- Auto-assign Public IP를 Enable로 설정합니다.
- 스토리지 구성: 기본값을 그대로 사용합니다.
- 태그 추가: EC2 인스턴스를 구분하기 위해 태그를 추가합니다.
Key: Name, Value: WebServer1
- 보안 그룹 설정:
- 새 보안 그룹을 생성합니다.
- 인바운드 규칙에 HTTP(80)와 SSH(22)를 추가합니다.
- HTTP는 모든 소스(0.0.0.0/0)에서 트래픽을 허용하도록 설정합니다.
- 키 페어: 기존 키 페어를 선택하거나, 새 키 페어를 생성하여 EC2에 접근할 수 있도록 합니다.
- 인스턴스 시작을 클릭합니다.
이제 두 번째 인스턴스도 동일한 과정을 통해 생성합니다. 태그 이름만 WebServer2
로 설정하면 됩니다.
2. EC2 인스턴스에 간단한 웹 서버 설치
각 인스턴스에 접속하여 웹 서버를 설정합니다:
-
SSH로 EC2 인스턴스 접속:
-
Apache 웹 서버 설치:
-
Hello World 페이지 작성:
-
두 번째 EC2 인스턴스(WebServer2)에 대해서도 같은 절차를 진행합니다. index.html
파일은 아래와 같이 수정합니다:
echo "Hello World from WebServer2" | sudo tee /var/www/html/index.html
-
HTTP 포트 확인:
- 브라우저에서 각 EC2 인스턴스의 공용 IP로 접속하여
Hello World
메시지가 잘 출력되는지 확인합니다.
http://<Public-IP-of-WebServer1>
http://<Public-IP-of-WebServer2>
3. Application Load Balancer(ALB) 생성
ALB 설정 과정:
- EC2 대시보드에서 로드밸런서를 클릭한 후, 로드 밸런서 생성을 선택합니다.
- 로드 밸런서 유형 선택:
- Application Load Balancer(ALB)를 선택합니다.
- 기본 설정:
- 로드 밸런서 이름:
MyALB
- 스킴:
Internet-facing
(퍼블릭 접근 가능하게 설정)
- 리전: EC2 인스턴스가 있는 리전을 선택합니다.
- 네트워크 매핑:
- VPC: 두 EC2 인스턴스가 위치한 VPC를 선택합니다.
- 가용 영역(AZ): 각 AZ에 있는 퍼블릭 서브넷을 선택하고, 서브넷을 추가합니다.
- 보안 그룹 설정:
- 새 보안 그룹을 생성하거나 기존 보안 그룹을 사용합니다.
- 인바운드 규칙에 HTTP(80)를 추가하여 트래픽을 허용합니다.
- 리스너 및 라우팅:
- HTTP 리스너(포트 80)가 기본적으로 추가됩니다.
- 대상 그룹(Target Group)을 새로 생성합니다:
- 대상 유형: 인스턴스
- 대상 그룹 이름:
MyTargetGroup
- 프로토콜: HTTP
- 포트: 80
- 헬스 체크 경로:
/
(기본 설정 유지)
- 대상 등록:
- EC2 인스턴스 선택 화면에서 WebServer1과 WebServer2 인스턴스를 선택한 후 등록을 클릭합니다.
- 로드 밸런서 생성: 설정이 완료되면 로드 밸런서 생성을 클릭합니다.
4. ALB를 통해 트래픽 로드밸런싱 테스트
- ALB DNS 이름 확인:
- 로드 밸런서 목록에서 새로 생성한 ALB의 DNS 이름을 확인합니다.
- 예시:
MyALB-1234567890.us-east-1.elb.amazonaws.com
- 브라우저에서 ALB 접속 테스트:
- 브라우저에서 ALB DNS 이름으로 접속하여 웹 페이지를 확인합니다.
http://MyALB-1234567890.us-east-1.elb.amazonaws.com
- 두 개의 EC2 인스턴스에 연결된 웹 서버 중 하나가 Hello World 메시지를 반환합니다. 새로고침을 여러 번 해보면, ALB가 트래픽을 두 서버에 번갈아가며 분산하는 것을 확인할 수 있습니다.
정리
이 실습을 통해 다음을 배웠습니다:
1. EC2 인스턴스 생성 및 웹 서버 설치.
2. Application Load Balancer(ALB) 생성 및 EC2 인스턴스를 대상 그룹으로 추가.
3. ALB를 통해 두 서버에 트래픽을 분산시키고, 웹서버가 번갈아가며 "Hello World" 메시지를 반환하는 것을 확인.
이 구성은 로드밸런싱을 이용한 확장성과 고가용성을 위한 기본적인 웹 애플리케이션 배포 방식을 구현한 것입니다.