[찍먹 Cloud Computing] 1. AWS EC2란? / AWS EC2 인스턴스 만들기
AWS EC2 인스턴스를 만들어 보자. 2021-07-06

AWS EC2

안녕하세요? Justkode 입니다. 이번 시간에는 AWS EC2에 대해서 알아 보고, AWS EC2 인스턴스를 만들어 보는 시간을 가져 보도록 하겠습니다.

저번 시간에 재혁이네 헬스장 이야기를 했었죠? 간단하게 이야기 하자면, 연초에 핫한 헬스장에 사람들이 몰려 헬스를 할 자리가 없다면, 사장을 어차피 곧 빠질 사람들이니 헬스 기구를 새로 사지 않고, 빌리는 것이 돈을 아낄 수 있다는 지름길이라는 것이라고 이야기 했습니다.

그럼 컴퓨팅 서버는 어떻게 빌릴 수 있을 까요? 이는 AWS EC2 서비스를 이용하면 됩니다. AWS EC2IaaS의 대표격이라고 볼 수 있는데요, 간단하게 작은 서버 컴퓨터를 네트워크를 통해 빌린다고 생각하면 편할 것 같습니다. 우리가 네트워크와 스토리지가 구성된 서버를 OS만 선택하여 우리가 편히게 사용할 수 있게 끔 그저 이용만 하면 되는 구조입니다.

AWS EC2

EC2의 Instance 종류

일단 EC2를 사용하기 전에 Instance 종류에 대해서 알 필요가 있습니다. 우리가 서버를 사용할 때는 특정한 목적이 있습니다. 머신러닝과 같은 많은 연산 작업을 원하는 경우가 있을 수도 있고, 많은 데이터의 저장을 원하는 경우, 소규모 웹서버를 운영 하는 경우가 있을 수도 있습니다. 우리는 우리가 사용 용도에 맞는 인스턴스를 사용하면 됩니다.

먼저 인스턴스 패밀리에 대해서 표로 보여드리겠습니다. 인스턴스 패밀리는 같은 용도와 비슷한 성능의 밸런스를 가진 인스턴스 유형을 묶은 것이라고 생각하면 됩니다.

인스턴스 패밀리 설명 사용 사례
T3, T2, M5, M5A, M4 범용, 밸런스 잡힌 성능 웹 사이트, 애플리케이션
C3, C4, C5 컴퓨팅 최적화, 높은 CPU 성능 배치 처리, 웹 서버, 비디오 인코딩
G3, P2, P3 GPU 최적화, 높은 GPU 성능 기계 학습, 3D 작업
R5, R4, X1e, X1 메모리 최적화, 큰 RAM 용량 In-Memory DB, 데이터 마이닝
I3, I3EN, H1 스토리지 최적화, 높은 디스크 처리량 데이터 웨어하우징, 분산처리DB

그 다음 인스턴스 세대는 높을 수록 최신, 좋은 성능을 가지며, 인스턴스 크기는 말 그대로 같은 인스턴스 세대에서의 상대적인 크기를 나타 냅니다.

종류

EC2 Instance를 만들어 보자!

그럼 EC2 Instance를 만들어 볼까요? 우선, AWS 계정을 생성 한 후, AWS Management Console 에 로그인 합니다.

그럼 이렇게 AWS Console DashBoard가 나오게 됩니다. 우측 상단의 리전이 서울로 되어 있지 않다면, 서울로 선택해 주세요. 첫 번째로 EC2 서비스를 검색 창에서 검색 한 후 들어가 봅니다.

EC2를 클릭 해 줍니다.

이렇게 들어가면 EC2 전체 대시 보드를 볼수가 있습니다. 저는 지금 1개의 Instance를 실행 중인 상태이네요. 일단 가장 먼저 해야할 일은 Instance를 만드는 일이겠죠? 한 번 좌측 하단에 있는, 인스턴스 시작을 눌러 보겠습니다.

인스턴스 시작을 클릭 해 줍니다.

그러면 이렇게 기본 **Amazon Machine Image (AMI)**를 선택하는 창이 나오게 되는데요, 원하는 운영체제에 맞게 선택 하시면 됩니다. 저는 Ubuntu Server 20.04로 하겠습니다.

