다루는 내용
∙ 웹 서비스의 End Point인 ELB 생성
∙ 콘솔에서 Auto Scaling 설정
∙ Command-line 툴을 이용하여 Auto Scaling 설정
∙ Command-line 툴을 이용하여 SNS 설정
∙ Command-line 툴을 이용하여 CloudWatch Alarm 설정
준비
서로 다른 AZ에 각각 Public 서브넷이 있는 VPC에 한대의 웹서버를 ELB를 통하여 서비스 중인 환경에서 Auto Scaling을 설정하여 고가용성을 확보한다는 가정으로 본 문서를 작성한다.
Public 서브넷이 둘 이상인 VPC
1. 가이드 문서 #16. Virtual Private Cloud (VPC) 구축 참고
Elastic Load Balancer (ELB)
1. 가이드 문서 # 09. Elastic Load Balancing (ELB) 소개 참고
2. 콘솔에서 EC2 클릭
3. 왼쪽 메뉴에서 Load Balancers 클릭
4. Create Load Balancer 클릭
5. Define Load Balancer 섹션에서
∙ Load Balancer name : elb-lab 입력
∙ Create LB Inside : LAB VPC (10.0.0.0/16) 선택
∙ Continue 클릭
6. Configure Health Check 섹션에서
∙ Ping Path : /index.html
∙ Response Timeout : 5
∙ Health Check Interval : 6
∙ Unhealthy Threshold : 2
∙ Healthy Threshold : 2
∙ Continue 클릭
7. Select Subnets 섹션에서
∙ Public 서브넷 선택/추가
∙ Continue 클릭
8. Assign Security Groups 섹션에서
∙ 보안 그룹 ‘WEB‘ 선택
∙ Continue 클릭
9. Add Instances to Load Balancer 섹션에서
∙ ‘Web Server 1‘ 선택
∙ Continue 클릭
10. Add Tags 섹션에서
∙ Continue 클릭
11. Review 섹션에서
∙ Create 클릭
∙ Close 클릭
Web Application
1. index.html
ELB에서 Health Check Path가 /index.html 이므로 웹 서버의 홈 디렉토리에 해당 파일이 있어야 한다.
실습
콘솔에서 Auto Scaling 적용
Auto Scaling Launch Configuration 설정
1. 콘솔에서 EC2 클릭
2. 왼쪽 메뉴에서 Launch Configurations 클릭
3. Create Auto Scaling group 클릭
4. Create launch configuration 클릭
5. Choose AMI 섹션
∙ Amazon Linux AMI 2014.09.2 (HVM) 선택
∙ Select 클릭
6. Choose Instance Type 섹션
∙ Next: Configure details 클릭
7. Configure details 섹션
∙ Name : Auto Scaling Launch Configuration 입력
∙ User data : As text 선택
∙ IP Address Type : Assign a public IP address to every instance 선택
∙ Next: Add Storage 클릭
8. Add Storage 섹션
∙ Next: Configure Security Group 클릭
9. Configure Security Group 섹션
∙ ‘Web‘ 자원그룹 선택
∙ Review 클릭
10. Review 섹션
∙ Create launch configuration 클릭
Auto Scaling Group 설정
1. Configure Auto Scaling group details 섹션
∙ Group name : Auto Scaling Group 입력
∙ Network : LAB VPC (10.0.0.0/16) 선택
∙ Subnet : Public 서브넷 선택
∙ Load Balancing : Receive traffic from Elastic Load Balancer(s) 체크 후 ELB 선택
∙ Next: Configure scaling policies 클릭
2. Configure scaling policies 섹션
∙ Next: Configure Notifications 클릭
3. Configure Notifications 섹션
∙ Add notification 클릭
∙ Send a notification to : Auto-Scaling-Notification-LAB 입력
∙ With these recipients : arang@gscdn.com
∙ Next: Configure Tags 클릭
4. Configure Tags 섹션
∙ Review 클릭
∙ Create Auto Scaling group 클릭
∙ Close 클릭
실행 확인
1. Auto Scaling에 의해 생성된 인스턴스 확인
∙ 해당 인스턴스의 Public IP로 브라우져에 접속
∙ Hello!! 출력 확인
2. Load Balancers 확인
∙ DNS Name : elb-lab-1625420501.us-west-2.elb.amazonaws.com 브라우져에 접속
∙ Hello!! 출력 확인
∙ Status : 2 of 2 instances in service 클릭
3. Notification 등록한 메일 확인
Auto Scaling Policy 동작 확인
1. 왼쪽 메뉴에서 Auto Scaling Groups 클릭
2. Auto Scaling Group 선택
3. Scaling Policies 탭 선택
4. Add policy 클릭
∙ Name : Auto Scaling policy 입력
∙ Create new alarm 클릭
∙ Whenever : Maximum of Network Out
∙ Is : >= 1000000 Bytes
∙ For at least : 1 consecutive period(s) of 5 Minutes
∙ Create Alarm 클릭
∙ Close 클릭
∙ Take the action : Add 1 instances
∙ And then wait : 30
5. Details 탭 선택
∙ Edit 클릭
∙ Max : 4
∙ Save 클릭
6. 테스트 파일 생성
∙ Auto Scaling Group의 인스턴스에 접속하여 다운로드 할 파일을 만든다.
∙ Auto Scaling Policy가 네트워크 사용량이 1Mbytes를 5분동안 넘을 경우 인스턴스를 생성하므로 테스트에 적합한 사이즈의 파일을 만든다.
7. 부하 테스트 (ApacheBench)
∙ 동접과 요청수를 적절히 조절하여 지속적인 요청으로 Auto Scaling Policy에 이벤트를 발생 시킨다.
8. EC2 à Instances à Monitoring à Network Out à CloudWatch Monitoring Details
9. Auto Scaling Groups à Scaling History 탭
10. Auto Scaling Groups à Details 탭
Command-line 툴로 Auto Scaling 적용
Auto Scaling Launch Configuration 설정
Auto Scaling의 Launch Configuration을 만들 수 있는 CLI는 AWS CLI, Auto Scaling CLI, AWS Tools for Windows PowerShell 3가지가 있다. 각 CLI 마다 사용법 및 옵션이 조금씩 다르므로 주의가 필요하다.
1. 정보 수집
∙ AMI 이미지명 : ami-dfc39aef
∙ 인스턴스 타입 : t2.micro
∙ Key Pair : ec2_keypair
∙ 보안그룹 : sg-e2eece87
∙ 생성할 Launch Configuration명 : as-conf-by-cli
∙ Launch Configuration이 위치할 리전 : us-west-2
2. Auto Scaling CLI로 Launch Configuration 생성
∙ 자격증명을 위해 AccessKeyId와 SecretKey를 가지는 파일 생성
∙ User data 내용을 담고 있는 파일 생성
∙ as-create-launch-config 실행
region을 반드시 입력해야한다.
3. AWS CLI로 Launch Configuration 생성
∙ aws configure에 자격증명 및 리전 정보 입력
∙ User data 내용을 담고 있는 파일 생성
∙ aws autoscaling create-launch-configuration 실행
Auto Scaling Group 설정
Auto Scaling Group도 AWS CLI, Auto Scaling CLI, AWS Tools for Windows PowerShell 3가지 CLI을 사용 할 수 있다. 각 CLI 마다 사용법 및 옵션이 조금씩 다르므로 주의가 필요하다.
1. 정보 수집
∙ Launch Configuration : as-conf-by-cli
∙ 사용 할 Availability zone : us-west-2b, us-west-2a
∙ 사용 할 Subnet : subnet-9ae645ed, subnet-01c54864
∙ Load Balancer : elb-lab
∙ Auto Scaling Group이 위치할 리전 : us-west-2
2. Auto Scaling CLI로 Auto Scaling Group 생성
∙ as-create-auto-scaling-group 실행
현재 테스트에 사용 중인 VPC에는 2개의 AZ에 public subnet과 private subnet이 각 2개 씩 있다. 옵션에서 AZ만 입력할 경우 private subnet에 EC2가 생성되어 서비스 하지 못 할 수 있으므로 subnet을 명시하는 옵션이 포함되어야 한다. 반대로 subnet을 명시면 AZ는 AWS에서 명확하게 알 수 있으므로 생략 가능하다.
3. AWS CLI로 Auto Scaling Group 생성
∙ aws autoscaling create-auto-scaling-group 실행
Auto Scaling Notifications 설정
Notification은 SNS Topic에 Notification Type을 정의하는 형태로 설정한다. 콘솔에서는 Create Topic을 통하여 SNS Topic을 만들 수 있지만, CLI를 이용할 경우 별개의 작업이다.
1. SNS Topic 생성
∙ aws sns create-topic 실행 (Topic을 만든다.)
∙ aws sns subscribe 실행 (Subscription을 만든다.)
2. Auto Scaling Notification 생성
Auto Scaling Policy 설정
Policy는 CloudWatch Alarm에 조건을 정의하는 형태로 작성한다.
1. Scale up Policy 생성
∙ aws autoscaling put-scaling-policy 실행
결과로 아래와 같은 형태의 PolicyARN이 출력된다. CloudWatch Alarm 생성시 필요하므로 메모해둔다.
2. AWS CloudWatch Alarm 생성
∙ aws cloudwatch put-metric-alarm 실행
∙ 마지막 라인의 alarm-action에는 PolicyARN을 전체 입력한다.
∙ aws autoscaling describe-policies 실행으로 확인 가능하다.
참고
- ELB : http://aws.amazon.com/ko/elasticloadbalancing/?nc2=h_l3_n
- Auto Scaling : http://aws.amazon.com/ko/autoscaling/?nc2=h_l3_c
- Auto Scaling Launch Configuration : http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WorkingWithLaunchConfig.html
- AWS CLI : http://docs.aws.amazon.com/cli/latest/index.html