AWS Auto Scaling 구성 및 사용 방법

2020. 06. 26 | 블로그

안녕하세요 디딤365입니다.

이번 포스팅에서는 자동으로 EC2의 규모를 조절해주고 사용자의 비용과 성능을 최적화하는 AWS Auto Scaling 서비스에 대해 알아보겠습니다.

<목차>

1. 컴퓨팅 사용량(필요한 리소스)에 따른 리소스 관리

2. Auto Scaling 이란

3. Auto Scaling 신청 방법

4. Auto Scaling을 통한 부하 발생 테스트

1. 컴퓨팅 사용량(필요한 리소스)에 따른 리소스 관리

서버는 가변적으로 사용량이 변동할 수 있습니다.

사용자들은 이러한 사용량을 추측하여 직접 리소스를 조달하는 작업을 해줘야 합니다.

현재, 시간을 기준으로 사용량이 변동하는 서버가 있다고 가정하겠습니다.

사용자가 직접 사용량을 추측하여 서버를 세팅할 경우, 너무 많은 리소스를 확보하여 낭비되는 현상과 적은 리소스를 확보해서 부족한 현상이 발생할 수 있습니다. 이러한 현상은 비용적으로도 문제가 발생합니다.

2. Auto Scaling 이란?

그렇다면 서버의 사용량 및 요구사항에 따라서 자동적으로 서버를 조절할 수 있도록 하려면 어떻게 해야 할까요?

AWS Auto Scaling이 이러한 문제를 해결해 줍니다.

사용자가 증가하여 트래픽이 급증하였을 때 Auto Scaling이 EC2 인스턴스를 자동으로 추가(Scale out)하며, 줄어들었을 때는 인스턴스를 제거(Scale In) 합니다. 즉, 사용자는 사용량을 추측할 필요가 없으며, 비용적으로도 효과를 볼 수 있습니다.

그리고, 이러한 Auto Scaling 서비스 자체는 무료입니다. 하지만 AWS 리소스에 대한 비용과 CloudWatch 비용은 발생합니다.

Auto Scaling은 ELB(Elastic Load Balancer)와 함께 사용이 됩니다. ELB에 접속량이 많아져 트래픽이 증가하게 되면 Auto Scaling은 EC2 인스턴스를 추가하고 ELB에 연결하여 트래픽을 분산시킵니다.

3. Auto Scaling 신청방법

이제 Auto Scaling을 작업하기 전에 ELB 및 EC2 인스턴스들을 세팅해주겠습니다.(Auto Scaling은 ELB와 같이 사용됩니다. ELB를 먼저 생성해 주시기 바랍니다.)

그리고 EC2인스턴스 2개를 생성하도록 하겠습니다.

첫 번째 인스턴스는 Auto Scaling에 사용되기 위한 것이며, 두 번째 인스턴스는 Auto Scaling에 부하를 주기 위한 것입니다. Auto Scaling에 사용될 인스턴스는 간단히 wordpress를 설치해 주시기 바랍니다.

그리고 wordpress를 설치한 인스턴스를 이미지화 시키도록 하겠습니다.(해당 본문에서는 AutoScaling 설치를 설명하기 위해서, EC2 인스턴스 생성 및 wordpress 설치는 생략하도록 하겠습니다.)

이미지는 Auto Scaling을 구성할때, 사용할 인스턴스 이미지입니다. 즉, Auto Scaling을 통해서 EC2 인스턴스가 추가되고 제거가 될 것입니다. 추가 및 제거의 대상이 되는 EC2 인스턴스를 구성할 때 사용할 이미지 입니다.

생성된 이미지는 [AMI] 목록에서 확인하실 수 있습니다. 현재, pending 상태로 생성 중이며, 생성 완료 시 available 상태로 변경됩니다.

이제, 그럼 본격적으로 Auto Scaling을 설정하도록 하겠습니다.

