AWS

[AWS] AWS 프리티어 EC2 Inatance 생성 & EIP(탄력적 IP) & swap memory 설정

HEY__ 2024. 5. 30. 22:44
728x90

이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!

✅ 서론

AWS는 새로 가입을 하면 1년동안 프리티어로 사용할 수 있다.

AWS에서 제공하는 서비스 중, EC2라는 서비스를 통해 백엔드 서버, 웹 어플리케이션 등을 실행할 수 있는데,

토이 프로젝트를 할 때에 이 EC2 서비스를 많이 이용하게 된다.

 

프리티어 수준에서 사용이 가능한 EC2 인스턴스를 직접 생성하고, EIP(Elastic IP; 탄력적 IP)를 해당 인스턴스에 적용해보자.

 

그리고 프리티어 수준에서 사용한 가상 서버의 유형은 보통 `t2.micro` 정도가 되는데, 서버의 사양이 그리 좋지 못해서 간간히 뻗는 경우가 발생한다.

이를 완전히 해결하긴 어렵지만, swap memory를 적용하여 완화하는 방법도 같이 알아보자.

 


✅ EC2 Instance 생성하기

1. 우선 AWS에 로그인을 하고 EC2 서비스에 접속 후, `인스턴스 시작`버튼을 누른다.

 

 

2. 인스턴스 생성에 필요한 정보들을 설정한다.

1) `이름 및 태그`: 이름은 본인이 사용하고자하는 이름으로 설정한다. EC2 생성 이후에도 변경이 가능하므로 마음 놓고 적어준다.

2) `애플리케이션 및 OS 이미지`: 사용하고자하는 OS를 설정해주면 된다. 나는 Ubuntu가 익숙하여 Ubuntu로 설정하였다.

3) `인스턴스 유형`: 프리 티어 수준에서 사용하고자 한다면 오른쪽에 `프리 티어 사용 가능`인 목록들 중에서 하나를 선택해야 한다. 그렇지 않으면 요금이 부과될 수 있으니 유의하자.

 


 

4) `키 페어(로그인)`: 해당 값을 사용하면 SSH 혹은 putty를 통해 인스턴스에 연결할 때 `키 페어`가 있어야만 접속이 가능하게 할 수 있다. 보안을 위해 반드시 설정하자.

키 페어를 새로 생성하고자 한다면, 오른쪽에 `새 키 페어 생성`을 눌러 생성하자.

 

`키 페어 이름`에는 본인이 사용하고자하는 이름을 작성하고 `키 페어 생성` 버튼을 누르면, 키 페어가 생성되며 .pem 파일을 안전한 곳에 잘 받아놓자.


 

5) `네트워크 설정`

여기에서는 보안그룹(방화벽)을 설정하는 곳이다.

여기에서 설정한 트래픽만 EC2에 접근하도록 허용함으로서, 트래픽을 세부적으로 제어할 수 있다.

 

보안그룹을 생성해보자.

`EC2 서비스` - `네트워크 및 보안` - `보안 그룹` - `보안 그룹 생성`을 누른다.

 

💡 보안 그룹은 개발 환경에 따라 열어주어야 할 포트 번호가 달라집니다!
데이터베이스가 사용하는 포트 번호가 무엇이냐, HTTP & HTTPS를 사용하냐에 따라 달라집니다.

GitGet 서비스는 데이터베이스로 `mariadb(port 3306)`, `mongodb(port 27017)`를 사용하고 있고,
`HTTP(port 80)`에 이어서 `HTTPS(port 443)`도 적용할 예정이기 때문에, 포트를 밑과 같이 오픈해주었습니다.

또한 EC2에 접속하기 위해서는 `SSH(port 22)`를 열어주어야 합니다.
각자의 환경에 맞게 설정해주세요 :)


 

6) `스토리지 구성`

프리 티어에서는 총 30GB의 루트 볼륨을 무료로 제공한다. 30GB 이내로 원하는 만큼 설정하면 된다.

 

 

이후 `인스턴스 시작` 버튼을 누르면 인스턴스가 생성되어 목록에서 확인할 수 있다 :)

 


EIP(Elasitc IP; 탄력적 IP) 적용하기

