본문 바로가기

AWS

EC2(Elastic Compute Cloud)

 

EC2(Elastic Compute Cloud)는 AWS에서 사용할 수 있는 가장 기본적이며 널리쓰이는 인프라이다.

AWS 공식 홈페이지에서는 클라우드에서 제공되는 크기 조정 가능한 컴퓨팅 파워라고 말한다.

쉽게 말해 크기를 유동적으로 늘였다 줄였다 할 수 있는 서버라고 보면 된다.

 

아래는 EC2 소개 페이지에서 말하는 EC2의 기능이다.

- 인스턴스: 가상 컴퓨팅 환경
- Amazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다.
- 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공
- 키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식)
- 인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
- Amazon Elastic Block Store(Amazon EBS), 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터 저장
- 인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스할 수 있는 리전 및 가용 영역
- 보안 그룹을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능
- 탄력적 IP 주소(EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소
- 태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터
- AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 Virtual Private Clouds(VPC)

 

Free Tier에서는 12개월의 기간동안 아래에 해당 하는 인스턴스를 무료로 사용 가능하다.

 

- 월별 750시간의 Linux, RHEL 또는 SLES t2.micro 인스턴스 사용량
- 월별 750시간의 Windows t2.micro 인스턴스 사용량

 

그럼 EC2를 직접 만들어보자. 관리콘솔에서 EC2를 선택한다.

 

 

이후 인스턴스 시작을 클릭. (리전은 가장 가까운 서울리전으로 선택하였다.)

 

 

왼쪽 메뉴에서 '프리 티어만'을 체크할 시 프리 티어에서 제공되는 AMI(Amazon Machine Image)를 선택할 수 있다.

AMI는 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영 체제, 애플리케이션 서버, 애플리케이션)이 포함된 일종의 템플릿이다. 환경이 구축된 가상 이미지라고 생각하면 된다. 이러한 AMI는 직접 만들수도 있으나 일단은 기본적으로 제공되는 AMI를 이용하려고 한다. 리눅스 환경에서 진행을 위해 Amazon Linux 2(CentOS 기반)를 선택했다.

 

 

참고로 같은 Amazon Linux라고 해도 HVM과 PV가 존재한다.

 

둘의 차이는 전가상화(Full Virtualization)인가 반가상화(Paravirtualization)인가의 차이인데 현재는 거의 HVM을 많이 사용하는 것 같다. 자세한 정보는 Linux AMI 가상화 유형 페이지를 참고하자.

 

다음으로 인스턴스 유형을 선택해야 한다. 굉장히 많은데 여기서는 프리티어로 사용할 t2.micro를 사용할 것이다.

인스턴스 유형은 m3.medium처럼 앞에는 인스턴스 패밀리인 m에 세대(Generation)를 뜻하는 숫자가 붙고 .(점) 뒤에는 전체적인 사양 규모를 뜻하는 단어가 붙는다.

 

인스턴스 패밀리는 다음과 같다.

 

- 범용: M1과 M3으로 시작하는 인스턴스 유형입니다. vCPU, 메모리, 네트워크, 저장 공간 등이 평균적인 사양으로 제공됩니다.

- 컴퓨팅 최적화: C로 시작하는 인스턴스 유형입니다. 다른 인스턴스 패밀리에 비해 메모리 대비 vCPU 비율이 높습니다.

- GPU 인스턴스: G로 시작하는 인스턴스 유형입니다. 고성능의 NVIDIA GPU가 장착되어 있습니다. CUDA, OpenCL 등을 실행할 때 사용됩니다.

- 메모리 최적화: M2와 CR1로 시작하는 인스턴스 유형입니다. 다른 인스턴스 패밀리에 비해 메모리 용량이 훨씬 큽니다.

- 스토리지 최적화: H와 I로 시작하는 인스턴스 유형입니다. 다른 인스턴스 패밀리보다 스토리지 용량이 훨씬 크거나 초고속 I/O를 제공합니다.

-마이크로 인스턴스: 가격이 가장 싼 인스턴스입니다. 낮은 vCPU 성능과 적은 메모리를 제공합니다. 프리 티어(무료 사용 계정)에서는 이 인스턴스 유형을 무료로 사용할 수 있습니다.

 

그 뒤에는 vGPU, 메모리, 스토리지 등의 사양 정보가 따라 나온다. 

 

 

다음으로 인스턴스 상세 설정을 해 줄 수 있다. 상세 설정할 수 있는 옵션은 아래와 같다.

 

- 인스턴스 개수 : 생성할 인스턴스의 개수이다. 한번의 여러개의 인스턴스를 생성할 수 있다.

- 구매옵션 : 스팟 인스턴스 구매 옵션으로 체크박스에 선택을 하면 스팟 인스턴스 구매 옵션과 관련된 확장 입력창이 나온다. 스팟 인스턴스란 경매 방식의 인스턴스로 인스턴스의 사양의 설정하고 입찰하면 가장 높은 가격을 제시한 사용자에게 인스턴스가 할당되는 방식으로 해당 사양의 인스턴스를 더 높은 가격에 입찰한 사람이 있다면 자신의 인스턴스는 종료되는 방식이다. 그러므로 중단되어도 상관없는 경우에 사용하는 것이 안전하다.

- 네트워크 : VPC(Virtual Private Cloud) 네트워크를 선택하는 옵션이다. VPC는 가상 네트워크를 정의하고 그 네트워크 안에서 AWS 리소스가 실행될 수 있도록 한다.

