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를 삭제해야 한다.