AWS Ambassador

1. Auto Scaling 원리

Window to the world 2025. 3. 5. 15:02
반응형

 

Auto Scaling 이란?

AWS Auto Scaling은 애플리케이션 또는 서비스의 부하에 따라 자동으로 EC2 인스턴스의 개수를 조절하여 필요에 따라 자원을 확장하거나 축소하는 서비스입니다. 이를 통해 애플리케이션의 가용성과 성능을 유지하면서 비용을 절감할 수 있습니다.


AWS Auto Scaling의 주요 특징은 다음과 같습니다:

1. 정책 설정: Auto Scaling 그룹을 생성할 때, 원하는 규칙 및 정책을 설정합니다. 예를 들어, 최소 및 최대 인스턴스 개수, 조정하는데 필요한 시간 등을 정의합니다.

2. 스케일 아웃(Scaling Out): 서비스에 부하가 증가하면 Auto Scaling은 EC2 인스턴스의 개수를 자동으로 늘려서 서비스의 수용력을 늘립니다. 새로운 인스턴스가 시작되어 로드 밸런서 등에 자동으로 등록되어 트래픽을 분산합니다.

3. 스케일 인(Scaling In): 서비스에 부하가 감소하면 Auto Scaling은 EC2 인스턴스의 개수를 자동으로 줄여서 리소스를 절약합니다. 인스턴스 중 하나를 제거하더라도 애플리케이션의 가용성을 유지하기 위해 로드 밸런서에 등록된 인스턴스만 제거됩니다.

4. CloudWatch 메트릭과 경보: Auto Scaling은 CloudWatch 메트릭(예: CPU 사용률, 네트워크 트래픽 등)을 모니터링하고, 설정된 경보 기준을 통해 자동으로 인스턴스의 개수를 조절합니다.

5. 다양한 Auto Scaling 그룹 설정: 여러 개의 Auto Scaling 그룹을 만들어 서로 다른 정책을 적용할 수 있습니다. 각 그룹은 서로 다른 EC2 인스턴스 유형, AMI(Amazon Machine Image), 서브넷 등을 설정할 수 있습니다.

6. 통합 빌드 및 배포: Auto Scaling 그룹과 함께 AWS Elastic Load Balancing, AWS CloudFormation, AWS CodeDeploy 등 다른 AWS 서비스와 통합하여 애플리케이션을 빌드 및 배포하는 데 사용할 수 있습니다.

AWS Auto Scaling을 사용하면 트래픽 변동에 따라 자원을 효율적으로 관리하고, 서비스의 안정성과 확장성을 보장할 수 있습니다. 또한, 수동으로 인스턴스를 추가하거나 제거하는 번거로움을 덜고, 자동으로 리소스를 조절함으로써 비용을 최적화할 수 있습니다.

Auto Scaling 알고리즘

1) Scaling Out 구동 방식

자원 증대를 위해 상한 임계값을 동적으로 최소화하는 방법이 적용 되며, 대략적으로 가상 머신의 비율이 증가할 때마다
상한 
임계값은 선형적으로 감소합니다. 또한 자원 증대에서는 가상 머신을 생성하는 조건이 완화됩니다.

2) Scaling In 구동 방식

하위 임계값을 동적으로 최소화하는 목적은 자원이 더 이상 필요 없을 때 합리적인 수준으로 줄이는 것입니다. 선형 방법에서 해제되지 않은 가상 머신의 수가 증가하면 하위 임계값이 비례적으로 감소합니다.

3) Auto Scaling 구동 방식

Auto Scaling 알고리즘을 적용하여 시스템이 자동으로 가상 머신의 수를 조정하여 수요를 충족시키는 데 도움이 됩니다. 시스템은 작업량이 증가하면 가상 머신의 수를 늘리고, 작업량이 감소하면 가상 머신의 수를 줄입니다. 이로써 시스템은 과도한 비용을 지출하지 않고도 항상 필요한 수준의 성능을 제공할 수 있습니다.

 

Auto Scaling Use Case

Parameters:
  EnvironmentName:
    Description: An environment name that is prefixed to resource names
    Type: String
    Default: EC2

  VpcCIDR:
    Description: Please enter the IP range (CIDR notation) for this VPC
    Type: String
    Default: 10.192.0.0/16

  PublicSubnet1CIDR:
    Description: Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone
    Type: String
    Default: 10.192.20.0/24

  PublicSubnet2CIDR:
    Description: Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone
    Type: String
    Default: 10.192.21.0/24

  C9InstanceType:
    Description: Cloud9 instance type
    Type: String
    Default: t3.large
    AllowedValues:
      - t3.large
      - m5.large
    ConstraintDescription: Must be a valid Cloud9 instance type

  EETeamRoleArn:
    Description: "ARN of the Team Role"
    Default: NONE
    Type: String

 