- 서브넷 : 가용역역을 선택할 수 있으며 여러 EC2 인스턴스를 서로 다른 네트워크로 분리하는데 사용될 수 있다.

- 퍼블릿 IP 자동 할당 : Public IP 할당 옵션이다.

- IAM 역할 : IAM Role을 설정할 수 있다.

- 종료 방식 : EC2 인스턴스의 OS를 종료했을 때 인스턴스의 후속 작업을 선택한다. '중지'는 인스턴스를 정지하지만 '종료'는 정지하고 삭제한다.

- 최대 절전 중지 동작 : 실수로 인스턴스를 Terminate하는 것을 방지하는 옵션이다.

- 모니터링 : Amazon CloudWatch 모니터링 사용을 설정하는 옵션이다.

- 테넌시 : 공유 인스턴스 혹은 전용 인스턴스를 지정하는 옵션이다. 공유 인스턴스는 하나의 서버에서 여러 개의 인스턴스를 실행하는 방식이며 전용 인스턴스는 하나의 서버에서 하나의 인스턴스를 실행하는 방식이다. 물론 전용 인스턴스는 공유 인스턴스보다 가격이 비싸다.

 

모두 기본설정으로 사용하겠다.

 

 

다음으로 스토리지를 설정할 수 있다. 설정할 수 있는 옵션은 아래와 같다.

 

- 크기 : 스토리지의 사이즈를 설정할 수 있다. Free-Tier에서는 최대 30GB의 용량을 지원한다.

- 볼륨 유형 : 스토리지 볼륨 유형을 설정할 수 있다. 범용 SSD 볼륨은 3000 IOPS로 버스트하고 3 IOPS/GiB라는 일관된 기본 성능을 제공할 수 있다. 프로비저닝된 IOPS SSD 볼륨은 최대 64000 IOPS를 제공할 수 있으며 EBS 최적 인스턴스에 매우 적합하다. 이전에 '표준 볼륨'이라고 했던 마그네틱 볼륨은 평균적으로 약 100 IOPS를 제공하지만, 수백 IOPS까지 버스트할 수 있다. 볼륨 유형에 대한 자세한 설명은 EBS 볼륨 유형 링크를 참고하자.

- 종료 시 삭제 : 인스턴스가 실행 중 스토리지가 삭제되는 것을 방지한다.

 

역시 기본값으로 그대로 사용하겠다.

 

 

다음으로 태그를 추가할 수 있는데, Key-Value 로 지정할 수 있다. 해당 옵션은 인스턴스나 이미지를 비롯한 다른 EC2 리소스를 관리하기 위한 옵션이다. 나는 아래와 같은 태그를 지정해 주었다.

 

 

다음은 중요한 단계이다. 보안 그룹 구성인데 쉽게 말하면 해당 서버의 방화벽 규칙을 설정하는 곳이라고 볼 수 있다.

새 보안 그룹을 생성한 뒤에 보안 그룹 이름과 설명을 넣어주고 지금 접속한 PC(xxx.xxx.xxx.xxx/32)에서만 SSH 접속이 가능하도록 설정해 주었다. 이렇게 되면 생성된 EC2를 현재 포스팅을 작성 중인 PC에서 SSH(TCP/22) 서비스로만 접근이 가능할 것이다.

 

 

최종적으로 인스턴스 시작 검토화면이 나오게 된다. 검토 후 이상이 없다면 시작하기를 통해 EC2 생성을 해보자.

 

 

시작하기를 눌러 생성을 하게 되면 키 페어 생성이 나온다. 이미 생성된 키가 있다면 기존 키 페어를 생성하면 되겠지만 처음 EC2를 생성한다면 새 키 페어 생성을 선택해준다. EC2는 흔히 사용하는 ID/PW 방식으로 로그인 하는 것이 아닌 공개키/개인키 방식을 통해 SSH에 로그인한다. 키 페어 이름이 적당한 키 페어 이름을 넣어주고 키 페어 다운로드 버튼을 클릭시 <키 페어 이름>.pem 파일을 다운로드 한다. 해당 파일이 키 페어중 개인키(Private Key)에 해당한다. 해당 파일이 없으면 EC2에 접속할 수 없으므로 잘 보관하도록 하자.(다시 다운로드 받을 수 없다.)

 

 

이제 인스턴스 시작 버튼을 클릭 시 설정한 EC2 인스턴스를 시작하게 된다.

 

 

마지막으로 생성한 EC2 인스턴스에 접속해 보자.

putty나 xshell 같은 터미널 프로그램을 이용해 EC2의 Public IP에 접속해야 한다.

나는 putty를 이용해 접속해 보겠다. 다만 아까 다운받은 *.pem 파일을 *.ppk 파일을 변환이 필요하다.

 

putty를 설치 시 기본적으로 puttygen 이라는 프로그램을 제공해주는 데 해당 프로그램을 통해 *.pem 파일을 변환할 수 있다. (PuttyGen 실행 -> Conersions -> Import Key -> Parameters에서 SSH-1(RSA) 선택 -> Save private key)

 

 

변경한 개인키를 이용하여 서버에 접속한다.

아마 정상적으로 키가 변환되었다면 서버 접속 시 해당 키를 통해 접속을 수락했냐는 알람이 뜰 것이다.

 

이후 조금 해맸는데 Amazon Linux 2 기준 username을 ec2-user로 접속해야지 원활하게 접속된다.

 

 

이렇게 EC2를 한번 생성해 보았다.