본문 바로가기

Cloud AWS

Amazon AWS :: AutoScaling으로 고가용성 유지

 



 

 


Amazon AWS :: AutoScaling으로 고가용성 유지


본자료는 저자의 허락하에 공유되는 자료입니다.

국내 전문 CDN 사업자인 GS네오텍은 2015년에 Amazon Web Service의 AWS Premier Consulting 파트너로서 WiseN 이라는 서비스 브랜드로 클라우드 사업을 함께 하고 있습니다. 


Auto Scaling으로 고가용성 유지

다루는 내용

  • 웹 서비스의 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

arang

Sr. Technical Trainer at GSNeotek



  Reference : GS네오텍 WiseN 서비스



www.SalesMore.co.kr