CloudFormation 템플릿으로 EC2 인스턴스와 관련된 리소스를 구성하여 오토스케일링을 준비하고 지원합니다. 

1. EC2 Launch Template: 이 템플릿은 EC2 인스턴스를 시작할 때 필요한 정보를 정의합니다. 오토스케일링 그룹을 설정할 때, 이 Launch Template은 새로운 EC2 인스턴스를 시작하는 데 사용됩니다. Launch Template에는 AMI, 인스턴스 유형, 보안 그룹, IAM 역할 등이 포함됩니다.

2. UserData 스크립트: Launch Template의 일부로 정의된 UserData는 인스턴스 시작 시 자동으로 실행되는 스크립트입니다. 이 스크립트는 HTTP 서버 설치, 구성 및 시작을 포함하여 인스턴스에 필요한 초기 설정을 수행합니다. 이러한 자동화는 오토스케일링 인스턴스가 올바르게 구성되고 필요한 서비스를 시작하도록 합니다.

3. IAM 역할 및 인스턴스 프로파일: EC2 인스턴스가 필요한 AWS 서비스와 상호 작용할 수 있도록 필요한 권한을 제공합니다. 오토스케일링 그룹 내의 인스턴스가 AWS 리소스에 액세스하는 데 필수적입니다.

4. 보안 그룹: 오토스케일링 그룹에 속하는 EC2 인스턴스의 네트워크 액세스를 제어합니다. 보안 그룹은 들어오는 및 나가는 트래픽에 대한 규칙을 정의하여 인스턴스의 보안을 강화합니다.

 

5. 오토 스케일링 그룹 생성
   - `asg.json` 설정 파일을 사용하여 EC2 오토 스케일링 그룹을 생성합니다. 이 파일에는 런치 템플릿, VPC 서브넷, 원하는 용량 등 필요한 정보가 포함되어 있습니다. (이전 단계에서 생성된 파일)
   - `aws autoscaling create-auto-scaling-group` 명령어는 JSON 설정에 따라 그룹을 생성합니다. 이 단계는 확장 가능한 인프라를 위한 기본 틀을 설정합니다.


6. CloudWatch 메트릭 수집 활성화
   - 그룹 생성 후, 1분마다 메트릭을 수집하여 자세한 모니터링을 활성화합니다.
   - 이는 `aws autoscaling enable-metrics-collection` 명령어를 사용하여 그래뉼러티(granularity)와 오토 스케일링 그룹 이름을 지정하여 수행됩니다.
   - 이 메트릭들은 올바른 스케일링 결정을 내리고 인스턴스의 건강 및 성능을 추적하는 데 중요합니다.

 

7. 동적 스케일링 활성화
   - 스케일링 정책을 사용하여 자동으로 그룹의 용량을 조정합니다. 정책은 CPU 사용률, 네트워크 트래픽 또는 사용자 정의 메트릭과 같은 다양한 기준에 기반할 수 있습니다.

 

위 이미지에 나타난 것처럼 생성한 `asg-automatic-scaling.json` 설정 파일은 Amazon EC2 오토 스케일링 그룹을 위한 타겟 추적 스케일링 정책을 구성합니다. "ec2-asg"라는 이름의 오토 스케일링 그룹에 적용될 "automaticScaling"이라는 정책을 정의합니다. 정책 유형은 "TargetTrackingScaling"으로, 이는 특정 메트릭(여기서는 "ASGAverageCPUUtilization", 즉 평균 CPU 사용률)을 목표 값(75%로 설정됨)에 맞춰 자동으로 인스턴스 수를 조절하는 방식입니다. 인스턴스의 워밍업 시간은 300초로 설정되어 있으며, 이는 새 인스턴스가 메트릭에 영향을 미치기 시작하는 데까지 걸리는 시간입니다. 스케일 인(인스턴스 수를 줄이는 것)은 활성화되어 있어 CPU 사용률이 목표치 아래로 떨어질 경우 인스턴스 수를 자동으로 줄일 수 있습니다. 이 설정은 오토 스케일링 그룹의 용량을 수요에 맞춰 효율적으로 조절하도록 돕습니다.

 

Auto Scaling Architecture

 

 

 

반응형