인스턴스 시작을 클릭 해 줍니다.

다음 단계에서는 인스턴스 유형을 고를 수가 있는데요, 아까 언급했던 Instance의 사용 목적에 맞게 원하는 유형을 선택하면 되겠습니다. 선택 하셨으면, 다음: 인스턴스 세부 정보 구성으로 가 보겠습니다.

원하는 인스턴스 유형을 선택 해 주세요.

여기서는 인스턴스의 세부 정보들을 구성할 수 있는데요, 우리가 주로 사용 할 요소들에 대해서 설명을 해 드리겠습니다.

  • 인스턴스 개수: 한 번에 동일한 구성의 인스턴스를 몇 개 생성할 지 결정 합니다.
  • 구매 옵션(스팟 인스턴스 요청): AWS에서 현재 수요가 없는 인스턴스를 저렴하게 사용 할 수 있는 옵션입니다. 하지만, 다른 곳에서 On-Demend 수요가 발생하면 종료 됩니다. 자세한 내용은 해당 링크 에서 확인 하세요.
  • 네트워크: VPC (Virtual Private Cloud)를 설정 할 수 있습니다. 가상의 Private한 네트워크 망을 구축 할 수 있습니다. 자세한 내용은 해당 링크를 참조 하세요.
  • 서브넷: VPC와 관련 된 설정으로, VPC내의 서브넷을 설정 할 수 있습니다.
  • IAM 역할: IAM (Identity and Access Management) 설정에 따라서 인스턴스에 대한 Access 권한을 설정 합니다.

어이고 많아라.

그 다음으로 넘어갑니다. 여기서는 원하는 만큼 추가 EBS 스토리지를 추가 할 수 있습니다. EBS(Elastic Block Store) 에 대해서 설명 하자면, EC2에서 사용하는 외장하드라고 생각하면 편합니다. 이를 EC2 InstanceMount하여 사용 할 수 있습니다. 여기에 있는 정보들은 EC2 Instance가 종료 되더라도, 사용자가 지우지 않는 이상 영구보존이 가능 합니다. 이에 대해서는 나중에 설명을 드리겠습니다.

굳이 건들고 싶지 않으면 넘어가면 됩니다.

그 다음으로 넘어가면, 태그를 설정 할 수 있습니다. 태그 추가를 누르면 Key-Value 쌍을 입력 할 수 있습니다. 나중에 인스턴스를 구분 또는 검색 할 때 많이 사용합니다. 볼륨-인스턴스 모두에 적용 할 수 있습니다.

왼쪽 아래의 태그 추가를 통해 추가할 수 있습니다.

여기서는 보안 그룹을 선택 할 수 있습니다. 특정 포트에 대해, 어떤 IP에 대한 접근만을 허용 할 것인지, 서브넷 마스크를 이용하여 지정 해 줄 수 있고, 혹은, 기존에 개인적으로 만들어 놓은 보안 그룹을 선택 할 수도 있습니다. 기본적으로 SSH는 22번을 사용 하며, 웹서버는 80, FTP는 443 등을 사용합니다.

보안 그룹 세팅 화면

마지막으로, 최종 검토를 한 후 인스턴스를 만들 수 있습니다.

최종 검토 화면

검토를 마치고 실행을 하려고 하니, 키 페어를 만들라고 합니다. 키 페어에 대해서 간단하게 설명 하자면, 인스턴스에 접근 하기 위한 열쇠 라고 생각하면 됩니다. 우리가 만약 SSH로 인스턴스에 접속을 하려고 한다면, Instance를 만들때 지정 한 키 페어 파일을 가지고 있어야 접속이 가능 합니다.

새 키페어 생성을 선택 하시고, 키 페어 이름을 선택 한 후, 키 페어 다운로드를 클릭하여, 키 페어를 다운로드 받아 줍니다. 절대 키 페어가 임의로 삭제 되는 일이 없도록 조심하셔야 합니다.

새 키페어 생성

이 과정이 완료 되면, 자동으로 인스턴스 대시보드로 이동이 되고, 인스턴스가 만들어 진 모습을 볼 수가 있습니다.

새 키페어 생성

Elastic IP

