AWS EC2 오토 스케일링 시작하기

웹 사이트 또는 애플리케이션을 운영하는 데는 비용이 많이 들지 않아도 됩니다. 사실, 사용자에게 좋은 경험을 제공하면서도 리소스를 절약할 수 있는 방법이 있습니다. AWS EC2 Auto Scaling을 통해 이를 실현할 수 있습니다.

EC2 Auto Scaling은 사용자가 정의한 조건에 따라 자동으로 Amazon EC2 용량을 확장하거나 축소하는 데 도움이 되는 서비스입니다. 이 튜토리얼에서는 AWS에 기본 EC2 Auto Scaling 구성을 설정하고 적용하는 방법을 배울 것입니다.

계속 읽어보고, 필요한 것보다 더 많은 비용을 지불하지 않고도 애플리케이션이 항상 리소스를 가지도록 보장하세요!

사전 준비 사항

이 튜토리얼은 실습을 포함하고 있습니다. 따라하기 위해 AWS 계정과 무료 티어 계정이 필요합니다.

시작 템플릿 생성

AWS EC2 Auto Scaling으로 넘어가기 전에 EC2 인스턴스를 시작할 수 있는 방법이 필요합니다. 이는 시작 템플릿(시작 구성과 유사한)입니다. 시작 템플릿에는 인스턴스 유형, 서브넷 및 보안 그룹과 같은 EC2 인스턴스를 시작하는 데 필요한 모든 정보가 포함되어 있습니다.

AWS는 시작 구성보다 유연성과 고급 기능이 더 많은 시작 템플릿을 사용하는 것을 권장합니다. EC2 Auto Scaling은 확장할 때 새로운 인스턴스를 시작하기 위해 시작 템플릿을 사용합니다.

발표 템플릿을 생성하려면 다음을 수행하세요:

1. 좋아하는 웹 브라우저를 열고, AWS 관리 콘솔에 로그인합니다.

2. 검색 창에서 EC2 발표 템플릿을 검색하고, 기능 아래 결과에서 발표 템플릿을 선택합니다. 이렇게 하면 EC2 발표 템플릿 페이지가 열립니다.

Opening the launch templates page

3. 다음으로, 드롭다운 목록에서 지역을 선택하고 발표 템플릿 생성을 클릭하여 발표 템플릿 생성을 시작합니다.

EC2 Auto Scaling을 지원하는 모든 지역에서 자동 확장을 사용할 수 있지만, 이 튜토리얼에서는 US East (N. Virginia)를 사용합니다.

Initiating creating a launch template

4. 이제 다음과 같이 새 발표 템플릿의 이름과 설명을 구성합니다:

  • 발표 템플릿 이름 – 필수 – 발표 템플릿에 이름을 지정합니다 (ec2-autoscaling-template-demo). 이름은 지역 내에서 고유해야 하며, 128자를 초과하지 않아야 하며, 하이픈 (-), 밑줄 (_), 기간 (.)을 제외한 특수 문자를 포함해서는 안 됩니다.
  • 템플릿 버전 설명 – 발표 템플릿에 설명을 입력합니다 (ec2 autoscaling template demo). 설명은 255자를 초과해서는 안 됩니다.
  • Auto Scaling 가이드 – EC2 Auto Scaling과 호환되는 템플릿을 설정하는 데 도움이 되는 가이드를 제공하도록 옵션을 선택하세요. 이 옵션을 선택하면 EC2 Auto Scaling과 호환되는 로그 템플릿을 생성하는 것이 더욱 간편해집니다.
Configuring a launch template

5. 로컬 템플릿 내용 섹션으로 아래로 스크롤하여 다음과 같이 로그 템플릿에 대한 응용 프로그램 및 OS 이미지를 선택하세요:

  • 응용 프로그램 및 OS 이미지 (Amazon Machine Image) – 템플릿에 대한 부팅 이미지를 선택하세요. 이 튜토리얼에서는 Amazon Linux 2 AMI를 사용합니다. 선택한 부팅 이미지를 기반으로 EC2 인스턴스가 시작됩니다.

선호하는 부팅 이미지를 선택할 수 있지만, 무료 티어 대상인 Amazon Linux 2 AMI을 권장합니다.

  • 아키텍처 – 템플릿에 대한 아키텍처를 선택하세요. 이 튜토리얼에서는 x86-64 (64비트)를 사용합니다.
Providing launch template contents

6. 다음으로, 다음과 같이 템플릿에 대한 인스턴스 유형 및 키 페어 (로그인)를 설정하세요:

  • 인스턴스 유형 – 템플릿에 대한 인스턴스 유형을 선택하세요. 그러나 이 튜토리얼에서는 무료 티어 대상인 t2.micro를 선택합니다.

인스턴스 유형을 선택할 때 CPU 및 메모리 요구 사항과 같은 다른 요소도 고려하십시오. 일부 인스턴스 유형은 다른 것보다 비용이 더 많이 들 수 있습니다.

  • 키 페어 (로그인) – 자동 스케일링에는 필요하지 않으므로 시작 템플릿에 포함하지 않음을 선택하세요.

