(AWS시리즈3) EC2 인스턴스 생성하기

EC2

  • EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
  • “AWS에서 리눅스 서버 혹은 윈도우 서버를 사용합니다” 라고 했을 때의 서버를 지칭
  • AWS에서 무료로 제공하는 프리티어 플랜에서의 제한

    • 사양이 t2. micro만 사용가능
    • vCPU(가상 CPU) 1 Core, 메모리 1GB 사양
    • 보통 vCPU는 물리 CPU 사양의 절반 정도의 성능을 가진다
    • 월 750시간의 제한. 초과하면 비용이 부과
    • 24시간\31일 = 744시간
    • 즉, 1대의 t2.micro만 사용한다면 24시간 사용할 수 있다.

EC2 인스턴스 생성하기

  • 리전을 서울로 변경하기

    • 리전이란 AWS의 서비스가 구동될 지역을 말함. AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상머신들을 사용할 수 있다. 이걸 리전이라 한다.
    • 서울 리전이 생기기 전까지는 국내 서비스들은 도쿄 리전을 사용했다. 한국과 가장 가까운 지역이라 가장 네트워크가 빠르기 때문. 현재는 서울 리전이 있어 국내에서 서비스한다면 무조건 서울 리전을 선택하면 된다.
    • 보통 처음 리전이 오아이주로 되어 있는데 서울로 변경
  • AWS 서비스에서 EC2 검색
  • EC2 대시보드가 나오면 중앙에 있는 인스턴스 시작 버튼 클릭.

    • 인스턴스란 EC2 서비스에 생성된 가상머신을 이야기한다.
  • 인스턴스 생성하는 첫 단계AMI(Amazone MAchine Image, 아마존 머신 이미지) 를 선택하는 것이다.

    • AMI란
    • AMI는 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것을 이야기한다.
    • 인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지
    • 아마존 리눅스 1 AMI 를 선택한다면 Amazon Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미
  • Amazone Linux AMI를 선택

    • 아마존 리눅스 2 대신에 아마존 리눅스 1(Amazon Linux AMI)을 선택한 이유는 아직 국내 자료가 리눅스 1이 더 많기 때문
    • 보통 센토스 6 버전으로 진행되는 자료들은 아마존 리눅스 1에서 모두 사용할 수 있다.
    • 아마존 리눅스 2는 센토스 7버전 자료들을 그대로 사용할 수 있다.
    • 센토스 AMI를 사용하지 않고 아마존 리눅스 AMI를 사용하는 이유는?
    • 아마존이 개발하고 있기 때문에 지원받기가 쉽다.
    • 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용할 수 있다.
    • AWS의 각종 서비스와의 상성이 좋다.
    • Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.
    • AWS를 사용하는데 굳이 AWS에서 지원하는 운영체제를 선택하지 않을 이유는 없다.
  • 인스턴스 유형 선택

    • 그룹=General Purpose / 유형=t2.micro, 프리 티어 사용 가능 / => 선택
    • t2는 요금 타입, micro는 사양.
    • 크레딧이란 일종의 CPU를 사용할 수 있는 포인트 개념이다. 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며, 사용하지 않을 때는 크레딧을 축적하고, 사용할 때 이 크레딧을 사용.
    • 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더 이상 EC2를 사용할 수 없다.
  • 세부정보 구성

    • 기업에서 사용할 경우 화면상에 표기된 VPC, 서브넷 등을 세세하게 다루지만, 여기서는 혼자서 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.
    • (AWS초보는) VPC와 서브넷 등은 AWS 서비스들의 네트워크 환경을 구성하는 정도로만 이해하면 된다.
  • 스토리지 선택

    • 30GB로 변경
    • 스토리지는 하드디스크(SSD)를 의미. 서버의 용량을 얼마나 정할지 선택
    • 설정의 기본값은 8GB이며 30GB 이상의 사이즈는 비용이 청구된다.
  • 태그 추가

    • 태그는 해당인스턴스를 표현하는 여러 이름으로 사용될 수 있다. EC2의 이름을 붙인다고 생각.
    • 키 : Name(EC2의 이름 붙이기) / 값 : ex) freelec-springboot2-webserivce
    • 여러 인스턴스가 있을 경우 이를 태그별로 구분하면 검색이나 그룹 짓기 편하므로 여기서 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록
  • 보안 그룹

    • 방화벽을 의미
    • 보안 그룹 이름엔 유의미한 이름으로 변경 (ex. freelec-springboot2-webservice-ec2)
    • SSH / TCP / 22 / 내IP -> AWS의 EC2의 터미널에 접속할 때를 의미
    • 내IP를 장소마다 변경하기 귀찮아서 전체공개하면 절대 안된다. pem키가 없으면 접속이 안 되니 전체 오픈(0.0.0.0/0, ::/0)하는 경우가 있다. 그러면 파일 공유 디렉토리나 깃허브 등에 실수로 pem 키가 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 알 수 있다.
    • 보안은 언제나 높을수록 좋으므로 pem키 관리와 지정된 IP 에서만 ssh 접속이 가능하도록 구성하는 것이 안전
    • 그래서 주 작업장(ex.집)의 IP를 등록하고 이동 작업시 해당 장소의 IP를 다시 SSH규칙에 추가하는 것이 안전
    • 현재 프로젝트의 기본 포트인 8080을 추가하고 [검토 및 시작] 버튼을 클릭(보안 이슈가 뜨지만 무시해도 됨)
  • pem 키(비밀키) 발급

    • 인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem키 외에는 접근을 허용하지 않는다.
    • 일종의 마스터키이므로 절대 유출하면 안 된다. pem키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장
    • 키 페어 이름 freelec-springboot-webservice
    • 키 페어 다운로드 클릭
  • 인스턴스 id 클릭 해서 EC2 목록으로 이동

    • 인스턴스가 생성중인 것을 확인할 수 있으며 Name태그로 인해 Name이 노출되는 것도 확인 가능하다.
    • 생성이 다 되었으면 IP와 도메인이 할당된 것 또한 확인가능하다.
  • EIP 할당(고정IP 할당)

    • 인스턴스도 결국 하나의 서버이므로 IP가 존재한다. 인스턴스 생성 시에 항상 새 IP를 할당하는데 추가조건이 있다. 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.
    • 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것.
    • 즉, 접속시마다 IP가 변경돼서 PC에서 접근할 때마다 IP주소를 확인해야 한다.
    • 그래서 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 가지게 해야 한다.
    • AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다.
    • 방법
    • EC2 인스턴스 페이지의 왼쪽 카테고리에서 탄력적 IP를 눌러 선택하고 주소가 없으므로 새 주소 할당버튼을 클릭해서 바로 할당 버튼을 클릭
  • 탄력적 IP와 EC2 주소를 연결

    • 탄력적 IP 확인 후 페이지 위에 있는 작업 버튼 -> 주소 연결 메뉴 선택
    • 프라이빗 IP에 탄력적 IP 입력
    • 연결하면 왼쪽 카테고리에 있는 인스턴스 탭을 클릭해서 다시 인스턴스 목록 페이지로 이동
    • 해당 인스턴스의 퍼블릿, 탄력적 IP가 모두 잘 되었는지 확인가능
    • 주의) 탄력적 IP는 생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다. 즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 하며 만약 더는 사용할 인스턴스가 없을 때도 탄력적 IP를 삭제해야 한다.

참고 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱


Written by@[June]
Backend Developer