본문 바로가기
Cloud Service

How to set up a scalable web service with AWS autoscaling and Elastic load balancer - 4/4

by Amorang 2021. 3. 8.

Creating a auto scaling group and attaching it to the load balancer

Scalable web service를 구성하는 마지막 단계로 AWS autoscaling group과 load balancer를 연결한다. AWS autoscaling를 사용했을 때 장점은 auto scaling group의 instance들의 CPU 점유율이나 network traffic에 따라 설정된 범위까지 EC2 instance를 할당받아 사용할 수 있다. 또한 CPU 사용량 또는 network traffic이 threshold 이하로 일정 시간 유지되면 새로 할당받은 EC instance들을 자동 반납하게 되어 비용을 절감할 수 있다.

 

Creating a launch configuration

launch configuration은 EC2 instance를 생성할 때 사용되는 설정이다. 어떤 AMI를 사용할 것인지 어떤 instance type를 사용할 것인지 결정한다.

EC2 console의 좌측 pane에서 Auto Scaling > Launch configuration를 클릭한다. 우측 상단의 "Create launch configuration" 버튼을 클릭한다.

 

  • 다음으로 이전 포트스 Step 8에서 생성한 security group을 등록한다.
  • "Key pair"에는 이전 포스트 Step 6에서 사용한 private key를 등록한다.
  • 마지막으로 하단에 있는 "Create launch configuration"를 클릭하여 launch configuration를 생성한다.

Creating a auto scaling group

  • EC2 console에서 우측 pane AUTO SCALING > Auto Scaling Groups를 클릭한다.
  • 좌측 pane 좌상단의 "Create an Auto Scaling group"를 클릭한다.
  • Name 필드에 적당한 이름을 기입한다.
  • Launch configuration에서 위에서 만든 "myapp-launch-config"를 선택한다.(기본으로 Launch Template으로 되어 있습니다. 우측에 "Switch to launch configuration"를 클릭하여 변경하여야 합니다.)

  • 이전 포트스 Step 8에서 사용한 VPC를 선택한다.
  • 다음으로 subnets(AZ)들을 선택한다.

 

  • 다음으로 이전 포스트에서 생성한 load balancer와 연결해준다.

다음으로 group size를 설정합니다. group size에는 Desired capacity, min/max capacity를 설정하게 되어 있습니다. min/max capacity는 이름으로 알 수 있듯이 scale-out event가 발생할 때 할당될 수 있는 최대 인스턴스의 수가 maximum capacity, scale-in event(여기서는 average cpu utilization 60% 이상 일정 시간이 지날때)가 발생하여 인스턴스를 종료시킬 때 최소한 유지시켜야 할 인스턴스의 수가 minimum capacity이다. 즉, minimum은 최소 유지되는 인스턴스의 수, maximum은 할당받을 수 있는 최대 수이다.

Desired capacity는 초기 할당받을 값일 뿐만 아니라 이 값으로 현재 할당받은 인스턴스의 수를 의미할 수도 있다. scale-out event가 발생시 cloudwatch alarm은 auto scaling group의 desired capacity값을 1 증가시켜 인스턴스를 할당받게 한다. scale-in event가 발생시 desired capacity를 1 감소시켜 인스턴스를 해제하게 한다. 

아래 group size에 desired capacity 7, minimum capacity 1, maximum capacity 10으로 설정되어 있다. 이 경우 auto scaling group이 시작되면 7개의 인스턴스를 생성한다. 그리고 일정시간동안 average cpu utilization이 60%이하가 유지되면 6개의 인스턴스들은 자동 종료되고 1개의 인스턴스만 남아 서비스하게 된다.

 

다음으로 Scaling policies에서 "Target tracking scaling policy"를 선택하고 Metric type를 아래 중에 하나를 선택한다.

  • Average CPU utilization
  • Average network in(bytes)
  • Average network out(bytes)
  • Application Load Balancer request count per target

여기서는 Average CPU utilization를 선택하고 target value를 60으로 설정하였다. 즉 average cpu utilzation이 60%를 넘으면 instance를 할당받게 한다. 

다음으로 warm-up시간을 설정한다. 이 시간은 instance가 할당받고 warm-up 시간동안은 포함되지 않는다.

아래는 instance가 할당, 해제등의 이벤트가 발생시 이메일을 받고자 할때 설정한다.

다음으로 "Add tags", "Review"는 Next를 클릭하고 종료한다.

이제 web browser 주소창에 https://myapp.<domain_name> 입력한다

 

- 끝 -

댓글