아마존웹서비스(AWS)는 아마존닷컴의 클라우드 컴퓨팅 서비스로 압도적인 세계 점유율 1위를 차지하고 있는 서비스입니다. AWS의 대표적인 서비스로는 EC2
, RDS
, S3
, IAM
, Route53
등이 있으며 이번 포스팅에서는 그 중 EC2는 무엇이고 어떻게 이용할 수 있는지에 대해 알아보겠습니다.
EC2는 Elastic Compute Cloud
의 약자로 AWS의 설명에 따르면 AWS 클라우드에서 확장가능 컴퓨팅 용량을 제공한다라고 적혀있습니다.
쉽게 생각하면 한 대의 컴퓨터를 임대한다는 개념으로 생각할 수 있는데 EC2를 통해 아마존이 각 세계에 구축한 데이터 센터의 서버용 컴퓨터 자원을 원격으로 사용할 수 있습니다.
EC2는 무엇보다 용량을 늘리거나 줄일 수 있고, 사용한만큼만 비용을 지불하므로 비용적인 측면에서도 부담이 없다는 점이 장점으로 뽑힙니다.
그럼 지금부터 EC2로 서버를 구축해보겠습니다.
AWS 회원가입 후 EC2 서비스를 검색합니다.
왼쪽 메뉴목록에서 인스턴스 -> 인스턴스 시작을 클릭합니다.
원하는 AMI를 선택합니다.
AMI
는 Amazone Machine Image의 약어로 인스턴스를 생성할 때 필요한 모든 소프트웨어를 담고 있는 템플릿 이미지라고 할 수 있습니다.
저는 Ubuntu Server 20.04 LTS (HVM), SSD Volume Type를 선택했습니다.
인스턴스 유형선택
다음으로는 인스턴스 유형을 선택해야 합니다. 인스턴스에는 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합이 있어서 나에게 맞는 인스턴스 유형을 선택하면 됩니다.
선택을 했으면 검토 및 시작버튼을 클릭합니다.
3-6단계(인스턴스구성-스토리지추가-태그추가)에서 보다 상세하게 인스턴스를 설정할 수 있습니다.
저는 3-5단계는 기본값으로 두고 6단계인 보안그룹을 설정하겠습니다.
보안그룹 설정
보안그룹은 EC2 인스턴스의 가상 방화벽이라고 할 수 있습니다.
인바운드와 아웃바운드 규칙을 설정할 수 있는데 인바운드 규칙
은 인스턴스로 들어오는 트래픽
에 대한 규칙이고 아웃바운드 규칙
은 인스턴스에서 외부로 나가는 트래픽
에 대한 규칙입니다.
소스에서 인스턴스에 도달할 수 있는 트래픽을 판별할 수 있는데 소스가 0.0.0.0/0인 규칙은 모든 IP 주소에서 인스턴스에 액세스하도록 허용하는 것이기 때문에 알려진 IP주소의 엑세스만 허용되도록 보안그룹을 설정하는 것이 좋습니다.
인스턴스 시작 검토
7단계 인스턴스 시작 검토에서 지금까지 설정한 인스턴스 세부 정보를 검토 후 인스턴스 시작하기를 누르면
기존 키 페어 선택 또는 새 키 페어 생성 창이 뜨는데 저는 기존 키 페어가 있기 때문에 기존 키 페어를 선택후 인스턴스를 시작하였습니다.
*저의 경우 처음 키 페어를 통해 ssh로 접속하려고 하니까
Permission denied(publickey)
라는 에러가 발생했습니다.
chmod 400 [key path] 명령어로 권한을 변경하니 해결이 되었습니다.
키 페어
란?
AWS에 저장하는 퍼블릭 키와 사용자가 저정하는 프라이빗 키로 구성되어 있습니다.
이 둘을 모두 사용하여 ssh를 통해 인스턴스에 안전하게 접속할 수 있습니다.
ssh 명령어로 인스턴스 연결하기(Ubuntu의 경우)
ssh -i '키 페어가 있는 경로' 'ubuntu(유저이름)'@'자신의 퍼블릭 DNS(IPv4)
해당 명령어를 입력하면 인스턴스에 연결되는 것을 확인할 수 있습니다.
AWS EC2로 배포할 때 터미널을 종료해도 서버가 꺼지지 않게하려면 백그라운드를 실행해야 합니다.
nohup python runserver 0:8000 &
실행시 nohup: ignoring input and appending output to 'nohup.out' 메세지가 나오면 실행 성공입니다.
잘돌아가는지 확인합니다.
ps -l
백그라운드 실행을 종료할 때는 실행 중인 포트에서 동작하고 있는 프로세스 id를 파악해서 종료하면 됩니다.
kill -9 [PID번호]
AWS EC2의 경우 탄력적 IP를 이용하지 않으면 인스턴스를 중지하고 다시 실행시킬 때 IP가 변경됩니다. 그렇기 때문에 고정 IP를 할당받기 위해서는 탄력적 IP를 이용해야합니다.
탄력적 IP의 경우 만들어 놓기만 하고 어떤 인스턴스에도 연결하지 않은 경우 비용이 발생
하기 때문에 필요한 만큼만 생성해서 바로 사용할 수 있도록 해야합니다.
그러면 탄력적 IP를 할당 받아 사용해 보겠습니다.
네트워크 및 보안 -> 탄력적 IP -> 탄력적 IP 주소 할당을 클릭합니다.
할당 버튼을 누르면 탄력적 IP가 할당된 것을 확인할 수 있습니다.
이후에는 탄력적 IP주소 연결을 눌러서 EC2와 연결할 수 있습니다.
탄력적 IP주소와 연결할 인스턴스와 프라이빗 IP주소를 작성합니다.
탄력적 IP가 정상적으로 연결된 것을 확인할 수 있습니다.
참고자료
https://seoyeonhwng.medium.com/aws-ec2%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-acf6b7041908
https://zamezzz.tistory.com/301
https://ndb796.tistory.com/258