1) 서비스 – EC2 – Auto Scaling 그룹 페이지에 접속합니다. 그리고, Auto Scaling 그룹 생성을 클릭합니다.

2) Auto Scaling 그룹 생성 페이지에서 [시작하기] 버튼을 클릭합니다.

해당 작업은, 그룹을 만들기 전에 1단계인 시작 구성 생성 또는 선택을 먼저 해야 합니다.

3) Auto Scaling에 사용될 EC2 인스턴스에 설치할 운영체제를 선택하는 페이지입니다.

AWS에 구성된 AMI(이미지)로만 구성할 수 있습니다.

처음에 EC2 인스턴스에 wordpress를 설치하고 해당 인스턴스를 이미지로 생성했던 것을 기억하시나요?

여기서, 그 이미지를 사용할 것입니다. 내 AMI에서 직접 만든 이미지를 선택합니다.

4) Auto Scaling을 통해서 자동으로 인스턴스가 생성이 될 때 구성할 사양을 선택합니다.

그리고 [다음 : 세부 정보 구성] 버튼을 클릭합니다.

5) Auto Scaling 시에 추가될 인스턴스의 옵션을 설정 후 [스토리지 추가]버튼을 클릭합니다.

6) 해당 인스턴스의 스토리지, 즉, 저장장치의 크기를 세팅할 수 있습니다.

[보안 그룹 구성] 버튼을 클릭합니다.

7) 컴퓨터에 접속할 수 있는 네트워크를 지정합니다. 규칙 추가를 통해서 네트워크를 추가하도록 하겠습니다.

그리고 [검토] 버튼을 클릭합니다.

8) 검토 화면에서 정보를 확인 후 [시작 구성 생성] 버튼을 클릭합니다.

9) 인스턴스에 SSH를 통해 접속할 때 사용하는 키를 설정하는 것 입니다. 사용하고 있는 키가 있기 때문에, 기존 키 페어로 선택하겠습니다.

그리고 [시작 구성 생성 버튼]을 클릭합니다.(기존 키가 없으시다면 새로 키를 선택하고 키 페어를 입력 후 키를 다운 받으시기 바랍니다.)

여기까지 작업은 Auto Scaling을 통해 인스턴스를 추가할 때, 어떠한 인스턴스를 추가할 것인지에 관해서 지정을 한 것입니다.

그 다음 설정은, Auto Scaling 그룹 설정입니다. 방금 설정한 인스턴스를 어떠한 조건에서 자동으로 추가/제거할 것인지를 세팅하는 작업입니다.

10) Auto Scaling 그룹 생성 페이지에서 각 정보들을 입력해 줍니다.

Auto Scaling의 그룹 이름을 입력합니다.

그룹 크기 – Auto Scaling을 신청 완료 후, 몇 개의 인스턴스로 시작을 할지를 설정합니다.

네트워크 – Auto Scaling이 신청될 VPC입니다. 기본값으로 두겠습니다.

서브넷 – EC2 인스턴스가 추가될 서브넷입니다.

로드밸런싱 – 로드밸런서를 사용하기 위해서 클릭합니다.

클래식 로드 밸런서 – Auto Scaling을 통해서 신청될 EC2 인스턴스가 자동으로 ELB에 연결될 수 있도록 생성된 ELB를 선택해 줍니다.

그리고 [조정 정책 구성] 버튼을 클릭합니다.

11) 인스턴스를 어떤 조건에서 추가하고 제거할지를 구체적으로 설정하는 부분입니다.

조정범위는, 인스턴스가 Auto Scaling의 조건에 따라 추가될 때 최대 3개까지 추가될 수 있으며, 제거가 될 때는 최소 1개는 남겨 두고 제거가 되는 것입니다. 즉, 인스턴스가 너무 적어지거나 너무 많아지는 것을 방지할 수 있습니다.

정책 실행 요건은 모니터링을 의미합니다. 해당 기능은 인스턴스가 설정한 상태에 도달했을 때, 알람이 Auto Scaling에게 전달되도록 합니다.

