EC2 인스턴스 유형 변경하기

AWS

Posted 2024.11.29 08:00

By recoma

개요

사이드 프로젝트나 실무에서 대부분 서버를 돌릴 때 AWS EC2 인스턴스를 사용한다. 그런데, 사용하다 보면 인스턴스의 스펙을 올리거나 내려야 할 상황이 생긴다. 예를 들어 운영하고 있는 서버에 사용자가 증가하면서 트래픽이 많아지게 되고, 트래픽이 많아지게 되면서 CPU, RAM 사용량이 기하급수적으로 증가하게 된다면, 인스턴스 스펙을 올리는 스케일 업(Scale Up)을 고려해야 한다. (로드밸런싱을 적극 사용하고 있다면 서버 대수를 늘리는 스케일 (Scale Out)을 할 수도 있겠지만. 이번 포스트에서는 이게 주제가 아니므로 패스…). 혹은 사용 대비 비용이 너무 많이 들어가 돈낭비가 지속된다면 반대로 서버 스펙을 줄일 필요가 있다.


순수 자체 구축된 컴퓨터를 사용하고 있다면, CPU또는 RAM을 직접 갈아끼워야 하는 수고가 만만치 않은 데다, 마더보드하고 호환되지 않을 경우 전체를 다 들어내야 하는 등, 많은 인력이 소모될 것이다. 하지만 AWS, Azure 같은 클라우드 서비스를 사용하고 있다면, 마우스 몇번 깔딱으로 스펙을 바꿀 수가 있다. 이번 포스트에서는 EC2의 유형을 변경하는 방법에 대해 설명한다.

EC2 유형 변경하기

변경 전 점검사항

EC2 유형을 변경한다는 것은 마치 본체를 갈아 끼운다는 것과 같다. 그렇기 때문에 유형을 변경하기에 앞서 몇가지 점검해야 할 사항이 있다.

Public IP 변동 여부

EC2를 사용해 봤다면 당연히 알고있겠지만, 유형을 변경하기에 앞서 서버를 내리게 된다. 그리고 다시 올리게 되면 Public IP가 변경된다. Elastic IP를 사용하고 있다면 문제가 없겠지만, 그렇지 않다면 IP가 바뀜으로서, 영향이 가는 AWS 서비스가 있는지 검토해야 한다. 대표적으로 여러 인스턴스들을 연동해서 트래픽 분산을 해주는 ALB(어플리케이션 로드밸런싱)가 있고, 해당 서버와 통신하고 있는 다른 서버 및 클라이언트가 이에 해당된다. 단, ALB를 포함한 다른 AWS 서비스들이 EC2를 연동할 때 IP가 아닌 Instance ID를 사용하고 있다면 IP가 어떻게 바뀌든 간에 영향이 가지 않는다.

EC2 내의 스토리지(디스크)가 EBS인지 확인하기

EC2의 스토리지 유형은 크게 두 가지가 있다. 하나는 EBS(Elastic Block Store)이고 다른 하나는 인스턴스 스토리지(Instance Storage)이다. EBS는 EC2와 분리되어 있는 하드디스크 개념으로 EC2가 종료되어도 EBS에 있는 내용은 변경사항이 없지만, 인스턴스 스토리지는 말 그대로 EC2내 부착되는 스토리지이기 때문에 EC2를 종료하는 순간 모든 데이터가 사라지게 된다. 따라서 후술하겠지만, 인스턴스 변경에 앞서 데이터에 대한 백업이 반드시 필요하다.


EC2가 사용하고 있는 스토리지의 유형을 확인하는 방법은 아래와 같다.

  1. EC2 접속
  2. 명령어 sudo apt install nvme-list 실행
  3. 명령어 nvme list 실행

nvme list를 실행하면 보통 아래와 같이 터미널에 출력이 된다.

Node           SN                  Model                                    
------------- -------------------- ---------------------------
/dev/nvme0n1  vol074ab31681a94fc83 Amazon Elastic Block Store              


Model 부분에서 Amazon Elastic Block Store라고 출력되어있다면 EBS가 되고, 그렇지 않다면 인스턴스 스토리지다.

아키텍처 체크

arch-list

CPU 아키텍처가 Intel x86인지 AMD인지 아니면 다른 것인지 파악을 해야 한다. 유형에 따라 아키텍처가 달라지는데, 이를 고려하지 않고 변경을 하게 된다면, 서비스 운영에 있어 장애를 경험할 수 있다. 예를 들어 Docker의 경우, ARM 계열의 MacOS에서 DockerFile로 이미지를 만들고 x86 계열의 EC2 인스턴스에서 해당 이미지를 생성해서 사용하려면 DockerFile의 맨 위에 아래와 같이 작성해야 한다. 아키텍처가 서로 다르기 때문이다.

FROM --platform=linux/amd64 <이미지 유형>

백업본 만들기 (EBS 기준)

앞서 서술했듯이 인스턴스를 갈아까우면서 스토리지 상에서 혹여 발생하는 문제들에 대해 대비하기 위해 백업본을 미리 만들어야 한다. EBS와 인스턴스 스토리지 둘다 해당이 되지만, 대부분 EBS를 사용하기 때문에 EBS 위주로 설명한다.

  1. ECS Instances에서 Instance ID를 클릭한다. backup-1
  2. Storage 탭에서 Volume ID를 클릭한다. backup-2
  3. Action 탭에 Create snapshot을 클릭한다. backup-3
  4. 필요한 설명을 적고 하단의 Create Snapshot을 클릭하면. backup-4
  5. EBS의 백업본인 Snapshot이 하나 추가가 되고, “Create volume” 버튼을 통해 언제든지 백업본을 생성할 수 있다. backup-5

EC2 유형 변경하기

  1. 유형을 변경하기에 앞서 EC2 인스턴스를 Stop(멈춤) 한다. 절대 Terminate(종료)를 해서는 안된다. change-1
  2. actions -> instance settings -> change instance type 으로 진행한다. change-2
  3. 이제 원하는 인스턴스 유형을 고른다. 변경 전과 이후의 인스턴스 스펙 리스트가 있으니 꼭 확인하자. 결정이 됐으면 하단의 Change 버튼을 누른다. change-3
  4. 변경 성공, 이제 인스턴스를 켜서 데이터가 그대로 있는지, 서비스가 정상작동이 되는지 확인을 하면 된다. change-4

마치며

서비스를 운영하다 보면 사용자 및 트래픽의 증가에 따라, 혹은 비용 절감을 위해 서버 인스턴스의 스펙을 올리거나 내리는 순간이 꼭 한번쯤은 찾아온다. 현장에서 직접 서버의 스펙을 바꾸려면, 본체내 장비들을 일일이 교체해야 함은 물론, 교체 이후의 세팅을 일일이 해야 한다. 하지만, AWS EC2는 이러한 작업을 고작 마우스 딸깍 몇번으로 해결을 해준다.


그러나, 이런 행위는 사실상 서버 본체를 갈아끼우는 것과 같기 때문에, 내부 스토리지의 데이터가 초기화 되거나, Public IP가 뒤바뀌면서, 서비스 작동에 장애를 안겨줄 수 있다. 그렇기 때문에 AWS EC2 인스턴스 스펙을 바꾸기 전에, 바뀌게 되면 영향이 가는 요소들을 반드시 확인하고, 변경 이후에도 서비스가 정상작동을 하는지에 대한 모니터링이 정말정말 필요하다.