[AWS] 프리티어 시작하기 (VPC, 네트워크, EC2)
부제: [프로젝트 배포 도전기 with AWS 프리티어]
(왜 했나요?)
(본문과 다소 관계 없는 내용입니다)
(개인적인 얘기 구간)
최근 포트폴리오를 다시 정리하는 시간을 가졌는데요..
제 프로젝트 목록들을 구경하다 보니, 예전에 발표했던 팀 프로젝트를 다시 배포해보고 싶다는 생각을 했습니다.
발표 당시에는 Goorm IDE를 이용해서 배포 했습니다만
전에 결제해놨던 크레딧은 이미 다 사용해서, 컨테이너는 동결 상태로 들어간 지 오래고..
전부터 AWS 프리티어는 써보고 싶은 마음이 있었고..
그래서! 이번에 이렇게 옮겨서 시도하게 된 것입니다. ^^
교육을 수료하면서 하루 이틀 정도? 실습한 적은 있습니다.
그 때의 기억을 되짚어 보면서, 다시 찾아보기도 하면서 진행했습니다. 훗
(AWS 프리티어 계정을 생성한 모습..)
1. Region
본격 인스턴스 생성 및 작업을 하기 전에, 리전을 확인하고 넘어가도록 합시다..
저는 최근에 한 번, AWS 콘솔에 들어와서 별 생각 없이 EC2 인스턴스를 확인하러 갔는데요.
아니.. 글쎄 목록에..;;; 제가 열심히 닦아 둔 EC2 인스턴스가 보이지 않는게 아니겠나요??
정말 당황을 했는데요
뭐지 인스턴스를 다시 처음부터 만들어야하나 식은땀 줄줄 허둥지둥 하다가 문득 고개를 들어 리전을 확인해 보니
아..^^ 버지니아 북부 리전이 선택되어 있더군요..
크흠 ㅋ
아무튼 리전을 고르고 나면, 아마존 웹 서비스의 서버가 어디에 위치할 지를 정해주게 된 것입니다.
서버의 위치와 서비스 대상(고객)의 위치가 멀어질수록 속도가 느려지기 때문에,
주 고객들의 거주 위치를 고려하여 선택하는 것이 좋다고 합니다.
아무래도 그럴 것 같죠?
(CDN도 떠오르네요)
(CDN도 그런 맥락을 고려한 아이디어였죠)
또한, 같은 상품이라도 리전의 위치에 따라 가격이 다르다고 합니다.
이 점 또한 고려해서 만들어 주는 것이 좋겠죠?
저는 제가 한국에 사니까 서울 리전으로 선택해 주었답니다. ^^
2. VPC 둘러보기
1) VPC
저는 우선, VPC를 구경하러 왔습니다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html
Amazon VPC란 무엇인가? - Amazon Virtual Private Cloud
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
VPC(Virtual Private Cloud) 서비스를 이용함으로써,
나의 AWS 클라우드 환경에서 논리적으로 독립된 가상 네트워크를 사용할 수 있는 것
이라고 이해했습니다.
VPC를 통해, 사용자(나)는 다른 AWS 클라우드 환경에 간섭받지 않고,
사용자(나)가 네트워크 환경에 대한 통제권을 가질 수 있게 됩니다.
그야말로 버추얼하고도 프라이빗한 클라우드 환경을 만들어주는 것이죠..
VPC 서비스가 제공되기 전에는
클라우드에 있는 리소스를 격리할 수 있는 방법이 따로 없었다고 합니다.
그래서 IP 네임스페이스를 빈틈없이 관리해야 했고, 이에 따른 설계에 복잡함과 사용자의 부담이 컸을 것으로 예상되는데요
정말 아름답게도 저희의 곁에는 이제 VPC가 있습니다.
목록을 확인해 보니, 이미 VPC가 생성되어서 잘 돌아가고 있더군요?
원래 그런건가요?
편리하고 안정적(설정 과정에서 내가 실수할 가능성이 완전히 배제됨ㅋ)인 서비스 제공에 감동을 받았습니다.
2) Subnet
subnet은 VPC의 IP 주소 범위입니다.
sub network의 줄임말 답게도, IP 네트워크의 논리적인 영역을 부분적으로 나눈 하위 망을 말합니다.
VPC에서는 이렇게 서브넷을 설정함으로써 네트워크를 분리하여 사용할 수 있습니다.
확인하러 가 보니, 이것도 이미 생성 및 설정이 되어 있더군요.
* CIDR (Classless Inter-Domain Routing)
근데 IPv4 CIDR 이건 뭐죠?
네트워크의 주소 범위를 나타내는 표현입니다. (172.31.32.0/20 이런 형식이..)
여기서 172.31.32.0 은 네트워크 주소이며,
뒷부분인 /20 은 서브넷 마스크를 의미합니다. 앞에서 20비트 까지가 네트워크 식별자라는 뜻이죠..
쉽게 말하면, IP주소 32비트 중 앞에 20비트는 네트워크를 구분하는 데 사용되고, 나머지 12비트는 호스트를 구분하는 데 사용된다는 것입니다.
왜 이렇게 CIDR을 나누는 걸까요?
그 이유인 즉슨, VPC를 더 잘 관리하고, 자원을 효율적으로 배치하기 위함 입니다.
하나의 큰 네트워크 (예컨데, 172.31.32.0 전체)를 그냥 다 쓰게 되면 관리가 어렵습니다.
그래서 작은 블록(/20, /24 등) 단위로 쪼개서 사용하자는 아이디어를 적용한 것입니다.
쪼개면 목적별, 영역별 구분에도 유리해집니다.
서비스마다 망을 나눠서 보안 및 트래픽 관리 면에서 이점을 확보할 수 있는 것이죠!!
3) 인터넷 게이트웨이
인터넷 게이트웨이도 이미 설정되어 있었습니다.
프리티어.. 짱!..
인터넷 게이트웨이는 퍼블릭 IP 주소를 할당 받은 인스턴스가 인터넷에 연결되도록 하기 위해 필요합니다.
다시 말해, 인스턴스가 공용 인터넷과 데이터를 주고받을 수 있도록 연결해주는 관문 역할을 하는 가상 장치입니다.
하나의 VPC에 하나의 IGW만 연결 가능합니다.
4) 라우팅 테이블
라우팅 테이블도 이미 다 설정되어 있는 상태네요.. ^^
라우팅 테이블은 네트워크 트래픽이 어디로 전달될지 결정하는 규칙(라우트 규칙)을 저장한 표입니다.
라우트 규칙(Route)은 대상 IP 범위(CIDR)와 그 트래픽이 향할 대상(Target) 설정 내용입니다.
위 라우팅 대상 중, 0.0.0.0/0은 '모든 외부 트래픽'을 의미합니다.
Target을 보니, 여기에 인터넷 게이트웨이를 설정해 두었네요..
* 서브넷 연결 설정
각 서브넷은 반드시 하나의 라우팅 테이블과 연결됩니다.
서브넷 연결을 설정한다는 것은 즉, 어떤 라우팅 테이블을 사용할지 지정하는 것입니다.
ㄴ 이게 무슨 말이죠?
다시 말해, "이 서브넷에 속한 인스턴스의 네트워크 트래픽은 이 라우팅 테이블을 따라야 합니다"를 설정한다는 얘기입니다.
오! 서브넷 연결 설정은 안되어 있네요
모두 선택해서 연결해주었습니다.
3. EC2 인스턴스 생성 📌
웬만한 내용은 구경을 다 한 것 같아서, 본격 EC2 인스턴스 생성에 뛰어들었습니다.
EC2 페이지로 이동할게요
프리 티어 사용 가능 image 중에서
저는 Ubuntu로 선택했습니다.
① 인스턴스 유형
② 키 페어 생성
그리고 이건 매우 중요합니다.
인스턴스 로그인에 사용할 키 페어를 생성하는 과정입니다.
저는 .pem 으로 생성했습니다.
PuTTY를 주로 사용하실 거라면, 처음부터 .ppk 로 생성해도 좋을 것 같습니다.
③ 네트워크 설정
서브넷 선택
④ 보안 그룹 설정
보안 그룹 규칙도 추가해 줍니다!
이 스크린 샷에서는 누락해 버렸는데..
내 IP에서의 SSH 요청도 허용해 줍시다.
드롭다운에서 ‘내 IP’를 선택하면 AWS가 알아서 입력해 줍니다.
⑤ 스토리지 구성
스토리지 설정까지 하면 끝!
프리티어가 EBS 30GB까지 무료 제공이라고 해서, 저는 30으로 설정해주었습니다.
전 이걸 깜빡하고 지나간 바람에나중에 다시 설정해 줬는데
혹시 이 글을 보면서 설정하고 계씬 독자분은 잊지 마시길..
그것의 흔적:
https://ywwwon01.tistory.com/24
[AWS] EBS 용량 확장, Ubuntu 파일 시스템 확장
왜 하게 됐죠?최근, 포트폴리오에 소개한 프로젝트를 배포하려는 시도를 시작하면서처음으로 AWS 프리티어 계정을 생성해 보았는데요.. EC2 인스턴스를 생성하니까이것 저것 인프라가 설정이 된
ywwwon01.tistory.com
모든 설정 확인 후, 인스턴스 시작 버튼을 눌러줍니다.
나의 첫 인스턴스 친구..
후훗
4. EC2 인스턴스에 접속해보기
생성을 했으니 접속도 해보면서 확인하는게 재밌겠죠?
저는 1️⃣ WSL 환경에서 SSH 명령어 사용 2️⃣ PuTTY 사용 으로 접속해보았습니다!
1) CLI SSH
이 방법에 대해서는 AWS 콘솔에서도 설명해주고 있었습니다!!
(친절하시다..)
제시해 준 명령어를 그대로 복사해서 사용해보면
쉽게 접속이 가능합니다. ^^
.pem 키 파일의 위치를 고려하여 명령어를 수정해서 사용하시면 됩니다.
ssh -i {키_경로} ubuntu@{퍼블릭_IPv4_주소}
(+) 사실은 뒤에 거창한거 없이 이정도로만 작성해도 잘 접속됩니다.
2) PuTTY
다음은 PuTTY 입니다..
키 .pem 형식은 PuTTY에서 바로 사용할 수 없습니다.
그렇기 때문에 PuTTY에서 사용 가능한 형식으로 바꿔주어야 하는데요,
PuTTYgen 을 이용하면 됩니다.
① PuTTYgen: .pem → .ppk
파일 형식을 All Files (*.*)로 전환해야 보입니다.
import에 성공했다는 얘기
경로에 들어가 보면 ppk가 나란히 생성되어 있는 모습을 볼 수 있습니다.
② PuTTY 접속
AWS 콘솔에서 인스턴스의 퍼블릭 IPv4 주소를 확인합니다.
저는 먼저 Private key file을 설정해 준 뒤,
세선 정보를 저장해 두었습니다.
PuTTY는 일단 시각적으로 아름답지 못하고
가독성 또한 다소 별로인 면이 있지만?
이렇게 세션 정보를 저장해두고
접속할 때마다 Load만 챡 눌러주면 셋팅이 챡 된다는 점이 편리합니다.
Accept 눌러주면 끝!
생각했던 것보다 글이 길어진 것 같습니다. 이런~
이미지를 많이 첨부해서 그런 모양입니다.
이상입니다..