[Hands-on-labs] Maintaining High Availability with Auto Scaling (for Linux)


[Contents]

- Command-line을 이용하여 launch configuration 만들기

- Command-line을 이용하여 Auto Scaling Group 만들기

- 인스턴스 리소스가 높거나 낮을 때 Auto Scaling notifications 설정하기

- 자원 활용량의 변화에 따라 현재 실행중인 인스턴스의 수를 확장하거나 축소하는 정책만들기



 - lab-details.txt

# 해당 Lab을 수행하기 위한 정보

ElasticLoadBalancer, qls-55734-ElasticL-M2AV8N20P0MR

AMIId, ami-f0091d91

KeyName, qwikLABS-L251-5573440

AvailabilityZone, us-west-2b

SecurityGroup, qls-5573440-09357917d5bf6429-Ec2SecurityGroup-A27EJ3FAV8GL


[Task 1: Configure AWS CLI]

 - configure command

$ aws configure


[Task 2: Create a Launch Configuration]

 - Auto Scaling으로 새 Server를 추가할 때 시작될 AMI(Amazon Machine Image)를 지정

- Image-id: 64비트 Amazon Linux AMI

- 인스턴스 유형: EC2 인스턴스 유형

- key-name: EC2 key-pair 이름

- security-groups: EC2 security group

- launch-configuration-name: Auto Scaling Launch Configuration 이름

aws autoscaling create-launch-configuration --image-id <PasteYourAMIIdHere> --instance-type t2.micro --key-name <PasteYourKeyNameHere> --security-groups <PasteYourSecurityGroupHere> --user-data file:///home/ec2-user/as-bootstrap.sh --launch-configuration-name lab-lc


[Task 3: Create an Auto Scaling Group]

 - Auto Scaling Group 만들기 (그룹 크기 1 ~ 4로 지정)

- Availability Zone: us-west-2

- launch-configuration-name: lab-lc

- ElasticLoadBalancer: qls-55734-ElasticL-M2AV8N20P0MR

- max-size: 4

- min-size: 1

aws autoscaling create-auto-scaling-group --auto-scaling-group-name lab-as-group --availability-zones <PasteYourAvailabilityZoneHere> --launch-configuration-name lab-lc --load-balancer-names <PasteYourElasticLoadBalancerHere> --max-size 4 --min-size 1


[Task 4: Verifying Auto Scaling]

 - Auto Scaling 서버가 제대로 돌아가는지 테스트

 - Service -> EC2 -> Instance

 - 새로이 만들어진 인스턴스의 public DNS(IPv4)로 접근하여 인스턴스가 실행 중인지 확인

 - 테스트 1: 새로운 인스턴스를 종료

- Auto Scaling 크기가 최소 크기보다 작은 것을 감지 할 경우 몇 분안에 새로운 인스턴스가 나타난다.

 - 테스트 2: 또 다른 새로운 인스턴스가 나타났을경우 다시 중지를 시도

- Auto Scaling은 몇분 후에 인스턴스가 응답하지 않는 것을 감지하고 인스턴스를 자동으로 종료하고 대체 인스턴스를 시작


 * Auto Scaling의 설정으로 최소 인스턴스를 유지하게 됨을 확인


 - Auto Scaling 인스턴스 생성시 GroupName 태그를 자동으로 만들고 채워 Instnace를 확인할 수 있다.

- key: Name

- Value: AS-Web-Server

aws autoscaling create-or-update-tags --tags "ResourceId=lab-as-group, ResourceType=auto-scaling-group, Key=Name, Value=AS-Web-Server, PropagateAtLaunch=true"


 - 테스트 3: 새로운 인스턴스를 다시 중지

- Auto Scaling의 설정으로 최소 인스턴스보다 현재 존재하는 인스턴스 수가 낮을 때 GroupName의 값을 채운 또 다른 인스턴스가 생성

- 새 인스턴스의 이름이 AS-Web-Server인지 확인


[Task 5: Create Auto Scaling Notifications]


 - Services -> Simple Notification Service

- Create topic -> SNS topic

- Topic details 페이지 -> Create subscription

- Select Protocol Email, Endpoint: 알림 받을 이메일 주소

- Subscription 생성 후 Simple Notification Service의 주제 탭 선택 -> 해당하는 Amazon Resource Number(ARN)를 밑에 명령어에 기입


 - 서버의 Linux Command-line에서 지원되는 Auto Scaling Alert 유형 조회

[ec2-user@ip-172-31-42-40 ~]$ aws autoscaling  describe-auto-scaling-notification-types


{

    "AutoScalingNotificationTypes": [

        "autoscaling:EC2_INSTANCE_LAUNCH",

        "autoscaling:EC2_INSTANCE_LAUNCH_ERROR",

        "autoscaling:EC2_INSTANCE_TERMINATE",

        "autoscaling:EC2_INSTANCE_TERMINATE_ERROR",

        "autoscaling:TEST_NOTIFICATION"

    ]

}


 - Configuration을 확인하는 테스트 알림 메일 확인

aws autoscaling put-notification-configuration --auto-scaling-group-name lab-as-group --topic-arn <PasteTheTopicARNHere> --notification-types autoscaling:EC2_INSTANCE_LAUNCH autoscaling:EC2_INSTANCE_TERMINATE


[Task 6: Create Auto Scaling Policies]


 - Create Scaling up Policy

aws autoscaling put-scaling-policy --policy-name lab-scale-up-policy --auto-scaling-group-name lab-as-group --scaling-adjustment 1 --adjustment-type ChangeInCapacity --cooldown 300 --query 'PolicyARN' --output text


 - Create Scaling down Policy

aws autoscaling put-scaling-policy --policy-name lab-scale-down-policy --auto-scaling-group-name lab-as-group --scaling-adjustment -1 --adjustment-type ChangeInCapacity --cooldown 300 --query 'PolicyARN' --output text


[Task 7: Wrapping Up]


 - Viewing Auto Scaling activities (log 확인)

aws autoscaling describe-scaling-activities --auto-scaling-group-name lab-as-group


+ Recent posts