티스토리 뷰
Elastic Load Balancer의 종류인 Application Load Balancer를 생성해 트래픽을 분산해보자. 첫번째로는, 대상 그룹을 생성 후 인스턴스 2개를 대상으로 지정해 트래픽을 분산해보려 한다. 두번째로는, Auto Scaling Group을 대상 그룹에 연결해 Auto Scaling에 의해 생성된 모든 인스턴스들에 트래픽을 분산해보려 한다. 최종 아키텍처는 아래와 같다.
Load Balancer Hands-On
- 시작 템플릿 버전 수정
- Auto Scaling Group 시작 템플릿 변경
- Target Group 생성
- Application Load Balancer 생성
- Auto Scaling Group을 대상 그룹으로 설정
- Load Balancer 트래픽 분산 테스트
1. 시작 템플릿 생성
시작 템플릿은 Auto Scaling에 의해 생성될 인스턴스의 환경을 구성하는 템플릿이다. 시작 템플릿은 수정할 수 없다. 해당 템플릿에 대해 새로운 버전으로 생성해야 한다.
고급 세부 정보의 사용자 데이터 값에 아래 코드를 붙여넣자. 아래 코드는 EC2 인스턴스에 apache2 서버를 설치하고, index.html을 수정해 요청이 전달된 인스턴스의 ID를 화면에 보여주는 코드이다.
#!/bin/bash
# 자신의 인스턴스 ID 문자값을 변수에 저장
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
# 아파치 서버 설치
sudo apt-get install apache2 -y
# 쓰기 권한 부여
sudo chmod -R 777 /var/www/html
# 기존 index.html 삭제
rm -rf /var/www/html/index.html
# INSTANCE_ID 변수값을 html에 이어쓰기
echo ""$INSTANCE_ID"" >> /var/www/html/index.html
# 아파치 시작
sudo service apache2 start
2. Auto Scaling Group 생성
1. Auto Scaling Group 생성
VPC와 가용영역을 선택한다. 아래의 경우 가용 영역 2a, 2b, 2c에 Auto Scaling에 의해 생성된 인스턴스들이 배치된다.
로드 밸런서는 추후 생성 후 Auto Scaling 그룹과 연결시켜줄 예정이다. 일단은 없음으로 체크
2. Auto Scaling을 통해 생성된 인스턴스 확인
위에서 설정한 인스턴스 개수에 따라 2개의 인스턴스가 생성된 것을 확인할 수 있다.
3. 인스턴스 IP로 접속해 아래와 같이 해당 인스턴스 ID가 뜨는지 확인
3. Target Group 생성
1. 대상 그룹 생성
Instance 선택, 대상 그룹 이름 설정
health check 경로 설정
현재 존재하는 인스턴스 2개 선택 후 보류 그룹으로 포함 버튼 클릭 (이전에 Auto Scaling에 의해 생성된 인스턴스)
외부의 트래픽을 80포트로 연결 (아래에서 트래픽을 전달할 포트를 80으로 설정했으므로)
4. Application Load Balancer 생성
1. 로드밸런서 생성
Application Load Balancer 선택
로드 밸런서 가용영역 선택 (2a, 2b, 2c)
보안 그룹 default 선택
80 포트로 들어오는 HTTP 요청은 위에서 생성한 대상그룹으로 전달하도록 리스너 설정
2. 생성한 Application Load Balancer의 DNS로 접속
아래와 같이 대상 그룹으로 설정한 인스턴스 2개에 대해서 트래픽이 분산되는 것을 확인
아래 화면은 요청이 전달된 인스턴스의 ID 이다.
5. Auto Scaling Group을 대상 그룹으로 설정
1. Auto Scaling Group에서 로드밸런싱 편집 클릭
위에서 생성한 대상 그룹 선택 후 업데이트 버튼 클릭
결과적으로, 해당 Auto Scaling Group에서 Auto Scaling에 의해 생성되는 모든 인스턴스들은 대상 그룹(asc-target-group)에 들어가게 된다. ALB(Application Load Balancer) 생성시 80포트로 들어오는 요청은 asc-target-group 대상 그룹으로 전달하도록 리스너를 설정했다. 해당 대상 그룹은 auto scaling group과 연결되어 있다. 따라서, 80 포트로 들어오는 요청은 ALB를 거쳐 Auto Scaling Group 내 인스턴스들에 트래픽이 분산된다.
6. Load Balancer 트래픽 분산 테스트
1. Auto Scaling Group의 원하는 용량, 최소 용량을 3으로 늘려보자
Auto Scaling Group에 아래와 같이 인스턴스가 1개 더 생성된다.
대상 그룹에도 새로 생성된 인스턴스가 추가된다.
2. Application Load Balancer의 DNS에 접속해 3개의 인스턴스로 트래픽이 분산되는지 확인
위와 같이 나오면 정상적으로 트래픽이 3개의 인스턴스에 분산되고 있는 것이다. 이로써, ELB의 대상 그룹으로 Auto Scaling Group을 지정해 스케일링된 EC2 인스턴스들에 트래픽을 분산해봤다. 다음으로는 ELB와 Auto Scaling의 Health Check 기능에 대해 좀 더 자세히 알아보자.
'DevOps > AWS' 카테고리의 다른 글
[AWS] AutoScaling CodeDeploy Blue/Green CI/CD (0) | 2023.09.26 |
---|---|
[AWS] Github Action + AWS Elastic Beanstalk을 사용한 CI/CD (3) (0) | 2023.03.29 |
[AWS] Spring Boot 프로젝트 Elastic beanstalk에 수동 배포하기 (0) | 2023.03.27 |
[AWS] Github Action + AWS Elastic Beanstalk을 사용한 CI/CD (2) (0) | 2023.03.17 |
[AWS] Github Action + AWS Elastic Beanstalk을 사용한 CI/CD (1) (1) | 2023.03.15 |