WiseN

[Reinvent2019] 인스턴스 단위의 오토스케일링 지원 - ECS Cluster Auto Scaling

Dec 17, 2019   |   AWS

작성자_박태순

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

들어가며



안녕하십니까. GS네오텍 박태순 입니다.

이번 글은 리인벤트 2019에서 발표된 ECS Cluster Auto Scaling 에 대해 소개하려고 합니다. 기존에 Task 기준으로만 오토 스케일링을 지원했던 것에 반해, 이번 업데이트를 통해 ECS Cluster 인스턴스 단위 기준의 자동 스케일링 작업을 할 수 있게 되었습니다.

이어 좀 더 자세한 내용을 살펴보도록 합시다.

 

Auto Scaling for ECS 소개


AWS ECS Cluster Auto Scaling을 활용 하기 위해선 Capacity Provider라는 새로운 ECS 자원 유형을 작성해야 합니다. 사전에 작성된 Auto Scaling Group을 빈 클러스터 Capacity Provider에 등록 하면 2가지 새로운 기능을 설정 할 수 있습니다. 

Managed Scaling

새로운 확장 매트릭인 Capacity Provider Reservation에서 인스턴스 스케일링을 관리합니다. 여기서 Capacity Provider Reservation은  ECS 워크로드에 필요한 클러스터 리소스의 총 비율을 측정하는 지표입니다. Target capacity라는 EC2 인스턴스에 사용량 비율을 입력하면 Managed 하게 오토스케일링을 관리합니다.

​Managed instance termination protection

Scale in이 발생했을 때, 종료 할 인스턴스를 제어하고 실행중인 컨테이너의 중단을 최소화해서 컨테이너의 가용성 및 운영비용을 절감할 수 있습니다.

 

 

개선 사항



여러 워크로드를 실행하거나 빠르게 확장되는 워크로드 실행 시 유리
기존 ECS에서도 Task 단위에서 CPU 및 메모리 사용량 등의 메트릭을 이용한 확장을 지원했습니다. 새로 등장한 Capacity Provider Reservation 매트릭이 Scale out 정책에 반영되면서 더 빠르고 안정적인 확장이 가능해졌습니다. 

제로 스케일링

오토스케일링시 인스턴스 수가 0개가 되면 task는 실행 할 수 없지만 프로비저닝 상태가 되어 대기 상태에 들어갑니다. 다시 Scale out 되면 task가 다시 인스턴스에 배치되며 시작됩니다.

 


 



ECS for Auto Scaling 데모


 

먼저 Capacity Provider에 쓰일 오토스케일링 그룹을 만들어 봅시다. 먼저 Launch configuration을 작성해봅시다.

 


 

AMI로 amazon linux를 사용하였고, 인스턴스는 t2.micro를 설정 하였습니다.

​다음 오토스케일링 그룹을 지정해 줍시다.

 


 

 

  • 목표 용량 : 5
  • 최소​ 인스턴스 개수: 0 
  • 최대 인스턴스 개수: 100
  • Health check 유예 기간: 300
  • 인스턴스 보호: 축소 방지

 

 

 



 

ECS Cluster에서 빈 클러스터를 생성 후 Capacity Provider를 클릭합니다.

 




 

Managed scaling과 Managed termination protection 을 Enabled 해줍니다. 다음 Target capacity를 지정해줍니다. Target capacity는 EC2인스턴스의 사용률 지표입니다. Update cluster를 눌러줍니다.

 

 


 

EC2 탭으로 이동하면 클러스터 내에 새로운 인스턴스들이 올라온 것을 보실 수 있습니다.

 



 

오토스케일링 그룹 탭으로 이동해 Capacity Provider로 이용하던 오토스케일링 그룹을 편집하면 클러스터 내의 인스턴스 수를 조정 할 수 있습니다.

 

마무리 


 

기존 ECS와 다른점은 좀 더 인프라적 관점에서 확장이 가능 하다는 것입니다. 
 

​예를 들어 기존에는 Task의 오토스케일링의 기준을 잡을때 CPU 사용률이 70% 이상일 때 작업 수를 추가하라고 오토스케일링 정책을 적용했다고 생각해 봅시다. EC2 Auto Scaling 환경에서 동일하게 확장 기준으로 CPU 사용률 70%으로 잡게 되면 컨테이너의 확장 속도가 훨씬 빠르기 때문에 빠르게 확장가능한 컨테이너의 장점이 퇴색되었습니다. 그렇기 때문에 EC2 Auto Scaling의 CPU 사용률 기준을 50% 내지 60% 정도로 낮게 잡아야만 했고 이는 자원의 낭비로 이어졌습니다. 하지만 ECS Cluster Auto Scaling이 업데이트 되면서 Task 확장 속도와의 괴리를 줄일 수 있었고, Task가 더 빠른 속도로 확장 되더라도 대기 프로비저닝 상태로 들어가기 때문에 철저하게 인스턴스를 기준으로 스케일링 정책을 관리할 수 있게 됩니다. 이 부분의 개선이 이번 서비스의 핵심입니다.

 

참고로 ECS Cluster Auto Scaling은 ECS를 사용할 수 있는 모든 리전에서 사용할 수 있습니다.

 

마칩니다. 끝!