이번 주에는 AWS Auto Scaling을 학습 및 실습한다.
스케일 인(Scale-In) / 스케일 아웃(Scale-Out) 이란?
스케일링 방법 중 하나로 스케일 업(Scale-Up) / 스케일 다운(Scale-Down)과 비슷하면서 다르다. 스케일 업/다운은 스케일링 시 서버 인스턴스를 더 높거나 낮은 사양으로 업/다운그레이드한다. 이는 직관적이지만 효율이 매우 떨어지기 때문에 스케일 인/아웃을 주로 사용한다. 스케일 인/아웃은 스케일링 시 서버 인스턴스 수를 늘리거나 줄여서 관리한다. 여러 인스턴스를 하나의 서비스처럼 사용할 수 있다면 훨씬 효율적으로 사용할 수 있어서 로드 밸런서(ELB)와 잘 어울린다.
먼저 Auto Scaling에 사용할 시작 템플릿을 생성해야 한다.
이 템플릿은 Auto Scaling을 적용할 예정이니 표시한 부분을 체크해주자.
시작 템플릿 기반 이미지로 사용할 AMI를 지정해주자. EC2 생성 시 AMI를 지정하는 것처럼 선택하면 된다.
시작 템플릿으로 올릴 인스턴스의 유형을 선택한다.
Auto Scaling에 사용할 템플릿의 경우 기존 네트워크 인터페이스를 사용하지 않는 것이 적절하다고 한다. 따라서 새로운 네트워크 인터페이스를 추가하고 보안 그룹을 선택한다.
인스턴스를 올릴 EBS를 지정한다.
이렇게 Auto Scaling에 사용할 시작 템플릿 구성이 완료되었다.
이번에는 Auto Scaling 그룹을 생성해보자.
앞에서 만들어둔 시작 템플릿을 선택한다.
사용할 VPC와 가용 영역을 고르면 되는데, 가용 영역의 경우 여러 개를 선택하여 특정 가용영역에 발생하는 이슈에 대한 영향을 최소화할 수 있다.
로드밸런서를 새로 만들거나 기존 로드밸런서에 연결할 수 있는데, 여기서는 Auto Scaling 그룹을 생성하는 것을 목표로 로드밸런서 없이 진행한다.
Auto Scaling 그룹에서 유지할 인스턴스 개수의 범위를 설정한다. 원하는(평소) 용량, 최소 용량, 최대 용량을 지정할 수 있다.
대상 추적 크기 조정 정책을 선택하면 오토스케일링으로 인스턴스 개수를 조정하는 정책을 설정할 수 있다. 여기서는 CPU 사용률이 50%를 넘어가면 인스턴스 수를 늘리도록 지정해두었다. 인스턴스 워밍업은 새로 시작된 인스턴스가 정상 범위에 들어올 때까지 기다려줄 시간이다. 워밍업 시간 전까지는 (위에서 설정한 정책에 따라)CPU 사용률이 50%를 넘어가도 인스턴스를 늘리지 않는다. 크기 조정 정책 지표에 포함시키지 않는 것이다.
인스턴스를 교체할 때 적용할 정책을 선택할 수 있다. 이 정책은 다른 서비스에서도 확인할 수 있는데(ex. Docker Swarm - stop-first / start-first), 읽어보고 자신의 서비스에 어울리는 정책을 선택하자.
태그는 추가하지 않아도 무관하지만 Name 태그를 설정해두면 나중에 EC2를 관리하기 편하다.
모든 설정이 끝나면 Auto Scaling 그룹을 생성할 수 있다.
Auto Scaling 그룹 생성 후 메뉴로 들어와보면 성공적으로 2개의 인스턴스가 올라갔다는 작업 기록을 확인할 수 있다.
EC2 목록을 보면 그룹 생성 시 Name 태그로 설정해둔 이름을 가진 인스턴스가 2개 생성됨을 확인할 수 있다.
인스턴스 하나를 임의로 종료시키자 새로운 인스턴스가 자동으로 초기화되고 있는 모습이다.
이 과정은 작업 기록에서 구체적으로 확인할 수 있다.
Auto Scaling은 Elastic Load Balancing(ELB)과 매우 잘 어울린다. Auto Scaling 자체로는 인스턴스 수를 늘리고 줄이기만 할 뿐 요청을 분산시키는 일은 수행하지 못한다. 부하 분산을 위해서는 DNS RR이나 로드 밸런서 등을 함께 사용해야 한다. 하지만 DNS RR만으로는 세부적인 제어가 힘들기 때문에 중요한 서비스라면 로드 밸런서를 함께 사용하자.
ELB와 Auto Scaling의 연결이 궁금하다면 이 포스트에 자세히 설명되어 있으니 여기를 참고하자.
Amazon EC2 Auto Scaling이란 무엇입니까?
Auto Scaling 개념 원리 & 사용 세팅 정리
ELB(Elastic Load Balancer) 구성 & 사용법 가이드