당신의 AWS 인스턴스 부하와 수신 트래픽을 모니터링하는 데 지쳤나요? 왜 Terraform 자동 확장 그룹을 배포하여 모든 것을 자동화하지 않으시겠습니까? 자동 확장은 낮은 부하 시에 일부 서버를 휴면 상태로 전환하고 높은 부하 시에 더 많은 서버를 추가하여 기업의 전력 비용을 절약합니다.
이 튜토리얼에서는 Terraform을 사용하여 Autoscaling 그룹을 구축하고 배포하는 방법을 자세히 알아보겠습니다.
계속 읽어보고 인스턴스의 다운타임을 제로로 달성하세요!
전제 조건
이 게시물은 단계별 튜토리얼이 될 것입니다. 따라오려면 다음 사항을 확인하십시오:
- Amazon Web Service (AWS) 계정.
- A code editor – Even though you can use any text editor to work with Terraform configuration files, consider using Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – 이 튜토리얼은 Terraform v1.1.5를 사용하며 Ubuntu 20.04 LTS에서 실행되지만 Terraform을 지원하는 모든 운영 체제에서 작동할 것입니다.
AWS Autoscaling 그룹을 위한 Terraform 구성 작성
인프라를 구축하고 배포하기 위해 Terraform 명령을 실행하기 전에 Terraform 구성 파일을 만들어야 합니다. 여러분은 AWS 계정 내에서 AWS Auto Scaling 그룹을 만들기 위한 Terraform 구성을 생성할 것입니다.
1. 좋아하는 SSH 클라이언트를 사용하여 로컬 머신에 로그인합니다.
2. 다음으로, ~/terraform-autoscaling-demo라는 폴더를 생성한 다음 작업 디렉토리를 해당 폴더로 변경합니다. 이 폴더에는 이 튜토리얼에서 작업할 모든 구성 파일이 포함됩니다.
3. 좋아하는 코드 편집기를 열고, 다음 구성을 복사하여 붙여넣은 다음 파일을 ~/terraform-autoscaling-demo 디렉토리에 main.tf라는 이름으로 저장합니다. 이 main.tf 파일은 Auto Scaling 그룹을 위한 Terraform 구성입니다.
아래 코드는 Auto Scaling 런치 구성 (web_config
)을 생성하고 Auto Scaling 그룹 (autoscalegroup
)을 프로비저닝합니다. Auto Scaling 그룹은 또한 구성 요소 (aws_autoscaling_schedule
및 aws_autoscaling_policy
)를 포함합니다.
4. ~/terraform-autoscaling-demo에 다른 파일을 만들어 provider.tf라고 이름 짓고 아래 내용을 채우십시오. provider.tf 파일에는 AWS, Oracle, Azure 등과 같은 공급자를 정의합니다. 이 구성 파일을 사용하면 Terraform을 올바른 클라우드 서비스와 연결할 수 있습니다.
튜토리얼에서는 us-east-1 지역에 리소스를 생성합니다. 그러나 AWS가 지원하는 지역 목록을 찾을 수 있습니다..
5. 마지막으로 아래의 tree
명령을 실행하여 프로젝트 폴더(~/terraform-autoscaling-demo
)에 필요한 모든 파일이 있는지 확인하십시오.

AWS Autoscaling 그룹을 Terraform 구성으로 생성하기
이제 Terraform 구성 파일과 변수 파일이 올바르게 설정되었으므로 Terraform을 시작하고 AWS Autoscaling 그룹을 생성할 시간입니다.
AWS Autoscaling 그룹을 프로비저닝하려면 다른 모든 Terraform 구성과 마찬가지로 Terraform은 세 가지 명령을 순서대로 사용합니다 (terraform init
, terraform plan
, 그리고 terraform apply
).
1. terraform init
명령어를 ~/terraform-autoscaling-demo 디렉터리에서 실행하십시오. 이 명령은 리소스와 작업하기 위해 필요한 플러그인 및 프로바이더를 초기화합니다.
모든 것이 순조롭게 진행되면 아래에 표시된대로 Terraform이 성공적으로 초기화되었다는 메시지가 출력됩니다.

2. 이제 terraform plan
명령을 실행하여 구성 파일의 구문이 올바르고 인프라에 프로비저닝 될 리소스의 청사진을 얻으십시오.
성공하면 아래와 같이 Plan이 표시되는 메시지가 표시됩니다.

