WiseN

Auto Scaling으로 고가용성 유지

Aug 26,2015   |   AWS

작성자_GS Neotek

페이스북 공유하기 트위터 공유하기
Blog thumbnail

다루는 내용


∙ 웹 서비스의 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 실행으로 확인 가능하다.


 

 




참고