티스토리 뷰

SW 개발/CentOS

Amazon EC2, 인스턴스 생성하기

지단로보트 2020. 7. 9. 00:49

개요

  • Amazon EC2AWS 생태계에서 가장 많이 사용되는 가상 서버 솔루션이다. 일반적인 가상 서버 호스팅과 동일하게 최초 인스턴스를 생성하면 운영체제의 root 권한을 받아 거의 모든 것을 물리 서버에서 했던 것과 동일하게 작업할 수 있다. 엔터프라이즈 레벨의 마이크로서비스를 배포, 운영하는 목적에 적합하다.
  • Amazon EC2의 장점은 부하 증가에 대비한 Auto Scaling 기능의 제공이다. 부하 증가가 필요한 Amazon EC2 인스턴스를 그룹으로 묶어 오토 스케일링의 최소, 최대 인스턴스 수를 설정하면 부하 수준에 따라 자동으로 인스턴스의 수를 조절해준다. [관련 링크]
  • Amazon EC2AWS 가입 후 최초 1년까지만 무료로 사용 가능한 제한적 프리 티어 상품에 해당한다. 최초 가입 후 1년 이내라면 인스턴스 생성시 t2.micro(CPU 코어 수 1개, 메모리 1GB)를 선택하여 매월 750시간을 무료로 사용할 수 있다.

EC2 인스턴스 유형

  • 일반적인 애플리케이션 운영으로 가장 권장되는 것은 앞자리가 T로 시작되는 인스턴스 유형이다. T2, T3, T3a 인스턴스 유형이 존재하는데 CPU 크레딧이라는 개념이 존재한다. CPU 개수당 기준 성능을 두어(t3a.xlarge는 40%) 평소 이 기준 성능 이하로 작동할 경우 CPU 크레딧을 적립하고(t3a.xlarge는 시간당 96크레딧, 최대 2,304크레딧) 기준 성능을 초과하여 작동할 경우 CPU 크레딧을 소모한다. (CPU 1개당 1분당 1크레딧) 모든 CPU 크레딧이 소모되면 기준 성능으로만 작동한다. (또는 무제한 모드로 변경하여 초과 작동에 대해 제한 없이 사용하고 추가 요금을 지불하는 방법도 있다. 콘솔 페이지에서 대상 인스턴스 선택 후 작업인스턴스 설정Change T2/T3 Unlimited를 클릭하면 적용된다.) 콘솔 페이지의 모니터링 메뉴에서 사용량과 적립량을 확인할 수 있다.
  • 2018-11 서울 리전에 T3 3세대 인스턴스가 추가되었다. T2 대비 10%의 비용 절감 효과가 있어 새롭게 시작하는 인스턴스에 추천할만 하다.
  • 2019-04 서울 리전에 T3a 3세대 인스턴스가 추가되었다. T3와 같은 특징을 가지면서 AMD EPYC 기반 아키텍쳐를 기반으로 한다. T3보다 10% 저렴하다.

Amazon EC2 요금제

  • Amazon EC2 요금은 기본적으로 시간 단위로 과금된다. 인스턴스를 생성하고 1분만 사용하더라도 1시간의 사용료를 과금한다. 또한 인스턴스 사용 과금 외에 아웃바운드 트래픽에 대해 과금한다는 것을 잊지 않아야 한다.(인바운드 트래픽은 무료이다.)
  • Amazon EC2 요금제는 2개로 분류된다. 먼저 시간 단위로 사용료를 과금하는 온디맨드 요금제가 있다. 언제든지 인스턴스를 종료하면 과금 또한 중단되어 비지니스가 확실한 기간 시스템의 운영 목적으로 적합하다는 장점이 있다. 단점은 비용이 가장 많이 발생하는 요금제라는 것이다.
  • 두번째는 RI(예약 인스턴스) 요금제가 있다. 1년치 또는 3년치를 장기 계약하고 과금하는 일종의 정액제라고 볼 수 있는데 온디맨드 대비 최대 75%까지 비용이 저렴하다는 장점이 있다. (요금의 전부 또는 일부를 선결제하면 추가 할인 또한 가능하다. 3년 약정, 전체 선결제가 가장 저렴하다.) 단점은 계약 기간 동안은 인스턴스를 종료해도 환불이 되지 않고 과금되기 때문에 불확실한 비지니스에 적합하지 않다는 것이다. [관련 링크]
  • RI를 구매하는 방법은 AWS 콘솔에서 EC2 선택 → 왼쪽 메뉴에서 예약 인스턴스 클릭 → 예약 인스턴스 구매 버튼을 클릭하여 진행하면 된다. 구매가 완료되면 작동 중인 온 디맨드 인스턴스에 자동으로 RI 요금제가 최우선으로 적용된다. [관련 링크]
  • 한편, Savings Plans은 2019-11-06 새로 출시된 요금제이다. RI 요금제가 개별 EC2 인스턴스에 대한 약정이라면 Savings Plans는 전체 EC2 인스턴스 그룹군에 대한 약정이다. 약정한 전체 컴퓨터 사용량을 초과하지 않는 범위 내에서 EC2 인스턴스를 자유롭게 변경할 수 있으면서 RI 요금제와 거의 동일한 수준(최대 72%)으로 비용을 절약할 수 있다는 장점이 있다. [관련 링크]

인스턴스 생성

  • EC2 인스턴스를 생성하는 방법은 매우 간단하다. EC2 콘솔 페이지에서 아래와 같이 진행한다.