인스턴스가 정상적으로 실행되어 접속할 수 있게 되었다.

그런데 한 가지 문제가 있다.

 

인스턴스 목록에서 우리가 만든 인스턴스를 클릭하면 `퍼블릭 IPv4 주소`를 확인할 수 있는데,

문제는 `인스턴스 중지` 이후 `인스턴스 시작`을 눌렀을 때, 이 `퍼블릭 IPv4 주소`가 바뀐다는 것이다.

 

만일 FE에서 이 `퍼블릭 IPv4 주소`를 통해 API를 요청한다면, 인스턴스가 모종의 이유로 중지되었다가 재시작되었을 때마다 API 주소를 바꿔야한다는 큰 문제점이 있다.

 

이러한 점을 보완할 수 있는 방법 중 하나는 `EIP(Elastic IP; 탄력적 IP)`를 사용하는 것이다.

 

 

우선 `EC2 서비스` - `네트워크 및 보안` - `탄력적 IP`에 들어가 오른쪽 상단의 `탄력적 IP 주소 할당`을 눌러 탄력적 IP를 생성한다.

이후에 생성된 EIP 목록에서 생성한 EIP 주소를 선택하고 `작업` - `탄력적 IP 주소 연결`을 누른다.

 

인스턴스란에서 연결하고자하는 인스턴스를 선택한 후 연결 버튼을 누른다.

완료된 후 EC2 인스턴스 목록 페이지에 들어가면 해당 인스턴스에 EIP가 적용되어 있음을 확인할 수 있다.

 

 

 

EIP를 사용하고자할 때 제일 고민되는 이유는 바로 요금 때문인데,

`EC2용 AWS 프리 티어에는 2024년 2월 1일부터 처음 12개월 동안 매월 750시간의 퍼블릭 IPv4 주소 사용이 포함`된다고 한다.

자세한 사항은 밑의 두 링크를 참고하길 바란다 :)

 

https://repost.aws/ko/knowledge-center/elastic-ip-charges

 

탄력적 IP 요금 이해하기

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 모두 종료했는데 탄력적 IP 주소의 요금이 청구됩니다. Amazon EC2 온디맨드 요금 페이지에는 탄력적 IP 주소가 무료라고 나와 있습니다. 그런데 요금이

repost.aws

https://aws.amazon.com/ko/blogs/korea/new-aws-public-ipv4-address-charge-public-ip-insights/

 

공지 – AWS Public IPv4 주소 요금 변경 및 Public IP Insights 기능 출시 | Amazon Web Services

AWS에서 퍼블릭(Public) IPv4 주소에 대한 새로운 요금이 도입됩니다. 2024년 2월 1일부터 서비스 연결 여부에 관계없이 모든 퍼블릭 IPv4 주소에 대해 시간당 IP당 0.005 USD의 요금이 부과됩니다. 계정에

aws.amazon.com


swap memory 적용하기

마지막으로 프리티어 수준에서 생성한 인스턴스를 쓸만한 수준으로 올리기 위해 `swap memory`를 설정해보자.

`$` 옆의 명령어를 하나씩 작성해주면 된다.

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
16+0 records in
16+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 31.0286 s, 69.2 MB/s

$ sudo chmod 600 /swapfile

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=55b06df3-58ce-453f-ab59-d9e110f6679d

$ sudo swapon /swapfile
$ sudo swapon -s
Filename                                Type            Size            Used            Priority
/swapfile                               file            2097148         0               -2

$ sudo vi /etc/fstab
$ free
               total        used        free      shared  buff/cache   available
Mem:          980436      352776      189468         880      599752      627660
Swap:        2097148           0     2097148

 


✅  참고 자료 & 링크

http://diary-developer.tistory.com/32

 

[AWS] EC2 스왑 메모리 설정하기 (EC2 메모리 늘리기) - Swap Memory

AWS의 EC2를 사용하고 있는데 프리티어를 사용하다 보면 램 메모리가 1GB 밖에 되지 않기 때문에 메모리가 부족한 현상을 겪을 수 있다. 이를 해결하기 위해 램이 높은 인스턴스 유형을 선택하면

diary-developer.tistory.com

 

 

728x90