EC2 인스턴스 타입을 변경할 때 주의사항

AWS EC2 의 인스턴스 타입 변경에 대해 작성한 글입니다
2023.05.10

안녕하세요 클래스메소드의 수재입니다.
EC2를 사용하다보면 예상치보다 사용량이 저조하거나 혹은 변해가는 서비스에 따라 더 높은 스펙의 인스턴스 타입으로 바꿔야하는 일이 종종 생기고는 합니다.
이번 글에서는 인스턴스 타입을 변경할 때의 주의사항에 대하여 알아보도록 하겠습니다.

EC2 인스턴스 타입을 변경하는 방법

우선 타입의 변경 방법을 간단하게 알아보겠습니다.

변경 전 준비

인스턴스 타입에 따라 가상화, 아키텍쳐, NVMe 지원 등 호환성이 달라집니다.
변경 전과 변경 후의 인스턴스 타입을 비교하여 호환성에 문제가 없는지 먼저 확인합니다.
호환성에 따라 AMI의 변경도 고려해야합니다.

공식 문서에 기재되어 있는 호환성에 대한 고려사항도 확인해주세요

마지막으로 데이터를 백업하는 것으로 변경 준비는 끝입니다.

인스턴스 타입 변경

타입의 변경은 AWS EC2 콘솔에서 조작이나 CLI로 변경할 수 있습니다.

변경 방법은 다음 페이지를 참고해주세요.(호환성에 따라 변경 방법이 조금 다릅니다)

호환성에 따라 맞는 변경 방법을 선택하여 타입을 변경합니다.

인스턴스의 정지, 재시작을 피하고 싶다면

가동중인 인스턴스의 AMI를 작성한 후 원하는 인스턴스 타입으로 작성하는 방법이 있습니다.
상황에 따라 기존 인스턴스에서 네트워크나 로드 밸런싱 등의 환경을 그대로 가져옵니다.

타입 변경 시에 발생하는 에러

타입을 변경하다보면 에러가 발생하는 경우가 더러 있습니다.
우선 공식 문서에서도 트러블 슈팅에 대한 내용은 기재되어 있습니다.

문서에 기재되지 않은 에러에 대해 간단히 설명하겠습니다

EBS 최적화가 문제인 경우

Requested configuration is currently not supported. Please check the documentation for supported configurations.

라는 에러가 발생하는 경우 EBS 최적화가 문제일 가능성이 있습니다.
원래는 EBS 최적화가 지원되는 인스턴스(m6i 등)에서 지원하지 않는 인스턴스 타입(t2) 등으로 변경하는 경우 해당 에러가 발생합니다.

EBS 최적화를 지원하는지 여부는 다음 공식 문서를 참고해주세요.

해결 방법은 EBS 최적화를 진행하는 인스턴스 타입으로 인스턴스를 생성하거나 EBS 최적화 옵션을 비활성화하면 됩니다.(콘솔로 타입을 변경하는 경우에는 자동으로 비활성화되며 CLI로 변경하는 경우에 이러한 비활성화를 명시하는 옵션이 필요합니다)

AZ에서 해당 인스턴스 타입을 지원하지 않는 경우

Your requested instance type (r6i.xlarge) is not supported in your requested Availability Zone (ap-northeast-2a). Please retry your request by not specifying an Availability Zone or choosing ap-northeast-2a, ap-northeast-2c.

라는 에러가 발생한다면 해당 AZ에서 해당 인스턴스 타입을 지원하지 않는 경우입니다

생성하려는 인스턴스 타입을 어떤 AZ에서 지원하는지는 콘솔이나 CLI 를 통하여 알 수 있습니다.
방법은 다음 공식 문서를 참고해주세요.

해결 방법은 지원하는 AZ를 선택하여 인스턴스를 생성하면 됩니다.

인스턴스 타입이 부족한 경우

인스턴스를 정지시키고 타입을 변경한 후에 인스턴스를 시작해보니

An error occurred (InsufficientInstanceCapacity) when calling the RunInstances operation (reached max retries: 4). We currently do not have sufficient capacity in the Availability Zone you requested

라는 메시지를 받고 [Insufficient Instance Capacity] 라는 상태가 되며 인스턴스가 시작되지 않는 경우가 있습니다.
이는 온디맨드로 실행할 수 있는 해당 인스턴스 타입이 남아있지 않는 경우입니다.

해결 방법으로는

  • 어느정도 기다렸다가 다시 시도해보기
  • 다른 인스턴스 타입으로 생성하기
  • 가용 영역을 지정하지 않고 생성 -- 이 경우 원하는 가용 영역으로 다시 생성해야하는 경우가 생길 수도 있습니다

해당 인스턴스 타입이 워크 플로에서 중요한 영역이라면 용량 예약을 하는 것이 좋습니다.

CPU의 아키텍쳐 타입이 다른 경우

xxx.yyyyyy' is not a valid instance type for instance 'i-xxxxxxxxxxxxxxxxxxxx' of architecture 'x86_64'.

라는 에러가 발생하는 경우에는 변경 전과 변경 후의 CPU 아키텍쳐 타입이 다른 경우입니다.
같은 유형을 선택하도록 합니다

ENA를 지원하지 않는 경우

Enhanced networking with the Elastic Network Adapter (ENA) is required for the ‘{인스턴스 타입}’ instance type. Ensure that your instance ‘i-xxxxxxxxxxxxxxxxxx’ is enabled for ENA

NITRO 세대 인스턴스 타입으로 변경하는 경우 위와 같은 에러가 발생한다면 ENA support 가 문제일 가능성이 있습니다.

AWS에서 제공하는 대부분의 AMI에는 ENA 모듈이 포함되어 있으며 ENA 지원이 활성화되어 있습니다.
하지만 커스텀 AMI라면 해당 모듈이 포함되어 있지 않을 가능성도 있습니다.
지원하지 않는 상태로 인스턴스 타입을 변경하면 위와 같은 에러가 발생하며 인스턴스가 시작되지 않습니다.

현재 인스턴스가 ENA를 지원하는지 알아보는 방법은 다음 문서를 참고해주세요

해결 방법으로는 현재의 인스턴스에 ena 모듈을 설치하고 향상된 네트워킹 기능을 활성화 한 후 인스턴스 타입을 변경하면 됩니다.

개별적으로 DNS 서버를 구현해서 이용하는 경우

EC2 인스턴스 유형을 변경할 때 경우에 따라 Windows 네트워크 어댑터에 대해서도 변경이 발생합니다.
이 때 개별적으로 설정한 DNS 서버 설정이 재설정될 수 있습니다.
보통 위에 설명한 ENA 변경이 원인인 경우가 많습니다.

이러한 네트워크 어댑터 변경에 의한 DNS 서버 설정의 리셋에 대비하기 위해서 VPC의 DHCP 옵션 세트를 설정하는 것을 추천합니다.

마무리

인스턴스 타입을 변경하는 작업 자체는 매우 간단하지만 전후로 준비해야 할 사항이나 예상 밖의 에러가 일어나기도 합니다.
워크플로에는 영향이 없도록 작업 전후에 제대로 체크 한 후에 작업을 시행하도록 합시다.