3. 마지막으로 terraform apply
명령을 실행하여 훈련 바퀴를 제거하고 AWS AutoScaling 그룹을 생성하십시오.
이 명령은 Terraform에 각 구성 파일 (*.tf)을 읽도록 지시하여 AWS에 전송할 상태를 컴파일합니다. 그런 다음 Terraform은 AWS AutoScaling 그룹 및 기타 구성 요소를 빌드합니다.
AWS Auto Scaling에 대한 추가 비용은 없습니다. 응용 프로그램을 실행하는 데 필요한 AWS 리소스만 지불하면 됩니다.

AWS Cloud에서 AWS AutoScaling 그룹 확인
이제 Terraform으로 AWS AutoScaling 그룹 및 관련 구성 요소를 만들었을 것입니다. 그러나 AWS 클라우드에 실제로 존재하는지 어떻게 알 수 있을까요? AWS Management Console에서 수동으로 확인하여 AutoScaling 그룹을 확인하십시오.
1. 즐겨 사용하는 웹 브라우저를 열고 AWS Management Console에 로그인하십시오.
2. 콘솔의 홈 페이지에서 검색 상자를 클릭하고 ‘EC2’를 검색하여 EC2 대시보드에 액세스합니다.
EC2 대시보드에서 ‘AWS Auto Scaling 그룹’ 메뉴 항목을 클릭하여 Auto Scaling 그룹을 관리합니다.
아래와 같이 EC2 대시보드의 AWS EC2 인스턴스의 희망하는 수가 AWS Cloud에서 시작됩니다.

3. 마지막으로, EC2 대시보드에서 AWS Auto Scaling 시작 구성을 클릭합니다. 아래에 표시된 자동 스케일링 시작 구성(web_config)이 표시됩니다.

로드 테스트와 함께 EC2 인스턴스 자동 스케일링
이제 자동 스케일링 그룹/정책 및 관련 구성 요소가 올바르게 설정되어 있는지 확인했으므로, 자동 스케일링 기능이 작동하는지 테스트해야 합니다. 어떻게? 자동 스케일링 그룹으로 최근에 시작된 인스턴스에 부하를 추가함으로써.
1. SSH 클라이언트를 사용하여 자동 스케일링 그룹으로 시작된 AWS EC2 인스턴스를 엽니다.
2. 그다음 터미널을 실행하고 아래 명령을 실행하여 로드 스트레스 도구
(stress-ng
)를 설치합니다. stress 도구를 사용하면 Ubuntu 기계에 스트레스를 정의하고 생성할 수 있습니다.
시장에서 다른 로드 스트레스 도구를 찾을 수도 있습니다.

3. 아래의 stress-ng
명령을 실행하여 인스턴스에 스트레스 부하를 생성합니다.
아래 명령어에는 다음과 같은 플래그가 포함되어 있습니다:
--cpu
– 부하가 생성될 코어의 수를 나타냅니다.
-v
– 자세한 모드를 활성화합니다.
--timeout
– 생성할 부하의 시간을 지정합니다.

4. 부하를 생성한 후에 Linux 프로세스를 표시하려면 아래의 top
명령을 실행하세요.
아래에서 인스턴스에 부하를 생성한 후 CPU가 급격히 상승하는 것을 볼 수 있습니다.

5. AWS 클라우드워치 서비스로 이동하세요. CPU가 (10%)를 넘어서 알람이 생성된 것을 알 수 있습니다. 이 알람은 오토스케일링 그룹에게 한 개에서 두 개로 인스턴스 수를 확장하도록 지정된 대로 알립니다.

6. 마지막으로 EC2 대시보드에서 인스턴스로 이동하여 AWS EC2 인스턴스를 확인하세요.
하나의 인스턴스가 더 시작된 것을 볼 수 있으며, 이는 AWS 오토스케일링 그룹 및 구성 요소의 성공적인 설정을 확인합니다.

또한 아래에 표시된대로 AWS 오토스케일 그룹 활동을 확인할 수 있습니다.

결론
이 튜토리얼에서는 AWS 오토스케일링 그룹 및 그 구성 요소를 배포하는 방법을 배웠습니다. AWS 오토스케일링 그룹을 사용하여 필요할 때 확장할 수 있는 오토스케일링 애플리케이션을 구축하는 방법을 살펴보았습니다.
{
“error”: “Upstream error…”
}
Source:
https://adamtheautomator.com/terraform-autoscaling-group/