
AWS의 ALB(Application Load Banlancer)와 ASG(Auto Scaling Group)을 활용하여 고가용성 아키텍처를 구성하는 과정을 정리했습니다. 목표 아키텍처는 위 그림과 같고 네트워크 구성은 이전 실습에서 진행했던 myvpc를 동일하게 사용했습니다.
1. 보안 그룹 생성
목표 아키텍처에서 구성을 위해 보안 그룹 2개를 생성해야 합니다. 먼저 ALB 보안 그룹을 생성하겠습니다.
1.1. SG-ALB 보안 그룹 생성

보안 그룹>보안 그룹 생성 클릭

- 보안 그룹 이름: SG-ALB
- VPC 선택: 기존에 설정한 myvpc
- 인바운드 규칙 추가:
- 유형: HTTP (80)
- 소스: 0.0.0.0/0 (모든 IP 허용)
- 아웃바운드 규칙: 기본값 유지
2.2. SG-WEB 보안 그룹 생

- 보안 그룹 이름: SG-WEB
- VPC 선택: myvpc
- 인바운드 규칙 추가:
- 유형: HTTP (80)
- 소스: SG-ALB (SG-ALB를 통과한 트래픽만 허용)
- 아웃바운드 규칙: 기본값 유지

위 그림과 같이 두 개의 보안 그룹이 생성됐습니다. SG-WEB은 SG-ALB를 통과한 트래픽만 접근이 가능합니다. 이런 방식을 보안 그룹 체이닝이라고 합니다.
2. 대상 그룹 생성
이제 대상 그룹을 생성하겠습니다.

대상 그룹>대상 그룹 생성

- 경로: EC2 > 대상 그룹
- 대상 유형: 인스턴스
- VPC 선택: myvpc
- 대상 등록 없이 대상 그룹만 생성

위 그림과 같이 대상 그룹(MY-TG)이 생성된 것을 볼 수 있습니다. 현재 등록된 대상은 없습니다.
3. ALB(Application Load Banlancer) 생성

로드밸런서>로드 밸런서 생성

로드 밸런서 유형은 애플리케이션 로드 밸런서(ALB)로 선택합니다.

로드 밸런서 이름은 MY-ALB

VPC는 myvpc를 선택합니다.
퍼블릭 서브넷은 mypubsubnet1, mypubsubnet2로 선택합니다.

보안 그룹은 앞서 만든 SG-ALB로 선택, 기본값은 삭제합니다.

리스너 및 라우팅도 앞서 생성한 대상 그룹인 MY-TG로 선택합니다.

구성한 로드 밸런서의 요약 내용을 보면 위와 같습니다.

MY-ALB가 생성된 것을 확인할 수 있습니다.
4. 시작 템플릿 생성

시작 템플릿>시작 템플릿 생성

템플릿 이름은 MY-Template

AMI는 이전 게시글에서 만든 AMI인 MyAMI01로 선택합니다.

인스턴스 유형은 t2.micro, 키페 어는 자신의 키페어를 선택합니다.

보안 그룹은 SG-WEB으로 선택합니다.

요약으로 보면 위와 같고 템플릿을 생성합니다.

위 그림과 같이 MY-Template라는 시작 템플릿이 생성된 것을 볼 수 있습니다.
5. ASG(Auto Scaling Group) 생성

오토 스케일링 그룹>오토 스케일링 그룹 생성

오토스케일링 그룹이름은 MY-ASG
시작 템플릿은 방금 만든 MY-Template으로 선택한다.

2단계 인스턴스 시작 옵션 선택으로 넘어와서 vpc는 myvpc, 가용영역 및 서브넷은 myvpc의 프라이빗 서브넷 두 개를 선택한다.

3단계 다른 서비스와 통합에서는 로드밸런싱을 기존 로드 밸런서에 연결 선택, 기존 로드밸런서 대상 그룹은 앞서 생성한 MY-TG로 선택한다.

맨 아래에 상태 확인에서 ELB 상태 확인 활성화한다.

