• [AWS]EC2 인스턴스 생성하기

    2022. 8. 4.

    by. 개발도비

    24시간 내내 실행하기 위해 가상서버를 사용한다. AWS는 가상 서버를 EC2 서비스로 제공한다. 가상 서버는 동일한 물리적 서버 상에 있으면서 다른 가상 서버와 소프트웨어에 의해 격리되어 있는 물리적 서버의 일부다. 가상 서버는 CPU, 메모리, 네트워크 인터페이스 및 스토리지로 구성된다. 물리적 서버는 호스트 서버(host server)라고도 하며 그 위에서 실행되는 가상 서버는 게스트(guest)라고 부른다. 하이퍼바이저(hypervisor)는 게스트를 서로 분리하고 하드웨어에 대한 요청을 스케줄링하는 역할을 맡는다. 가상서버를 만들려면 인스턴스(가상 컴퓨터 한 대)를 생성하면 된다.

     

    EC2에 대한 개념 참고

    https://code0123.tistory.com/86?category=1007413 

     

    [AWS] EC2(Elastic Compute Cloud)란 무엇인가

    AWS의 네트워킹 서비스 그룹은 DNS 서비스를 제공하고, 사용자에게 AWS상의 가상 네트워킹 환경을 직접 제어할 수 있는 기능을 제공하며, 마치 기존 네트워크 내에 있는 것처럼 Amazon EC2 인스턴스와

    code0123.tistory.com

     

    AWS를 1년동안 무료로 사용할 수 있는 프리티어를 이용하여 리눅스 서버를 구축해보자.

     

    1. Region 선택하기

    우측 상단에서 리전을 서울로 변경한다

     

     

    2. 인스턴스 시작

    EC2 대시보드에서 인스턴스 시작 버튼 클릭 

     

     

    3. 인스턴스 이름 설정하기

    인스턴스 이름을 설정한다. 나는 CWS로 설정했다.

     

     

    4. AMI 설정

    AMI는 Amazon Machine Image의 약자로, 서버에 필요한 운영 체제와 여러 소프트웨어들이 포함된 템플릿을 의미한다. 

    Amazon Linux는 오류가 뜨는 경우가 많다고 들었고 리눅스를 잘 다루는 경우가 아니라면 Ubuntu가 편하다고 해서 우분투를 선택했다.

    프리티어가 가능한 옵션 중 최신버전인 22.04를 선택했다. 

     

    LTS는 Long Term Support라는 뜻이다. LST버전은 일반적인 경우보다 장기간에 걸쳐 지원한다는 뜻으로, 윈도우 XP가 현재도 사용은 가능하지만 MS사에서 서비스를 종료했다는 맥락에서 이해하면 좋을 것이다.

     

    5. 인스턴스 유형 선택

    인스턴스 유형도 프리티어가 가능한 t2.micro를 선택한다. t시리즈는 낮은 기본 CPU성능과 작고 저렴한 가상 서버로 구성되어 있다. t2.micro의 가상 CPU개수는 1개, 메모리는 1GB다. 우측의 인스턴스 유형 비교를 클릭하면 한 눈에 비교가 가능하다. 

     

     

    6. 키페어 설정 

    AWS에서 가상 서버에 접근하려면 개인키(private key)와 공개키(public key)로 구성된 키 페어(key pair)가 필요하다. 공개키는 AWS에 업로드되어 가상서버에 삽입되고, 개인키는 자신이 소유한다.

    리눅스 서버에 접근하기 위해 SSH 프로토콜을 사용하는데 로그인시 비밀번호 대신 키페어를 이용하여 인증할 수 있다. 윈도우 서버에는 원격 데스크톱 프로토콜(RDP,Remote Desktop Protocol)로 접근한다. 로그인하기 위해 관리자 비밀번호를 해독하는 키페어가 필요하다. 인스턴스에 접근할 때 키페어가 꼭 필요하고, 쉽게 말해 키페어는 EC2 접속에 필요한 비밀번호라고 생각하면 된다.  지정한 키페어를 사용하여 해당 인스턴스에 안전하게 연결할 수 있고 프라이빗 키를 소유한 사람은 누구나 인스턴스에 연결할 수 있으므로 반드시 보안된 위치에 프라이빗키를 저장해야 한다.

    키페어는 기존에 가지고 있는 키페어가 있으면 그대로 사용해도 되지만 없다면 옆에 있는 '새 키 페어 생성'버튼을 클릭하여 새로 만들어주면 된다.새로운 키페어를 생성하는 경우, 따로 다운받아 잘 보관해야 한다. 나는 가지고 있는 키페어가 없어서 새로 생성을 해 주었다. 

     

     

    이름 영역에 키페어로 사용할 이름을 영어로 입력하고 원하는 파일 형식을 선택 후 생성하면 파일을 내려받을 수 있다. 파일명은 키페어이름.확장자(ex. crudkeypair.pem) 다운로드 폴더 안에 저장되는데 보안상 중요한 파일이므로 C드라이브에 폴더 하나를 만들고 거기에 보관하도록 한다. 저장 위치는 C:\Users\사용자명\.ssh가 기본이다(필수는 아님). 

     

    윈도우 사용자 추천 저장 위치

    .ssh 라는 폴더에 저장하는 것이 좋다

    ex> C:/user/username/.ssh/keypairName.pem

    Mac / Linux 사용자 추천 저장 위치

    홈 폴더의 .ssh 폴더 안에 저장하는 것이 좋다.

    ex> ~/.ssh/keypairName.pem

    Mac / Linux 사용자 키페어 보안 설정

    소유자만 파일을 읽을 수 있게 변경해준다

    chmode 400 ~/.ssh/keypairName.pem

     

    프라이빗 키 파일 형식은 윈도우에서 사용할 경우 .ppk 확장자로, 그 외 맥이나 리눅스에서 ssh클라이언트를 통해 접속하는 경우 .pem 확장자로 저장한다. 나는 윈도우를 사용하고 있어서 ppk 확장자를 선택했다.

     

    AWS서버 설정을 마치고 리눅스 서버에 접속할 때, 윈도우는 PuTTY라는 가상 터미널 프로그램을 이용해야 한다.  운영체제가 다르기 때문에 PuTTY가 필요한 것이고 이때도 내 서버에 접속하기 위해서는 인스턴스 생성시에 만든 키페어가 반드시 필요하다. 그런데 이 PuTTY에서는 자체 ppk 형식만 지원하고 pem형식을 지원하지 않기 때문에, 키페어의 형식이 pem이면 찾아주지를 못 한다. 예전에는 인스턴스 생성할 때 .pem파일의 형식만 생성이 되었기 때문에 다운받아서 ppk파일로 변환해야 하는 번거로움이 있었다고 한다. 이때 puTTygen이라는 프로그램을 사용해서 변환해주는 것 같았는데 이제는 바로 ppk형식으로 생성이 가능하니 굳이 pem으로 다운받아 변환할 필요는 없어보인다. 

     

    일반적으로 아마존이나 오픈스텍과 같은 클라우드에서 서버 리소스 접근을 위한 공개키를 생성할때는 사용자 접속툴의 범용성을 높이기 위해 id_rsa.pub 대신 *.pem(윈도우) 혹은 *.ppk(리눅스) 파일을 공개키로 많이 사용한다.

     

    참고로 키페어 유형인 RSA와 ED25519는 암호키 알고리즘인데, 찾아보니 ED25519가 조금 더 효율적인 알고리즘이라고 한다. 그런데도 많은 사람들이 RSA유형을 사용하고 있어서 의아했는데 찾아보니 이유를 알 수 있었다. 

    https://aws.amazon.com/ko/about-aws/whats-new/2021/08/amazon-ec2-customers-ed25519-keys-authentication/

     

    Amazon EC2 고객은 이제 ED25519 키를 사용해 인스턴스 연결 운영 중 인증을 수행할 수 있어

    오늘부터 AWS 고객은 ED25519 키를 사용하여 EC2 인스턴스 연결 시 그들의 자격 증명을 입증할 수 있습니다. ED25519는 SSH 인증에 일반적으로 사용하는 타원 곡선 기반 퍼블릭 키 시스템입니다. 예전 EC

    aws.amazon.com

    AWS측에서 ED25519유형을 2021년 8월 17일부터 제공하기 시작했다고 한다. 그 이전에 키페어로 를 생성한 사람들이 더 많을테니 상대적으로 RSA를 쓰고 있는 사람들이 더 많아보였던 것이 아닐까 싶다. ED25519알고리즘을 지원하는 원격 호스트라면 ED25519기반의 키페어를 생성하고 사용하는 것이 더 좋다고 한다. Windows인스턴스에는 지원되지 않는다고 하니 참고할 것! 

     

     

    7.네트워크 설정

    네트워크 설정을 할 수 있다. 

    우측 상단의 편집 버튼을 누르면 조금 더 세부적으로 할 수 있는 것 같다. 

    네트워크 세부설정은 일단 디폴트상태로 두고 넘어갔는데 따로 다시 공부해야할 것 같다. 

     

     

    8. 스토리지 선택

    프리티어 사용자는 최대 30GB의 용량을 사용할 수 있다. 인스턴스 용량은 후에 재설정이 가능하지만 용량을 늘릴 수만 있고 줄일 수는 없다. 

    디폴트 상태는 8로 설정되어있던데, 이왕 30GB까지 사용할 수 있는거 그냥 최대치로 설정해주었다. 스토리지 구성 바로 아래에 있는 고급세부정보 쪽도 일단은 디폴트상태로 두었는데 목록을 훑어보며 공부해야할 것이 정말 많다고 느꼈다.

     

     

    9.인스턴스 시작

    요약부분을 확인하고 인스턴스 시작 버튼을 눌러준다

     

    인스턴스가 생성된 후 실행중인 것까지 확인했다!

     

     

    참고) 7단계는 보안 그룹 구성인데 방화벽을 구성하는 것이다

    처음 기본적으로 SSH가 추가 되어있을 것이다 리눅스 서버에 접근하려면 SSH프로토콜을 사용하기 때문이다. 사용자 지정 IP가 0.0.0.0/0 으로 설정 되어있으면 모든 IP 주소에서 접근을 허용한다는 것이다. 

    규칙 추가 버튼을 눌러 HTTP 프로토콜도 추가하면 웹에서 접근을 허용한다.  HTTP를 추가하고 좌측 하단 검토 및 시작 버튼을 눌러 마무리를 하자.인스턴스 상태가 pending으로 뜨는것은 실제로 인스턴스를 만드는 중이고, 초록불 running이 뜨면 가상 서버가 구동중이다. 이로써 EC2 생성을 완료하였다.

     

    보안 그룹 참고 

    https://bcp0109.tistory.com/356

     

    AWS 1편: EC2 생성 후 Spring Boot 띄우기

    Overview AWS EC2 인스턴스를 생성하고 Spring Boot 서버를 띄워보는 것까지 진행합니다. 주 목표는 서버를 외부에 제공하는 거라서 따로 배포 시스템을 구축하지 않고 단순히 빌드 파일을 복사해서 수

    bcp0109.tistory.com

     

    댓글