키 페어가 지정된 경우, EC2 Auto Scaling은 해당 키 페어로 인스턴스를 시작합니다.

Selecting an Instance type, and Key par (login)

7. 네트워크 설정에서 기존 보안 그룹 옵션을 선택하고 EC2 인스턴스에 대한 보안 그룹 설정을 지정합니다. 이렇게하면 EC2 Auto Scaling이이 보안 그룹으로 인스턴스를 시작합니다.

EC2 인스턴스에 대한 새 보안 그룹을 만들고 싶다면 보안 그룹 생성 옵션을 선택할 수도 있습니다.

Selecting an existing security groups

8. 다른 기본 설정을 유지하고, 요약 토글 목록 아래에있는 “시작 템플릿 만들기”를 클릭하여 시작 템플릿을 만듭니다.

Creating the new launch template

9. 마지막으로, “템플릿에서 Auto Scaling 그룹 생성” 섹션 아래에있는 “Auto Scaling 그룹 생성”을 클릭하여 계속 진행합니다.

이후 섹션에서 하나씩 Auto Scaling 그룹을 생성하기 때문에 시작 템플릿 페이지를 닫지 마십시오.

Initiating creating an Auto Scaling group

AWS EC2 Auto Scaling 그룹 생성

이제 EC2 시작 템플릿이 있으므로 EC2 인스턴스를 포함하는 AWS EC2 Auto Scaling 그룹을 생성해야합니다. AWS EC2 Auto Scaling에는 헬스 체크 대체 및 스케일링 정책을 사용할 수있는 기능이 있습니다.

원한다면 여러 인스턴스로 Auto Scaling 그룹을 만들 수 있습니다. 그러나이 자습서에서는 Auto Scaling 작동 방식을 보여주기 위해 단일 인스턴스 Auto Scaling 그룹을 만듭니다.

1. 시작 템플릿 만들기 페이지에서 다음과 같이 Auto Scaling 그룹을 구성합니다.

  • Auto Scaling 그룹 이름 – Auto Scaling 그룹에 대한 이름을 입력하십시오 (ec2-autoscaling-group-demo). 이름은 AWS 리전 내에서 고유해야하며 최대 255자로 제한됩니다.
  • 시작 템플릿 – 드롭다운 목록에서 EC2 시작 템플릿을 선택하십시오 (ec2-autoscaling-template-demo).
  • 계속하려면 다음을 클릭하십시오.
Naming the AWS EC2 Auto Scaling group

2. 다음으로, 모든 기본 설정을 그대로 두고 Auto Scaling 그룹에 대한 기존 VPC와 서브넷을 선택하고 계속하려면 다음을 클릭하십시오.

이러한 설정을 지정하면 Auto Scaling 그룹이 EC2 인스턴스를 시작할 위치를 알 수 있습니다.

Selecting an existing VPC and subnet for your Auto Scaling group

3. 기본 설정을 유지한 채로 다음을 클릭하십시오.

Leaving other default settings

4. 이제 Auto Scaling 그룹의 그룹 크기를 다음과 같이 구성하십시오:

Capacity Limit Details
Desired 1 Set the number of instances you want in your Auto Scaling group. The desired capacity must be greater than or equal to the minimum capacity and less than or equal to the maximum capacity.
Minimum 1 Set the minimum number of instances in your Auto Scaling group. The value must be greater than or equal to 1 and less than or equal to the maximum capacity.
Maximum 1 Set the maximum number of instances you want in your Auto Scaling group.
Specifying the Auto Scaling group’s capacity

5. 아래로 스크롤하여 기본 설정을 유지한 채로 검토 건너뛰기를 클릭하여 계속하십시오.

  • 스케일링 정책 – 간단한 스케일링 정책을 사용할 것이므로 None 옵션을 선택한 상태로 유지하십시오. 이 정책은 그룹 내 이전 인스턴스가 종료되었을 때 Auto Scaling 그룹의 원하는 용량을 한 대의 EC2 인스턴스로 증가시킵니다.
  • 인스턴스 축소 보호 -이 자습서에서는 필요하지 않으므로이 옵션을 비활성화 상태로 유지하십시오. 이 옵션을 활성화하면 Auto Scaling 그룹이 스케일 인 시 인스턴스를 종료할 수 있는지 여부를 제어할 수 있습니다.
Keeping details settings for scaling policies and instance scale-in protection

6. 마지막으로, Auto Scaling 그룹 설정을 검토하고 Auto Scaling 그룹 생성(오른쪽 하단)을 클릭하여 Auto Scaling 그룹을 생성하십시오.

Creating the Auto Scaling group

일단 생성되면 아래에 표시된 것처럼 자동 스케일링 그룹이 나열됩니다.

Verifying the newly-created Auto Scaling group

AWS EC2 자동 스케일링 그룹 테스트

좋아요! EC2 인스턴스를 포함하는 AWS EC2 자동 스케일링 그룹을 만들었습니다. 그러나 자동 스케일링 그룹이 작동하는지 어떻게 알 수 있을까요?

