Search
Duplicate

Amazon EC2 만들어보기 (Linux)

날짜
2021/08/02
작성자
태그
AWS
EC2
Linux
WEB Server
Series
AWS 입문하기!
완료

1. 서론

드디어 고장난 베짱이 첫 시리즈의 주인공인 EC2 만들어보기에 도착했습니다.
EC2만 중요한건 아니지만 EC2가 가장 많이 사용되고 가장 유명한 AWS Cloud Service인 것은 부정할 수 없는 사실이며, 저도 클라우드공부를 처음 했을 때 EC2를 직접 만들어서 접속해보고 클라우드라는게 더 와닿았던 것 같아요.
오늘은 이전 포스팅에서 생성한 VPC 네트워크 환경위에 EC2를 생성하고, 서버의 목적인 서비스 제공을 위한 테스트 웹서버를 만들어서 테스트 해보겠습니다.
이 포스팅에서는 Linux OS를 사용하는 EC2를 만들고 테스트합니다.

2. EC2 관련 개념들

What is EC2 ?

EC2 (Elastic Cloud Computer)를 AWS에선 이렇게 정의합니다.
안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 서비스입니다.
안전한것도, 크기 조정이 가능한 것도, 클라우드에서 제공하는 컴퓨팅 용량도 다 감이 안 올 수도 있어요. 솔직히 단점은 거의없습니다. 비용이 문제라고 생각해요. 그래서 EC2를 비롯한 클라우드 서비스를 사용하는 사람들은 AWS 비용을 최적화할 수 있는 방법을 항상 모색해야합니다.
우선은 EC2는 사용한만큼 돈을 내고 빌려쓰는 가상 컴퓨터라고 생각하면 될 것 같아요. ( 물리적인 컴퓨터가 아닌 가상 컴퓨터이기 때문에 100대를 빌려도 어디에 둘지 고민하지 않아도 됩니다.)

EC2에 필요한 개념들

이전 포스팅에서 다룬 내용들은 빼고 설명해보겠습니다.
EC2 Instance를 감싼 보안그룹은 사용자의 설정에 따라 원하는 방문자(트래픽)만 들여보냅니다.
AMI (Amazon Machine Image)
컴퓨터의 상태를 이미지 형태로 저장해서 동일한 상태로 시작할 수 있게 해줍니다.
Private IP
VPC 내부에서 통신할 때 사용하는 주소(IP)에요. 모든 서버가 공인 IP로 통신하기에는 IPv4 주소가 너무 부족하고, Private를 사용해서 인터넷과 격리된, 말 그대로 프라이빗한 통신이 가능합니다.
Public IP
인터넷을 통해 통신하기 위한 주소(IP)에요. 하지만 집주소를 안다고 그 집에 들어갈 수 있는게 아닌 것처럼 IP를 통한 통신은 집주인이 허가해주어야 통신할 수 있습니다.
Instance Type
사용자가 빌리는 컴퓨터의 스펙을 결정하는 요소로 CPU, RAM, GPU, 네트워킹 성능등의 하드웨어 스펙이 다양하게 조합되어 수백가지의 타입을 제공합니다.
사용자는 알맞은 스펙을 사용하여 비용과 성능사이의 밸런스를 조절할 수 있지만 정확한 성능을 몰라도 인스턴스 타입 변경은 자유로운 편이기 때문에 점차 사용량을 체크하며 변경할수도 있습니다.
Security Group(보안 그룹, SG)
EC2 인스턴스로의 접속 시도(트래픽)시에 보안그룹에 허용된 주소(IP)인지 확인하고 EC2로 보내줘요. 1.2.3.4라는 IP에 대해서 HTTP(tcp/80) 접속이 허용돼있다면 1.2.3.4라는 사용자는 80번포트에 해당하는 서비스에는 접근이 가능하겠지만 22번 포트를 사용하는 SSH 서비스는 접근이 불가능하죠.
쉽게 사원증과 회사라고 생각하면 쉬울 것 같아요. 사원증이 없으면 애초에 건물에 들어가지도 못하지만 사원증이 있어도... CEO실에는 허가된 사람만 들어갈 수 있고, 전산실도 출입권한이 있는사람만 들어갈 수 있죠.
보안그룹에 Rule을 설정해서 접근제어를 하게 되는데 기본적으로 보안그룹은 모든 접근을 막고 Rule로 허용된 주소만 들여보내는 화이트리스트 방식의 접근제어를 합니다.
높은 보안수준을 달성하기 위해서 서버에 꼭 접근해야하는 IP만 필요한 Port에 대해서 Rule 등록을 하고 접속자 IP에 0.0.0.0/0(모든 주소)를 적는일은 지양해야 합니다. ( 하지만 불특정 다수가 사용해야하는 웹서버와 같은 서비스는 0.0.0.0/0으로 설정해야겠죠?)
Key Pair
AWS EC2 서버에 직접 접근하는 방법은 SSH 말고 다른방법도 있지만 우선 SSH를 기준으로 설명드릴게요.
일반적으로 AWS가 제공하는 AMI로 EC2를 생성할 때에는 Key Pair로만 SSH 접근이 가능해요. 그 후에 PW를 설정하거나 다른 User를 생성하거나 할 수는 있지만 최초 접속을 위해선 Key Pair를 생성하고 EC2를 시작할 때 Key Pair 선택하고 해당 Key를 사용해서 접근해야합니다.
Key Pair 사용방법은 아래에서 EC2를 생성하고 접속하는 과정에서 자연스럽게 배우게 됩니다.