4단계로 넘어와서는 인스턴스 수를 설정하게 된다. 원하는 용량은 2, 최소 용량과 최대 용량도 2로 설정한다. 나머진 디폴트값으로 진행한다.

5단계 알림 추가는 스킵한다.

6단계 태그 추가도 스킵하고 오토 스케일링 그룹을 생성한다.

위와 같이 오토 스케일링 그룹 MY-ASG가 생성된 것을 볼 수 있다.

인스턴스를 확인해 보면 만들지 않은 2개의 인스턴스가 존재한다. 해당 인스턴스들은 오토 스케일링 그룹에 의해 생성된 것으로 자동으로 생성되거나 종료될 수 있다.
6. 대상 그룹 상태 확인

대상 그룹 상태를 확인해 보면 healthy로 정상적인 것을 볼 수 있다.

로드밸런서 MY-ALB의 DNS 이름을 브라우저에서 입력하여 웹페이지 접속을 확인해 본다.

해당 링크로 접속하면 AMI에서 만든 웹페이지가 나타는 것을 볼 수 있다.
7. Auto Scaling 테스트
이제 EC2 인스턴스를 종료 후 ASG에 의해 자동 복구되는 것을 확인하겠습니다. 최소 인스턴스 수를 2로 설정했기 때문에 2개의 현재 인스턴스 중 임의의 인스턴스를 삭제하면 ASG에서 자동으로 새로운 인스턴스를 생성할 것입니다.

임의의 인스턴스 하나를 종료(삭제)한다.

위와 같이 선택한 인스턴스는 종료되고 새로운 인스턴스가 실행 중 상태로 생성된 것을 볼 수 있다. ASG가 정상적으로 작동하는 것을 확인할 수 있다.
8. 마무리 작업
실습이 마무리 됐으므로 비용 과금을 방지하기 위해 지금까지 진행한 실습 자원들을 삭제하겠습니다. 먼저 ASG와 ELB를 삭제합니다.
8.1. ASG 및 ELB 삭제

EC2 > Auto Scaling 그룹에서 MY-ASG 삭제

EC2 > 로드 밸런서에서 MY-ALB 삭제

EC2 > 대상 그룹에서 MY-TG 삭제
8.2. AMI 및 스냅샷 정리

EC2 > AMI에서 MyAMI01 삭제

AMI 이미지를 지워도 관련 스냅샷이 남아 있기 때문에 EC2 > 스냅샷에서 관련 스냅샷 삭제 (비용 절감)합니다.

혹시 실행 중 인스턴스가 있을 수 있으니 인스턴스를 확인해 보면 자동으로 인스턴스가 종료된 것을 볼 수 있습니다.
결론
이번 실습을 통해 Application Load Balancer(ALB)와 와 Auto Scaling Group(ASG)을 활용하여 트래픽 부하 분산 및 인스턴스 자동 확장 기능을 구현했습니다. 이를 통해 고가용성 웹 서비스 아키텍처를 구축할 수 있는 기본 개념을 익힐 수 있었습니다.
추가적으로, Auto Scaling 정책을 조정하여 특정 트래픽 증가 시 인스턴스를 추가하는 등의 설정을 적용하면 더욱 탄력적인 아키텍처를 운영할 수 있습니다.
'Security > Cloud' 카테고리의 다른 글
| [AWS] Amazon RDS를 사용하여 MySQL 데이터베이스 생성 및 연결 (0) | 2025.03.05 |
|---|---|
| [AWS] AWS VPC 엔드포인트 설정 및 프라이빗 인스턴스에서 S3 접근 (0) | 2025.03.05 |
| [AWS] AWS EC2 인스턴스 생성 및 웹 서버 연결 (보안 그룹 설정 & HTTP 접근 설정) (0) | 2025.03.04 |
| [AWS] AWS Well-Architected Framework란? (0) | 2025.03.03 |
| [AWS] AWS 네트워크 구성 (0) | 2025.02.28 |