정책 실행 요건에서의 ‘새 경보 추가’를 통해서, 경보를 설정하도록 하겠습니다.

CPU 사용률이 30이상인 상태가 1분 이상 지속될 경우, 알람이 울리도록 설정을 했습니다.

[경보 생성] 버튼을 클릭하겠습니다.

12) 이제 설정한 경보가 울리게 될 때, Auto Scaling에 통보가 되는데 이때 Auto Scaling이 어떠한 작업을 할 것인지 작업 수행에 설정을 합니다.

CPU 점유율이 30%이상일때, 인스턴스 1개를 추가하도록 설정했습니다.

13) 그리고 Auto Scaling을 통해 인스턴스가 제거되는 것도 설정을 할 것입니다.

증가와 동일하게 ‘새 경보 추가’를 선택하여 정책실행요건을 설정하도록 하겠습니다.

CPU 사용률이 10퍼 이하인 경우가 1분 이상 지속될 때 알람이 울리도록 입력 후 [경보 생성] 버튼을 클릭합니다.

14) 그리고 알람이 울릴 때, 제거 이벤트를 설정 후 [검토]버튼을 누릅니다.

15) [태그 구성]을 클릭합니다.

16) [검토] 버튼을 클릭합니다.

17) 검토에서 설정한 Auto Scaling을 확인 후 [Auto Scaling 그룹 설정]버튼을 클릭합니다.

18) Auto Scaling 그룹 생성 절차가 완료되었다면 Auto Scaling 그룹 탭에서 방금 생성한 것을 확인하실 수 있습니다. 처음에 Auto Sacling 그룹에서 시작구성을 1로 설정하여, 인스턴스가 한 개로 시작하는 것을 확인하실 수 있습니다.

19) Auto Scaling을 통해 생성된 인스턴스는 EC2 인스턴스 화면에서도 확인하실 수 있습니다.

20) 로드밸런서 탭에서 생성된 EC2 인스턴스가 설정한 ELB에 붙어 있는 것 또한 확인하실 수 있습니다.

4. Auto Scaling을 통한 부하 발생 테스트

21) 이제 생성된 인스턴스에 부하를 주어 Auto Scaling이 CPU 사용률이 30% 이상일때, 인스턴스를 자동적으로 추가하는지, 그리고 CPU 사용률이 10% 이하일 때, 제거하는 지를 확인하겠습니다.

제일 처음에 EC2 인스턴스를 2개 생성 한 것을 기억하세요? 이미지 대상이 될 인스턴스와 공격할 인스턴스 2개를 생성하였는데요. 공격할 인스턴스를 실행하도록 하겠습니다.

이제 공격할 인스턴스에 아파치 부하 발생기 명령어를 통해 EC2 인스턴스의 웹 서버에 부하를 주도록 하겠습니다.

$ sudo ab -n 100000 -c 3 http://로드밸런서DNS주소/wordpress/index.php

-n : 요청할 수 있는 횟수

-c : 동시 요청 수

그리고 Auto Scaling의 인스턴스에 접속하여 top 명령어를 통해 CPU 사용률을 확인해 보겠습니다.

현재 사용률이 30이상임을 확인할 수 있습니다.

사용률이 30이상일 경우, Auto Scaling이 EC2 인스턴스를 자동으로 추가한 것을 확인하실 수 있습니다.

또한, 사용률이 10 이하로 떨어질 경우, 인스턴스가 제거되는 것을 확인하실 수 있습니다.

이러한 Auto Scaling 서비스는 사용량을 확정할 수 없고, 이벤트나 서비스의 특성에 따라 사용량에 변화가 빈번하게 발생할 때 적합한 서비스입니다.

여러분들도 이와 같은 서비스를 고민한다면 AWS Auto Scaling을 활용하시길 추천드립니다.

작성 : R&D센터 박설화 사원

편집 : 전략사업본부 조항준 주임