AWS/EC2
[EC2] EC2 Auto Scaling Group 적용 (2) - 시스템 구축
J_Dev
2024. 11. 19. 22:13
- 이번 포스트에서는 AWS의 Auto Scaling Group(ASG)을 설정하고 동작을 확인하는 과정을 단계별로 알아보겠습니다.
- AMI 생성, Launch Template 생성, ASG 설정, 그리고 동작 확인까지 진행합니다.
1. AMI 이미지 생성
- EC2 인스턴스를 바탕으로 생성하는 이미지 파일입니다.
- 운영체제(여기선 Ubuntu), 애플리케이션, 설정파일등을포함합니다.
1) 이미지 생성 시작
- AWS 콘솔에서 EC2 인스턴스 목록으로 이동합니다.
- Auoto Scaling Group으로 지정할 인스턴스의 상세 페이지를 엽니다.
- 상단 메뉴에서 작업 > 이미지 및 템플릿 > 이미지 생성을 선택합니다.
2) 이미지 설정 입력
팝업 창에서 다음 정보를 입력합니다:
- 이미지 이름: 이미지의 용도를 알 수 있도록 직관적인 이름을 입력합니다. 예: web-server-backup
- 이미지 설명(선택): 이미지에 대한 설명을 작성합니다.
- 인스턴스 재부팅 여부:
- AMI 생성 과정에서 데이터를 손상 없이 저장하려면 재부팅을 선택하는 것이 좋습니다.
- 운영 중지 없이 생성하려면 재부팅을 선택하지 않아도 되지만, 데이터 손상 가능성이 있을 수 있습니다.
- 볼륨 크기 조정: 기본값은 인스턴스에서 사용 중인 디스크 크기입니다. 필요에 따라 크기를 늘릴 수 있습니다.
3) 이미지 생성 완료 확인
- 입력을 완료한 후 이미지 생성 버튼을 클릭합니다.
- AWS 콘솔에서 EC2 > AMI 메뉴로 이동합니다.
- 생성된 AMI는 동일한 구성을 가진 새로운 인스턴스를 배포하는 데 사용됩니다.
2. 시작템플릿(Launch Template) 생성
- 시작 템플릿(Launch Template)은 EC2 인스턴스를 생성할 때 필요한 설정을 미리 정의해 두는 기능입니다.
- ASG 생성시 미리 지정해둔 시작 템플릿으로 인스턴스를 생성하므로 미리 설정해둬야 합니다.
1) 시작 템플릿 생성 시작
- EC2 콘솔에서 시작 템플릿 메뉴로 이동합니다.
- 시작 템플릿 생성 버튼을 클릭합니다.
2) 템플릿 정보 입력
- 시작 템플릿 이름 : 템플릿의 용도를 쉽게 알 수 있도록 직관적인 이름을 지정합니다.
- AMI: 이전 단계에서 생성한 AMI를 선택합니다.
- 인스턴스 유형 : 여기서는 프리 티어를 기준으로
t2.micro
를 선택했습니다. - 키페어 : 기존 키페어를 사용하거나 또는 새로생성합니다.
- 서브넷 : Auto Scaling Group에서 선택할 수 있으므로 여기서는 포함하지 않음을 선택합니다.
- 보안그룹 : 기존 인스턴스의 보안 그룹을 재사용하거나, 새로운 보안 그룹을 생성합니다.
3. 오토스케일링 생성
1) 시작 템플릿 선택
1. Auto Scaling 그룹 이름 : 사용 목적과 관련된 이름을 입력해줍니다.
2. 시작 템플릿 : 이전 단계에서 생성한 시작 템플릿을 선택합니다
2) 인스턴스 시작 옵션 선택
1. VPC : 인스턴스들이 포함될 VPC를 선택합니다. Frontend, Redis, RDS 등 이포함된 VPC여야 합니다.
2. 가용 영역 및 서브넷 : VPC의 서브넷을 선택합니다. 편의상 Public 서브넷을 선택했지만, 실제 환경에서는 클라이언트와 통신하지 않는 인스턴스는 Private Subnet을 설정합니다.
3. 가용 영역 배포 : 기본값을 사용합니다. 이는 인스턴스를 가용 영역에 균등하게 분산시킵니다.
3) 다른 서비스와 통합
- 여기서는 로드 밸런서를 연결하지 않지만, 실제 환경에서는 로드 밸런서를 설정하여 트래픽 분산과 높은 가용성을 보장할 수 있습니다.
4)그룹 크기 및 크기 조정 구성
1. 원하는 용량 : ASG 생성시 초기 인스턴스 수를 정합니다. 1개만 생성할것이므로 1개만 적어줍니다.
- 원하는 최소 용량 : Auto Scaling이 인스턴스 수를 축소 (Scale-In) 시에도 유지해야 할 최소 인스턴스 수입니다. 1개로 설정하여 최소 가용성을 보장합니다.
- 원하는 최대 용량 : Scale out 시 최대 인스턴스 수 입니다. 테스트 환경에서는 3개로 설정했습니다
- 크기조정 정책 이름 : 오토스케일링 동적 Sclae out 조건 이름입니다. Cloud Watch에 들어갑니다. 디폴드값으로 설정해주었습니다.
- 지표유형 : Auto Scaling 동작의 기준이 될 지표를 선택합니다. 여기서는 평균 CPU 사용률을 선택했습니다. Sclae-In, Sclae-out 모두 해당됩니다.
- 대상값 : 평균 CPU 사용률이 설정된 임계값(여기서는 50%) 을 초과하면 인스턴스를 추가 생성합니다.
- 인스턴스 워밍업: 새로 생성된 인스턴스가 애플리케이션을 실행하는 데 필요한 시간을 지정합니다. Docker Compose 실행 시간을 고려해 100초로 설정했습니다.
- 확대 정책만 생성하려면 축소 비활성화 : Scale Out 만 활성화하려면 선택합니다..Sclae in 테스트도 진행할 예정이므로 선택하지 않습니다.
- 인스턴스 유지 관리 정책 : 최소인스턴스가 1개이므로 종료전 시작으로 가용성 보장합니다.
- 기본 인스턴스 워밍업 활성화 : Docker-Compose 실행시간이 있으므로 100초 여유를 뒀습니다.
4. Auto Sacling Group 동작 확인
1) Auto Scaling 그룹 생성 확인
- AWS Management Console에서 EC2 메뉴로 이동합니다.
- 왼쪽 메뉴에서 Auto Scaling 그룹을 선택합니다.
- 생성된 Auto Scaling 그룹이 목록에 생성한 ASG가 표시되는 것을 확인할 수 있습니다.
2) 인스턴스 상태 확인
- Auto Scaling 그룹의 세부 정보를 열고 인스턴스 관리 탭으로 이동합니다.
- 현재 Auto Scaling 그룹에서 생성한 EC2 인스턴스 목록이 표시됩니다.
- 지정한 초기 용량(1개)이 정상적으로 생성된것을 확인할 수 있습니다.
5. 결론
- 이펀 포스트에서는 Auto Scaling Group(ASG)을 생성하는 과정을 단계별로 진행해 보았습니다.
- AMI 생성: 기존 EC2 인스턴스를 기반으로 맞춤형 이미지를 만들었습니다.
- Launch Template 생성: AMI를 활용해 EC2 설정을 미리 정의했습니다.
- ASG 생성: Auto Scaling Group을 구성하고, 초기 설정 및 크기 조정 정책을 설정했습니다.
- ASG 동작 확인: EC2 인스턴스가 ASG에 의해 자동 생성되는 과정을 확인했습니다.
- 이번 과정을 통해 AWS에서 애플리케이션의 확장성과 가용성을 유지하기 위한 핵심 단계를 이해할 수 있었습니다.
- 다음 포스트에서는 ASG의 Scale Out/Scale In 동작과 문제 있는 인스턴스의 자동 교체에 대해 다룰 예정입니다.