Search

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번에 나눠서 이번 프로젝트를 완성했습니다. 중간중간 더 설명하고 싶은 부분이 많은데 이미 내용이 길기도 하고 충분히 처음 시작하는 분들에겐 위에 설명된 내용들도 어렵게 느껴질 것 같아서 최소한의 설정과 개념만 다뤘습니다.
포스팅 목적에 맞게 처음 시작하시는 분들에게 조금이나마 쉽게 개념이 다가왔으면 좋겠습니다. 감사합니다.