CloudFormation으로 EC2 인스턴스 생성 시 발생하는 EC2 중지 문제, 무엇이 문제일까?

CloudFormation으로 EC2 인스턴스 생성 시 발생하는 EC2 인스턴스 중지 문제, 무엇이 문제인지 확인해 봤습니다.
2024.01.16

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 CloudFormation으로 EC2 인스턴스 생성 시 발생하는 EC2 인스턴스 중지 문제, 무엇이 문제인지 확인해 봤습니다.

문제 발생

CloudFormation 스택은 문제 없이 생성됩니다.

생성된 EC2 인스턴스를 확인해 보면, 중지된 것을 확인할 수 있습니다.

EC2 인스턴스를 실행시키면, 다시 중지 상태로 되돌아옵니다.

문제 해결

문제 원인은 EBS 볼륨의 디바이스 이름에 있습니다.

현재 사용하고 있는 EC2 인스턴스의 OS는 Amazon Linux 2 AMI (HVM)를 이용하고 있으며, EBS 볼륨의 디바이스 이름은 /dev/sda1로 지정하고 있습니다.

OS 혹은 AMI에 따라 지정해야 하는 EBS 볼륨의 디바이스 이름은 다르며, 잘못된 디바이스 이름을 지정한다면 EC2 인스턴스를 실행할 수 없습니다.

먼저 Windows의 경우 드라이버 유형에 따라 사용가능한 디바이스 이름이 나누어집니다.

AWS 공식 문서에서는 Windows에서 사용할 수 있는 디바이스 이름을 다음과 같이 안내하고 있으며, 드라이버 유형에 따라 사용가능한 디바이스 이름이 나누어집니다.

Windows에서는 현재 표준으로 AWS PV 드라이버가 설치되어 있기 때문에 AWS PV 유형에 따라 디바이스 이름을 지정합니다.

Linux의 경우 가상화 유형에 따라 디바이스 이름이 나누어집니다.

가상화 유형은 반가상화(Paravirtualization)와 전가상화(Hardware Virtual Machine)로 나누어지는데, 전가상화는 하드웨어를 완전히 가상화 하는 방식을 의미하며, 반가상화는 하드웨어를 완전히 가상화하지 않은 상태를 의미하며, AWS에서는 현재 전가상화에 대해 적극 지원하고 있으며, 최상의 성능을 위해 전가상화를 사용하는 것을 권하고 있습니다.

실제로 AWS 콘솔 화면에서 확인해 보면, AMI 선택 시 가상화 유형을 확인할 수 있습니다.

이번에 생성한 EC2 인스턴스의 경우 전가상화이며, 전가상화는 /dev/sda1 혹은 /dev/xvda가 루트 볼륨용으로 예약되어 있지만, 사용할 AMI에 따라 디바이스 이름이 달라지게 됩니다.

AMI를 선택한 다음, EBS 볼륨을 살펴보면, 디바이스 이름이 /dev/sda1가 아닌 /dev/xvda로 지정되어 있는 것을 확인할 수 있습니다.

디바이스 이름을 수정한 다음, CloudFormation 스택을 생성하면 문제 없이 EC2 인스턴스가 실행되는 것을 확인할 수 있습니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 kis2702@naver.com로 보내주시면 감사하겠습니다.