Amazon EC2 콘솔 페이지 접속 → [인스턴스] 클릭
→ [인스턴스 시작] 클릭
→ 단계 1: Amazon Machine Image(AMI) 선택
→ Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0bea7fd38fabe821a 선택
...
→ [인스턴스 시작] 클릭
  • 새로운 인스턴스를 시작하면 Amazon Machine Image(AMI)라고 불리우는 운영체제 템플릿을 선택할 수 있다. 다양한 템플릿이 제공되는데 물리 서버에서 CentOS를 운영하던 개발자의 경우 Amazon Linux 2 AMI(AmazonRHEL을 기반으로 제작한 리눅스로 CentOS 7과 완전히 동일하지는 않지만 유사)를 선택하면 된다.
  • 생성 과정에서 유의해야할 부분은 원격지에서 SSH로 해당 인스턴스에 접속하는데 필요한 키 페어를 지정하는 부분이다. 키 페어를 새로 생성하거나 또는 기존 것을 선택하거나 절대로 해당 키 페어 파일을 분실하면 안된다. 분실할 경우 해당 인스턴스에 접속할 방법이 없으니 중요한 저장소에 잘 보관하여 관리해야 한다. 생성된 인스턴스는 해당 키 페이를 이용하여 ec2-user 사용자로 로그인이 가능하다.

인스턴스 복제 생성

  • 기존에 존재하는 EC2 인스턴스의 이미지를 생성하면, 해당 이미지를 사용하여 내용이 동일한 복제 인스턴스를 생성할 수 있다. 먼저 이미지 생성 방법은 아래와 같다. 이미지 생성에는 약 10분 내외가 정도가 소요된다. (새로 생성된 이미지는 아래 방법으로 [이미지] → [AMI] 메뉴에서 확인할 수 있다.)
Amazon EC2 콘솔 페이지 접속 → [인스턴스] 클릭
→ 복제할 인스턴스 선택 → 작업 → 이미지 → 이미지 생성
→ 재부팅 안 함: [활성화] 체크 (원본 인스턴스의 재부팅을 방지)
  • 생성된 이미지로부터 복제 인스턴스를 생성하는 방법은 아래와 같다.
Amazon EC2 콘솔 페이지 접속 → [인스턴스] 클릭
→ [인스턴스 시작] 클릭
→ 단계 1: Amazon Machine Image(AMI) 선택 → [나의 AMI] 클릭
→ 앞서 생성한 이미지 선택 후 [선택] 클릭
...
→ [인스턴스 시작] 클릭

인스턴스 유형 변경

  • 최초 생성한 EC2 인스턴스의 유형을 변경하는 것은 언제든지 가능하다. 지원하는 모든 종류의 유형으로 변경할 수 있다. 다만, 인스턴스 중지 상태에서만 유형 변경이 가능한데 이로 인해 퍼블릭 IP 주소가 변경되는 것도 감안하여 진행해야 한다.
Amazon EC2 콘솔 페이지 접속 → [인스턴스] 클릭
→ 유형 변경할 인스턴스 선택 → 작업 → 인스턴스 상태 → 인스턴스 중지
→ 작업 → 인스턴스 설정 → 인스턴스 유형 변경
→ 작업 → 인스턴스 상태 → 인스턴스 시작

EBS 볼륨 크기 수정

  • 운영 중인 EC2 인스턴스의 EBS 볼륨이 부족할 경우 어떻게 해야 할까? 다행히도 무중단으로 볼륨 크기를 증가시킬 수 있다. 먼저 EC2 콘솔 페이지에서 아래와 같이 볼륨을 수정한다.
Amazon EC2 콘솔 페이지 접속 → [볼륨] 클릭
→ 크기를 수정할 볼륨 클릭 후 [작업] 클릭 → 볼륨 수정 → 크기: (기존 값에서 수정) → [수정] 클릭
  • 볼륨 수정 후에 추가적으로 EC2 인스턴스 내의 운영체제에도 반영하는 작업이 필요하다. 아래는 Amazon Linux 2 AMI에서 무중단으로 수정된 볼륨 크기를 반영하는 방법이다. (기존 8GB를 16GB로 수정하는 상황을 가정했다.)
# 현재 볼륨 크기 확인
$ df -h
/dev/nvme0n1p1  8.0G  7.8G  248M  97% /

# 현재 볼륨의 파일 시스템 종류 확인
$ lsblk -f /dev/nvme0n1
NAME          FSTYPE LABEL UUID                                 MOUNTPOINT
nvme0n1
├─nvme0n1p1   xfs    /     e75a1891-3463-448b-8f59-5e3353af90ba /
└─nvme0n1p128

# 현재 볼륨의 마운트 현황 확인
$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  16G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

# 볼륨 크기 증설
$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=33550303 end=33554399

# 파일시스템 크기 증설
$ sudo xfs_growfs /dev/nvme0n1p1
meta-data=/dev/nvme0n1p1         isize=512    agcount=4, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=2096635, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096635 to 4193787

# 반영된 볼륨 크기 확인
$ df -h
/dev/nvme0n1p1   16G  7.8G  8.3G  49% /

참고 글

댓글
  • 프로필사진 네이슨 ec2 이미지로 Amazon Linux 2 AMI이 제공하는 장점(ex. aws support)을 무시하고 다른 이미지 (ex. ubuntu)를 써야하는 이유가 있는지 궁굼합니다! 2020.07.15 11:11
  • 프로필사진 BlogIcon 지단로보트 @네이슨 Amazon Linux 2 AMI는 CentOS 7을 아마존이 자체적으로 EC2 운영에 최적화한 운영체제입니다. 따라서 여러 보안 업데이트와 소프트웨어 패키지도 같은 혜택을 받을 수 있구요. 굳이 별도의 운영체제를 사용해야 하는 상황이라면 개발자가 그 운영체제에만 익숙한 경우라고 생각됩니다. (Ubuntu로만 서버 구성을 해오신 분들은 CentOS가 익숙하지 않으니까요.) 2020.07.16 05:52 신고
댓글쓰기 폼