3. EC2(Linux) 생성 및 테스트 웹서버 구성

서울리전에서 EC2 생성 및 웹서버 테스트에 필요한 최소한의 설정으로 구성합니다.
EC2는 조금만 더 자세히 말하자면 가상 데스크톱이 아닌 가상 서버를 제공하는 서비스입니다. 대표적인 예시로 Windows10 AMI가 없고 Windows Server AMI만 제공해요. 즉 EC2는 서버라는 말인데... 서버가 뭘까요?
최대한 쉽게 표현하면 서버는 서비스를 제공하는 컴퓨터를 서버라고 합니다. 보통의 PC는 서비스를 제공하기보단 인터넷 사용, 영상편집, MS Office등의 서비스를 사용합니다. ( 헷갈릴 수 있지만 컴퓨터라는 큰 범주 안에 서버와 일반적인 사용목적의 PC가 나뉘어진다고 생각합시다.)
우리가 만들 EC2는 PC가 아닌 Server 이므로 (정말 너무) 간단한 테스트 웹 서버까지 구동해보고 이번 플젝을 마치겠습니다.
EC2 생성하기
EC2 접속하기
웹서버 설치

4. 웹서버 접속

이제 웹서버 구동까지 완료했으면 PC에서 인터넷 브라우저를 켜서 주소창에 Public IP를 입력하고 엔터를 쳐보세요. (정확히는 http://[공인ip])
아래 사진과 같은 테스트 페이지가 나온다면 정상적으로 Amazon Linux EC2가 웹 서버가 되어 우리에게 테스트 페이지라는 웹 서비스를 제공하는 것입니다.
예를 들어 사용자에게 귀여움이 넘치는 고장난 베짱이 사진첩을 보여주는 웹 서비스라면 서버를 잘 설정하여 테스트 페이지 대신에 아래와 같은 페이지를 보여줄 수도 있습니다.
제가 만든 테스트 페이지일 뿐 구현하실 필요는 없습니다.
준비한 실습은 여기까지 입니다. 이번 프로젝트는 모두 프리티어로 생성했고 삭제하지 않아도 과금될 요소는 없지만 다른 서비스들을 같이 사용하면 과금이 될 수도 있습니다. 그러니 실습 종료와 함께 EC2를 삭제하겠습니다.
EC2 콘솔에서 EC2를 우클릭하고 인스턴스 종료를 눌러 인스턴스를 삭제시킵니다.
여기서 종료(Terminate)와 중지(Stop)의 차이가 중요합니다.
중지 : 서버는 유지한 상태에서 전원만 끔 (인스턴스 비용 X, EBS 볼륨비용 O)
종료 : 서버를 아예 폐기해버린다. AMI, Snapshot과 같은 복구 방법이 없다면 복구 불가,,,
인스턴스 종료(Terminate)는 치명적인 결과를 부를 수 있기 때문에 항상 조심 또 조심하거나 우발적인 종료로부터 보호 옵션을 사용해서 종료를 막아주는 것도 한 가지 방법입니다.

5. 결론

이번 포스팅의 핵심을 3줄로 정리해봤습니다.
1. EC2는 클라우드 환경에서 사용한만큼 비용을 지불하는 가상 서버 대여 서비스입니다. 2. 서버는 서비스를 제공하는 컴퓨터로 오늘 만든 EC2는 웹 서버입니다. 서버와 PC(Personal Computer)는 사용 목적이 다른 컴퓨터입니다. 3. Linux OS는 기본적으로 SSH(tcp/22)라는 프로토콜을 사용해서 원격접속합니다. 접속을 허용하기 위해서 보안 그룹(SG)에서 접속자의 SSH를 허용해야합니다. 조금 복잡할 수 있지만 웹 서버도 다른 서비스의 클라이언트가 될 수 있습니다.
AWS 계정 생성부터 VPC를 만들고 그 안에 EC2를 생성하는 것 까지 3번에 나눠서 이번 프로젝트를 완성했습니다. 중간중간 더 설명하고 싶은 부분이 많은데 이미 내용이 길기도 하고 충분히 처음 시작하는 분들에겐 위에 설명된 내용들도 어렵게 느껴질 것 같아서 최소한의 설정과 개념만 다뤘습니다.
포스팅 목적에 맞게 처음 시작하시는 분들에게 조금이나마 쉽게 개념이 다가왔으면 좋겠습니다. 감사합니다.