Amazon Web Services 한국 블로그

오토스케일링 신규 기능 – 인스턴스 보호하기

EC2 인스턴스에서는 고객이 만든 조건에 따라 서버의 숫자를 증가 혹은 감소할 수 있는 오토 스케일링을 이용할 수 있습니다. 스케일 아웃(Scale-out)을 통해서 고객의 요구에 맞는 트래픽 처리를 위한 컴퓨팅 성능을 확보할 수 있고, 스케일 인(Scale-in)을 통해 줄어든 트래픽에 대응해 비용을 줄일 수 있습니다.

오토스케일링에서 서버가 감소되는 스케일인 상황에서 인스턴스를 제어할 수 있는 추가 기능을 소개합니다. 과거에는 어떤 특별한 방법 없이 모든 오토스케일링 그룹 내 모든 인스턴스가 제거될 수 있습니다. 신규 제어 기능을 사용하시면, 특정 인스턴스를 제거하지 않도록 보호 할 수 있습니다.

이러한 기능을 추가한 것은 몇 가지 이유가 있습니다. 먼저 특정 인스턴스가 SQS 큐를 받아주는 것 같은 긴 시간 동작하는 작업을 진행하는 경우, 인스턴스 보호를 통해 작업이 소실 되는 것을 막아줄 수 있습니다. 두번째는 특정 인스턴스가 오토스케일링 그룹내에서 특별한 역할을 하는 경우, 즉 Hadoop 클러스터의 마스터 노드라던가 다른 인스턴스가 띄워져 실행되는 것을 모니티렁 하는 경우 등입니다.

스케일인 상황에서 인스턴스 보호하기
오토스케일링 콘솔에서 Actions 메뉴의 Instance Protection를 선택하여 특정 인스턴스를 스케일인 상황에서도 제거되지 않도록 할 수 있습니다.

아래에서 확인해 볼 수 있습니다.

콘솔 내에서 각 인스턴스의 보호 상태를 확인할 수 있습니다.

SetInstanceProtection API 함수를 통해서도 이러한 기능을 수행할 수 있습니다. 만약 장시간 큐 기반 워커 프로세스를 스케일인 상황에서 보호하려면, 다음과 같은 슈도 코드를 사용할 수 있습니다.

while (true)
{
  SetInstanceProtection(False);
  Work = GetNextWorkUnit();
  SetInstanceProtection(True);
  ProcessWorkUnit(Work);
  SetInstanceProtection(False);
}

대부분의 경우, 오토스케일링 그룹에서 적어도 하나의 인스턴스를 남겨둘 수 있습니다. 그러나, 모든 인스턴스를 보호하게 되면, 스케일인 동작은 일어나지 않습니다. 더 자세한 사항은 오토스케일링 라이프 사이클 문서를 참고하시기 바랍니다.

이 기능은 오늘부터 사용 가능합니다.

Jeff;

PS – AWS SDKs는 2015년 12월 8일 부터 SetInstanceProtection API 함수를 통해 사용 가능합니다.

이 글은 New – Instance Protection for Auto Scaling의 한국어 번역본입니다.