AWS Auto Scaling 설정하기

작성중…

AWS Auto Scaling이란?

Amazon Web Service 에서 특정 조건에 따라 서버(Ec2 instance)들의 스케일을 늘리고 줄이게 해주는 기능.

Launch Configuration 설정

- Launch Configuration 이름 : onlab-configuration 
- 사용할 AMI ID : ami-xxxxxxxx 
- 사용할 인스턴스 타입 : t2.micro 
- 생성된 인스턴스가 포함될 Security Group ID : sg-xxxxxxxx 
- 사용할 키 이름 : aws@onlab.com_key_pair 
- IAM Role Name : OnlabIAMRole
- 인스턴스가 생성될때마다 생성된 인스턴스에 Public IP를 부여함. 
aws autoscaling \
create-launch-configuration \
--launch-configuration-name "onlab-configuration" \
--key-name "aws@onlab.com_key_pair" \
--image-id ami-xxxxxxxx \
--block-device-mappings "[{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"VolumeType\": \"gp2\",\"VolumeSize\":20,\"DeleteOnTermination\": true}}]" \
--instance-monitoring Enabled=false \
--security-groups sg-xxxxxxxx \
--instance-type t2.micro \
--iam-instance-profile "OnlabIAMRole"

Launch configuration 삭제

위에서 만든 launch configuration onlab-configuration 삭제

aws autoscaling \
delete-launch-configuration \
--launch-configuration-name "onlab-configuration"

AutoScaling Group 생성

- AutoScaling Group Name : onlab-autoscaling-group 
- 사용할 Launch configuration : onlab-configuration 
- 인스턴스가 만들어질 가용 zone : ap-northeast-1a 
- 인스턴스 최소 사이즈 : 1대 
- 인스턴스 최대 사이즈 : 4대 
- 생성된 인스턴스가 등록될 ELB : onlab-loadbalancer 
- Health Check 방법 : ELB 
- 인스턴스가 생성될 서브넷 ID : subnet-xxxxxxxx 
aws autoscaling \
create-auto-scaling-group \
--auto-scaling-group-name "onlab-autoscaling-group" \
--launch-configuration-name "onlab-configuration" \
--availability-zones "ap-northeast-1a" \
--min-size 1 \
--max-size 4 \
--load-balancer-names "onlab-loadbalancer" \
--health-check-type "ELB" \
--health-check-grace-period 200 \
--vpc-zone-identifier subnet-xxxxxxxx

AutoScaling Group 수정

Note : 이미 생성된 AutoScaling Group의 설정을 update-auto-scaling-group 옵션을 사용해 수정한다.

예제) AutoScaling Group의 max-size를 기존 4에서 10으로 수정

aws autoscaling \
update-auto-scaling-group \
--auto-scaling-group-name "onlab-autoscaling-group" \
--max-size 10

확인)

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name "onlab-autoscaling-group"
{
    "AutoScalingGroups": [
        {
            "AutoScalingGroupARN": "arn:aws:autoscaling:ap-northeast-1:xxxxxxxxxxxx:autoScalingGroup:26b35367-c6dd-426c-bc62-4fb78569bad7:autoScalingGroupName/onlab-autoscaling-group", 
            "HealthCheckGracePeriod": 200, 
            "SuspendedProcesses": [], 
            "DesiredCapacity": 0, 
            "Tags": [], 
            "EnabledMetrics": [], 
            "LoadBalancerNames": [
                "onlab-loadbalancer"
            ], 
            "AutoScalingGroupName": "onlab-autoscaling-group", 
            "DefaultCooldown": 120, 
            "MinSize": 0, 
            "Instances": [], 
            "MaxSize": 10, # <--- 사이즈가 변경됨.
            "VPCZoneIdentifier": "subnet-xxxxxxxx", 
            "TerminationPolicies": [
                "Default"
            ], 
            "LaunchConfigurationName": "onlab-configuration", 
            "CreatedTime": "2016-04-06T03:28:34.488Z", 
            "AvailabilityZones": [
                "ap-northeast-1a"
            ], 
            "HealthCheckType": "ELB", 
            "NewInstancesProtectedFromScaleIn": false
        }
    ]
}

Policy(정책) 생성

증가(increase)정책

조건 : Autoscaling을 통해서 생성된 인스턴스들의 CPU 5분 평균 점유율이 80%이상일때 인스턴스를 현재 수량의 두 배씩 증가시키고, 이 조건이 실행된 후 1분간(cooldown)은 Autoscaling 작업을 하지 않는다.

aws autoscaling \
put-scaling-policy \
--auto-scaling-group-name "onlab-autoscaling-group" \
--policy-name "Increase-instances" \
--scaling-adjustment 10 \
--adjustment-type "PercentChangeInCapacity" \
--cooldown 120

옵션 설명

--auto-scaling-group-name : Auto Scaling 그룹 이름
--policy-name : 생성하려고 하는 정책이름
--scaling-adjustment : 몇 개의 인스턴스를 추가하고 제거할 것인가? 
--adjustment-type : 인스턴스를 추가하고 제거하는 방법 
  #   ChangeInCapacity : 몇 개의 인스턴스를 더하고 뺄 것 인가에 대한 옵션으로 기존의 인스턴스 수가 3개이고 adjustment값이 5라면 Auto Scaling이 동작한 후 8개가 된다.
  #   ExactCapacity : 몇 개의 인스턴스가 되어야 하는가에 대한 사항으로 기존의 인스턴스가 3이고 adjustment의 값이 5라면 Auto Scaling이 동작한 후에는 5개가 된다.
  #   PercentChangeInCapacity : 인스턴스의 증가와 감소를 Percentage(%)로 적용한다. 예를 들어 최초 인스턴스가 2개이고 adjustment값이 100이라면 Auto Scaling 동작 후에는 4가 된다. 
- cooldown : Auto scaling 동작 후, 다음 Auto Scaling 동작 시점까지 시간(초) 

감소(decrease)정책

조건 : 위 조건이 실행되다가 CPU점유율이 정상 수준으로 떨어졌을때 스케일을 줄이는(인스턴스수를 줄이는) 정책

aws autoscaling \
put-scaling-policy \
--auto-scaling-group-name "onlab-autoscaling-group" \
--policy-name "Decrease-instances" \
--scaling-adjustment -1 \
--adjustment-type "ChangeInCapacity" \
--cooldown 120

Cloud Watch 에서 Alarm을 생성하고 정책과 연결

댓글 남기기