ASG (Auto Scaling Group) 개요
AWS 에서는 EC2 인스턴스를 자동으로 생성 및 종료하여 스케일링을 관리하는데, 이 작업을 자동화하고 관리하기 위한 도구가 ASG, 즉 오토 스케일링 그룹입니다.
ASG의 주요 목표는 로드의 증가 또는 감소에 따라 EC2 인스턴스 수를 자동으로 조절하는 것입니다. 이를 통해 애플리케이션의 성능을 최적화하고, 비용을 절감할 수 있습니다.
핵심 기능
자동 스케일링: ASG는 EC2 인스턴스의 최소 및 최대 개수를 정의하며, 시간이 지남에 따라 이 크기를 조절합니다.
스케일 아웃 : 증가한 로드에 따라 인스턴스 추가
스케일 인 : 감소한 로드에 따라 인스턴스 제거
로드 밸런서 연동: ASG에 속한 모든 EC2 인스턴스는 로드 밸런서와 연결되어 인스턴스가 추가/삭제 됨에 따라 자동으로 트래픽 분산하여 사용자에게 서비스를 제공합니다.
자동 복구: 인스턴스가 비정상 상태인 경우 ASG는 해당 인스턴스를 종료하고, 새로운 EC2 인스턴스를 생성하여 복구합니다.
비용 효율적: ASG 자체는 무료이며, EC2 인스턴스 또는 관련 리소스를 사용하는 만큼에 대한 비용만 부담하게 됩니다.
ASG 설정 요소
ASG를 설정하기 위해 다음 요소를 고려해야 합니다.
최소 용량: ASG 내에서 유지해야 하는 EC2 인스턴스의 최소 개수를 설정합니다. 이 값은 항상 유지됩니다.
희망 용량: ASG 내에서 원하는 EC2 인스턴스의 개수를 설정합니다. 이 수치가 최소 용량 미만으로 내려가거나 최대 용량 이상으로 올라갈 수 있습니다.
최대 용량: ASG 내에서 허용되는 EC2 인스턴스의 최대 개수를 설정합니다. 이 수치를 초과하지 못합니다.
시작 템플릿 (Launch Template)
인스턴스 속성을 기반으로 ASG를 생성하려면 시작템플릿을 생성해야합니다.
EC2인스턴스를 시작하는 방법에 대한 정보가 포함되어 있습니다.
• AMI + 인스턴스 유형
• EC2 사용자 데이터
• EBS 볼륨
• 보안 그룹
• SSH 키 쌍
• EC2 인스턴스에 대한 IAM 역할
• 네트워크 + 서브넷 정보
• 로드밸런서 정보
스케일링 정책: ASG는 스케일링 정책을 정의하여 언제 EC2 인스턴스를 늘리거나 줄일지 결정합니다.
CloudWatch 경보와 ASG
ASG는 CloudWatch 경보와 통합되어 작동합니다. CloudWatch 경보는 모니터링 가능한 지표 (metric)를 기반으로 특정 상황이나 조건을 확인할 때 사용됩니다. CloudWatch 경보를 기반으로 ASG를 스케일 인 및 스케일 아웃할 수 있습니다
예를 들어, ASG의 평균 CPU 사용률이 높아지면 CloudWatch 경보가 활성화되고, ASG는 스케일 아웃을 통해 더 많은 EC2 인스턴스를 추가할 수 있습니다.
오토 스케일링 그룹의 조정 정책
동적 조정 정책 (Dynamic Scaling Policies)
동적 스케일링 정책은 세 가지 유형이 있습니다
1. 대상 추적 스케일링 (Target Tracking Scaling)
가장 간단하고 설정하기 쉬운 스케일링 정책 중 하나입니다. 이 정책은 특정 지표를 기반으로 작동합니다.
예를 들면 모든 EC2 인스턴스에서 오토 스케일링 그룹의 평균 CPU 사용률을 추적하여 이 수치가 40%대에 머무를 수 있도록 할 때에 사용합니다. 이처럼 기본 기준선을 설정하고 언제나 사용 가능한 상태를 유지할 수 있습니다.
2. 단순/ 단계 스케일링 (Simple/ Step Scaling)
이 유형의 스케일링 정책은 더 복잡하며 CloudWatch 경보와 연계하여 작동합니다.
예를 들어, 전체 ASG의 CPU 사용률이 특정 임계값 (예: 70%)을 초과할 때, ASG는 일정한 수의 인스턴스를 추가할 수 있습니다. 또한 CPU 사용률이 특정 임계값 아래로 떨어지면, ASG는 일정 수의 인스턴스를 제거할 수 있습니다.
CloudWatch 경보를 설정할 때에는 한 번에 추가할 유닛의 수와 한 번에 제거할 유닛의 수를 단계별로 설정할 필요가 있습니다
3. 예약된 작업 (Scheduled Actions)
예약된 작업을 통해 특정 시간대 또는 주기에 ASG의 크기를 조절할 수 있습니다 이것은 스케일링이 필요함을 미리 알 때에 예정된 작업을 설정하면 됩니다
예를 들어, 금요일 오후 5시에 특별한 이벤트가 예정되어 있을 때, ASG의 최소 크기를 매주 금요일 오후 5시에 자동으로 10까지 늘릴 수 있습니다
예측 스케일링 (Predictive Scaling)
예측 스케일링을 통해서 AWS 내 오토 스케일링 서비스를 활용하여 미래 트래픽을 예측하고 사전에 스케일링 작업을 예약하는 방법입니다.
로드를 보고서 다음 스케일링을 예측하는 거죠
스케일링에 활용할 수 있는 지표
스케일링 정책을 구성할 때 어떤 지표를 사용할지 결정해야 합니다. 애플리케이션의 특성과 작동 방식에 따라 다양한 지표를 고려할 수 있으며, 몇 가지 대표적인 지표는 다음과 같습니다
CPU 사용률: 대부분의 경우, 인스턴스의 평균 CPU 사용률을 모니터링하는 것이 유용합니다. CPU 사용률이 높아지면 인스턴스를 확장할 필요가 있을 것입니다.
대상별 요청 수: EC2 인스턴스는 일정 수의 대상별 요청을 처리할 수 있습니다. 요청 수가 늘어날 때 인스턴스를 확장하는 것은 유용한 전략입니다.
네트워크 입출력량: 애플리케이션의 특성에 따라 네트워크 병목 현상이 발생할 수 있습니다. 네트워크 입출력량을 모니터링하고 해당 지표를 기반으로 스케일링 작업을 수행할 수 있습니다.
사용자 지정 지표: 필요한 경우 CloudWatch에서 사용자 지정 지표를 생성하여 스케일링 정책을 조절할 수 있습니다
스케일링 휴지 (Scaling Cooldown)
스케일링 작업이 완료된 후, ASG는 일반적으로 5분(300초)의 스케일링 휴지 기간을 설정합니다 휴지 기간에는 ASG가 추가 인스턴스를 실행 또는 종료할 수 없기 때문에 휴지 기간을 고려하여 작업을 스케줄링하는 것이 중요합니다.
스케일링 최적화를 위한 추가 고려사항
AMI의 즉시 사용 가능성: 즉시 사용 가능한 AMI를 사용하면 EC2 인스턴스 설정 시간을 단축할 수 있습니다.
세부 모니터링 활성화: ASG가 지표에 더 빠르게 접근할 수 있도록 세부 모니터링을 활성화하여 지표
'AWS Cloud > solution architect' 카테고리의 다른 글
로드 밸런서의 보안 기능 : SSL/SNI 및 연결 드레이닝 (2) | 2023.11.03 |
---|---|
AWS의 로드 밸런싱 전략 (스티키 세션/교차 영역 로드 밸런싱) (1) | 2023.11.01 |
로드벨런서 ALB/NLB/GWLM 개념 (4) | 2023.11.01 |
확장성 및 고가용성 / ELB (Elastic Load Balancing) 개요 (1) | 2023.10.31 |