본문 바로가기
Amazon Web Service

[AWS] Terraform으로 대량의 EC2생성 시 발생하는 Capacity 에러, Service Quotas 그리고 EC2 시작 또는 생성 시 발생하는 문제 해결 및 개념 정리

by 클수저 2024. 4. 29.
728x90
반응형
최근에 Terraform으로 약 200개의 EC2를 한번에 생성하다가 62개까지 생성 후, 생성하지 않는 오류가 발생했다.

그래서 관련해서 개념을 찾고 정리하기 위해서 블로그를 정리해보려한다.

 

에러는 다음과 같다.

에러의 내용을 대략적으로 해석하자면,

AWS에서 특정 가용영역(AZ)에 t2.xlarge Instance에서의 gp3 타입의 EBS 볼륨이 장착된 t2.xlarge를 만들 capacity가 부족 리소스가 없다는 뜻이다.
즉, EC2 만들때 root volume 타입에서 리소스가 부족!

결국 해당 가용영역에서 EC2가 생성이 어렵다는 내용이다.

사실 조금은 놀라웠다. AWS에서 생성할 수 있는 서버가 제한이 되어있는건가? 메가급 기업의 AWS에서 EC2가...?

 

AWS문제이기 때문에 AWS 공식사이트에 정리 된 내용을 정리해봤다.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshooting-launch.html#troubleshooting-launch-devicename

 

Troubleshoot instance launch issues - Amazon Elastic Compute Cloud

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 

나와 가장 유사한 트러블슈팅의 내용이다.

AWS 계정마다 지역별로 생성 할 수 있는 인스턴스 수가 제한이 된다.

그 할당량을 알 수 있는 서비스가 바로 Service Quotas 이다.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html

 

Amazon EC2 service quotas - Amazon Elastic Compute Cloud

Amazon EC2 service quotas Amazon EC2 provides different resources that you can use. These resources include images, instances, volumes, and snapshots. When you create your AWS account, we set default quotas (also referred to as limits) on these resources o

docs.aws.amazon.com

 

Quotas는 다음과 같은 유형을 확인 할 수 있다.

  1. 가변 할당량(Adjustable Quotas): 이 할당량은 AWS 지원팀에 요청하여 늘릴 수 있다. 예를 들어, EC2 인스턴스 수, ELB 수, VPC 수 등이 이에 해당.
  2. 자동 증가 할당량(Automatically Increasing Quotas): 이 할당량은 자동으로 증가할 수 있으며, 사전에 증가를 요청할 필요가 없습니다. 예를 들어, AWS Lambda 동시실행 수, DynamoDB 프로비저닝된 처리량 등이 이에 해당한.
  3. 고정 할당량(Fixed Quotas): 이 할당량은 변경할 수 없으며, 고정된 값입니다. 예를 들어, EC2 인스턴스의 볼륨 수, VPC의 라우팅 테이블 수 등이 이에 해당.

AWS는 기분적으로 리전(Region) 개념이 존재하는데, 

AWS의 자원(리소스)은 대부분 regional
그래서 DR(Disaster Recovery)란 개념이 존재


여기서 위에 오른쪽 화면처럼 EC2 갯수가 29개 아니다!!! 마치 용산전자 상가를 가서 컴퓨터 26개 주세요 하는 물리적은 29개의 컴퓨터 갯수가 아니다! 절대로 헷갈리면 안된다.

AWS의 EC2의 종류가 다양한 것 처럼, 쿼터(종류)가 다양한 것이다! 

 

즉, 왼쪽에 EC2에 숫자가 29개 라는 것은 EC2의 '쿼터(종류)'가 29개이다.

👉 AMI할당량, 스팟인스턴스 요청, Elastic IPs, AMI sharing 등... 이러한 쿼터(종류) EC2에서 받을 수 있는 서비스가 29개!

 

지금까지 EC2생성 시 발생한 문제들에서 확인해볼 수 있는 개념을 정리했다.

그렇다면, 생성 시 해결할 수 있는 솔루션을 아래에 정리해보려 한다.


솔루션1 👉🏻 가용영역 분리를 통한 분산생성! 

EC2 생성 시, 가용영역을 분리해서 코드 작성 후 다량의 EC2 생성 시 분산생성을 진행.

가용영역을 구분하지 않으면 Terraform 코드에서 인식 후, AWS에서는 EC2를 랜덤하게 가용영역에 분배한다.

결국 위에서 에러가 Capacity문제라는 점에서 가용영역 a에서 50개를 생성하고, b에서 20개 그리고 c에서 생성하던 와중 c에 인스턴스가 부족하여 중도에 생성하다가 멈춘 것이다.

 

그렇기 때문에 EC2가 온전히 생성되지 않는 것이다. 하지만, 여기서 문제! 분산 생성해서 200개를 생성한다 한들 200개에 대한 과금이 발생! 👉🏻 EC2 중지 후, 사용!

 

솔루션2👉🏻 온디멘드 용량 생성 활용!

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html

 

온디맨드 용량 예약 - Amazon Elastic Compute Cloud

온디맨드 용량 예약 온디맨드 용량 예약을 사용하면 특정 가용 영역의 Amazon EC2 인스턴스에 대해 원하는 기간만큼 컴퓨팅 용량을 예약할 수 있습니다. 용량 예약을 사용하면 용량의 제약이 있는

docs.aws.amazon.com

AWS EC2서비스에서 온디맨드 용량 예약이 있다.공식사이트에는 아래와 같이 설명이 되어있다. 

특정 가용 영역Amazon EC2 인스턴스에 대해 원하는 기간만큼 컴퓨팅 용량을 예약할 수 있습니다. 용량 예약을 사용하면 용량의 제약이 있는 경우 온디맨드 용량을 확보하지 못할 위험을 줄일 수 있다.

할당량

  • 용량 예약이 가능한 인스턴스 수는 계정의 온디맨드 인스턴스 할당량을 기반

 

해당 솔루션의 가장 큰 단점이 존재한다! 할인X, 예약 시, 예약한 만큼의 용량 과금이 발생! 

 

위와 같이 AWS EC2 생성 시 발생하는 문제와 필요한 개념 솔루션을 정리해보았다.

728x90
반응형