AWS Cloud/solution architect

ASG (Auto Scaling Group) 개요

Yonggyu 2023. 11. 3. 12:21
반응형

 

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가 지표에 더 빠르게 접근할 수 있도록 세부 모니터링을 활성화하여 지표

728x90
반응형