[AWS] EC2로 서버 구축하기

이태연·2022년 3월 21일
0
post-thumbnail

AWS란?

아마존웹서비스(AWS)는 아마존닷컴의 클라우드 컴퓨팅 서비스로 압도적인 세계 점유율 1위를 차지하고 있는 서비스입니다. AWS의 대표적인 서비스로는 EC2, RDS, S3, IAM, Route53 등이 있으며 이번 포스팅에서는 그 중 EC2는 무엇이고 어떻게 이용할 수 있는지에 대해 알아보겠습니다.

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번호]

탄력적 IP

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

profile
주니어 백엔드 웹 개발자입니다.

0개의 댓글