AWS EC2 자동 스케일링 그룹이 하나의 EC2 인스턴스를 시작했는지 확인합니다. 이 인스턴스는 “AWS EC2 자동 스케일링 그룹 만들기” 섹션의 4단계에서 지정한 용량입니다.

1. 새로 생성한 자동 스케일링 그룹 옆의 확인란을 선택하고 활동 탭을 클릭하여 자동 스케일링 그룹의 모든 활동을 확인합니다.

하단의 활동 기록 섹션에서 최신 이벤트의 설명을 볼 수 있습니다. 이 경우 설명에는 새로운 EC2 인스턴스 시작, 성공 상태 및 인스턴스 ID (i-09b699064f6e06070)가 표시됩니다.

인스턴스 ID를 복사하여 다음 단계에서 인스턴스를 확인하는 데 사용합니다.

Viewing your activity history.

2. EC2 대시보드로 이동하여 첫 번째 단계에서 복사한 인스턴스 ID와 실행 중인 인스턴스 중 일치하는 인스턴스 ID를 비교합니다.

두 인스턴스 ID가 일치하는 경우 자동 스케일링 그룹이 EC2 인스턴스를 성공적으로 시작한 것입니다.

Comparing the instance ID

3. 자동 스케일링 그룹 페이지로 돌아가 인스턴스 관리 탭을 클릭하면 EC2 인스턴스에 대한 모든 정보를 한 곳에서 확인할 수 있습니다. 이 탭에서 가장 중요한 정보는 다음과 같습니다:

  • 라이프사이클 열 – Auto Scaling 그룹의 EC2 인스턴스가 서비스중 상태임을 확인할 수 있습니다. 이는 인스턴스가 요청을 처리할 수 있는 상태임을 나타냅니다.
  • 상태 체크 상태 열 – EC2 인스턴스의 상태 체크 상태가 정상임을 확인할 수 있으며, 이는 인스턴스가 모든 상태 체크를 통과하고 있다는 것을 나타냅니다.

EC2 인스턴스의 종료

Auto Scaling 그룹이 작동하는 것을 확인했으므로, 그룹 내의 EC2 인스턴스를 종료하여 Auto Scaling 그룹이 자동으로 새로운 EC2 인스턴스를 대체로 실행하는지 테스트할 수 있습니다.

실제 상황에서는, 자동 스케일링 그룹을 사용하여 변경되는 조건에 따라 자동으로 스케일링을 수행합니다. 언제? 예를 들어, NGINX 웹 서버 중 하나가 요청으로 과부하되어 다운될 위험이 있을 때입니다.

하지만 지금은 EC2 인스턴스가 실패하는 경우에 대비하여 수동으로 EC2 인스턴스를 종료하여 자동으로 대체되는 상황을 시뮬레이션하겠습니다.

1. 인스턴스로 이동하여 해당 인스턴스 옆의 확인란을 선택합니다.

선택한 후, 인스턴스 상태 드롭다운 메뉴를 클릭한 다음 → 인스턴스 종료를 선택하여 선택한 인스턴스를 종료합니다.

Terminating an EC2 instance

2. 다음으로, 인스턴스 종료를 확인하라는 메시지가 나오면 종료를 클릭합니다.

Confirming instance termination.

아래에서는 EC2 인스턴스가 성공적으로 종료되었음을 나타내는 메시지를 볼 수 있습니다.

자동 확장 그룹의 기본 쿨다운 기간은 300초(5분)입니다. 따라서 이전 인스턴스를 종료한 후에 새 인스턴스를 시작하기까지 최소 5분이 소요됩니다.

Verifying successful instance termination

3. 마지막으로, 새 인스턴스가 시작될 때까지 자동 확장 그룹의 활동 기록을 확인하세요.

아래에서 볼 수 있듯이, 새 EC2 인스턴스가 자동으로 시작되었습니다. 이 출력은 자동 확장 그룹이 예상대로 작동함을 확인합니다.

Checking a new EC2 instance is launched automatically

결론

애플리케이션의 부하를 처리하는 것은 원활한 실행을 유지하는 중요한 부분입니다. 다행히 AWS EC2 Auto Scaling을 사용하면 애플리케이션이 항상 변화하는 트래픽 패턴을 처리하는 데 필요한 리소스를 보장할 수 있습니다.

이 튜토리얼에서는 자동 확장 그룹을 생성하고, 그룹에 인스턴스를 시작하고, 변경된 조건에 대응하여 그룹을 확장하는 방법을 배웠습니다. 이제 애플리케이션에 대해 AWS EC2 Auto Scaling 그룹을 자신있게 생성할 수 있습니다.

이 새로운 지식을 바탕으로, 편의를 위해 AWS CloudFormation을 사용하여 자동 확장 그룹을 생성해보는 것은 어떨까요? 부하가 증가하고 수동으로 리소스를 프로비저닝할 필요가 없을 때, 나중에 스스로에게 감사할 겁니다!

Source:
https://adamtheautomator.com/ec2-autoscaling/