이제 EC2 Instance에 접속 해 볼 시간 입니다! 그 전에! 일단 Instance에 대해서 IP를 할당 해 주어야 합니다. 물론, 기본적으로 인스턴드 마다 할당 되어 있는 IP가 있지만, 이는 인스턴스를 껐다 켰다 하게 되면 변동 될 수 있기 때문이죠, 그렇기 때문에 고정 할 수 있는 IP를 할당 하여야 합니다. 좌측 메뉴를 보면 네트워크 및 보안 > 탄력적 IP 라는 메뉴가 있습니다. 한 번 클릭 해 보겠습니다.

탄력적 IP 클릭

그러면, 탄력적 IP에 대한 대시 보드가 나오게 됩니다. 우측 상단의 탄력적 IP 주소 할당을 클릭 합니다.

탄력적 IP 클릭

할당 하고 싶은 원하는 리전을 네트워크 선택 그룹에 입력하고, (서울의 경우는 ap-northeast-2) 할당을 클릭 해 주세요.

할당 클릭

할당이 완료 되었으면, 탄력적 IP에 대한 대시 보드에 새롭게 할당 된 IP를 클릭하고, 작업 > 탄력적 IP 주소 연결을 클릭 해 줍니다.

탄력적 IP 주소 연결 클릭

그 다음 창에서, 연결 하고자 하는 Instance를 입력하고, 연결을 누르게 되면, 인스턴스와 IP가 연결 되게 됩니다.

연결 클릭

AWS EC2 Instance 접속

자, 이제 돌고 돌아, 드디어 접속 할 시간입니다. cmd 혹은 터미널 창을 킨 이후, 아까 다운로드 한 키 페어가 있는 폴더 위에서 다음 코드를 실행 합니다.

ubuntu 기준

ssh ubuntu@인스턴스IP -i 키페어명.pem

Amazon Linux 기준

ssh ec2-user@인스턴스IP -i 키페어명.pem

이렇게 입력하면 접속이 된 것을 확인 할 수 있습니다.

연결 클릭

자 이제, 서버 혹은 개인 서비스를 올리고, 이러한 인스턴스를 여러 개로 만들고 싶을 때는 어떻게 해야 할까요? 그럴때는 커스텀 AMI를 생성하면 됩니다. 생성 방법은 다음과 같습니다. 첫 번째로 인스턴스를 중지 합니다. (종료 아님), 그 다음 이미지 및 템플릿 > 이미지 생성을 클릭 합니다.

이미지 생성 클릭

여기서 이름과 설명을 입력 해 준 후, 이미지 생성을 누르면 됩니다.

연결 클릭

조금만 기다리신 후에, 그 다음 새 인스턴스를 생성 하는 창에서 다음을 확인 할 수 있습니다. 단계 1에서 나의 AMI를 선택하면, 작업했던 볼륨 그대로를 사용하여, 새로운 인스턴스를 만들 수 있습니다.

내가 방금 만든 AMI가 있는 모습을 볼 수 있다.

AWS EC2 EBS 사용하기

Elastic Block Store > 볼륨 > 볼륨 생성에 들어 가서 EBS 볼륨을 생성 할 수 있습니다. 특정 시점에 대한 스냅샷 또한 지정 해 줄 수 있습니다. 이는 Elastic Block Store > 스냅샷 > 스냅샷 생성에서 볼륨, 혹은 Instance에 대해 생성 할 수 있습니다.

볼륨 생성 창

생성 후, 볼륨 > 볼륨 연결을 클릭하여, 인스턴스를 선택 하고, 디바이스(경로)를 선택 합니다.

볼륨 생성 창

그 다음으로는 다음 사진에 있는 명령어를 EC2 Instance에 입력 함으로써 연결이 가능합니다. 참고: 위에 입력된 디바이스 이름(세부 정보에 표시됨)이 /dev/sdf ~ /dev/sdp여도 최신 Linux 커널로 인해 디바이스 이름이 내부적으로 /dev/xvdf ~ /dev/xvdp로 바뀔 수 있습니다.

볼륨 마운트

마치며

이렇게 EC2에 대해서 가볍게 알아 보았고, 같이 자주 사용되는 EBS, AMI에 대해서도 알아 보았습니다. 다음 시간에는 스토리지 서비스인 AWS S3에 대해서도 알아 보는 시간을 가져 보겠습니다.