EC2 서비스 시작하기
EC2란?
AWS에서 제공하는 성능,용량 등을 유동적으로 사용할 수 있는 서버다.
보통 AWS에서 '리눅스 서버 혹은 윈도우 서버를 사용합니다'라고 하면 EC2를 이야기하는 것이다.
EC2란 이름은 Elastic Compute Cloud에서 C가 2개 있어서 C2라는 이름이 붙었다.
AWS에서는 대부분 첫 글자가 중복되면 숫자로 표기한다.
비슷한 예로 AWS의 S3는 Simple Storage Service를 줄여 S가 3개라고 하여 S3이다.
AWS에서 무료로 제공하는 프리티어 플랜에서는 EC2 사용에 아래와 같은 제한이 있다.
- 사양이 t2.micro만 가능하다.
- vCPU(가상 CPU) 1 Core, 메모리 1GB 사양이다.
- 보통 vCPU는 물리 CPU 사양의 절반 정도의 성능을 가진다.
- 월 750시간의 제한이 있고, 초과되면 비용이 부과된다.
- 24시간 * 31일 = 744시간이다.
- 즉, 1대의 t2.micro만 사용한다면 24시간 사용할 수 있다.
EC2를 만들기 전에 계정의 리전을 확인해봐야 한다.
리전이란?
AWS의 서비스가 구동될 지역을 이야기한다.
AWS는 도시별로 클라우드 센터를 지어, 해당 센터에서 구축된 가상머신들을 사용할 수 있다.
서울 리전이 생기기 전까지는 국내 서비스들은 도쿄 리전을 사용했다.
한국과 가장 가까운 지역이라 네트워크가 가장 빨랐기 때문이다.
현재는 서울 리전이 있어 국내에서 서비스한다면 무조건 서울 리전을 선택하면 된다.
서울로 리전을 변경했다면 화면 중앙에 있는 검색창에서 ec2를 입력한 다음 EC2 서비스를 클릭한다.
EC2 인스턴스 생성
EC2 서비스를 클릭하면 EC2 대시보드가 나온다.
여기서 중앙에 있는 [인스턴스 시작] 버튼을 클릭한다.
인스턴스란 EC2 서비스에 생성된 가상머신을 이야기한다.
1. AMI(Amazon Machine Image) 선택
AMI란?
EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어둔 것을 이야기한다.
인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 된다.
예를 들어, 아마존 리눅스 1 AMI를 사용한다면 Amazon Linux 1 OS 가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미한다.
기본적으로 Amazon Linux AMI가 선택되어있고 그대로 사용하면 된다.
아마존 리눅스 2 대신에 아마존 리눅스 1을 사용하는 이유는 아직 국내 자료가 리눅스 1이 더 많기 때문이다.
보통 센토스6 버전으로 진행되는 자료들은 아마존 리눅스 1에서 모두 사용할 수 있다.
아마존 리눅스 2는 센토스7 버전 자료들을 그대로 사용할 수 있다.
센토스 AMI를 사용하지 않고 아마존 리눅스 AMI를 사용한 이유
- 아마존이 개발하고 있기 때문에 지원받기가 쉽다.
- 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용할 수 있다.
- AWS의 각종 서비스와의 상성이 좋다.
- Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.
AWS를 사용하는데 굳이 AWS에서 적극적으로 지원하는 운영체제를 선택하지 않을 이유가 없다.
2. 인스턴스 유형 선택
인스턴스 유형에서는 프리티어에서 사용 가능한 t2.micro를 선택한다.
여기서 유형에 대해 짧게 소개하면 t2는 요금 타입을 이야기하며, micro는 사양을 이야기한다.
t2 외에 t3도 있으며 보통 이들을 T 시리즈라고 한다.
T 시리즈는 범용 시리즈로 불리기도 하고, 그만큼 다양한 사양을 상용할 수 있다.
AWS는 다른 서비스와 달리 크레딧이란 일종의 CPU를 사용할 수 있는 포인트 개념이 있다.
인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며,
사용하지 않을 때는 크래딧을 축적하고, 사용할 때 이 크래딧을 사용한다.
정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만,
크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다.
그래서 트래픽이 높은 서비스들은 T 시리즈를 쓰지 않고 다른 시리즈를 사용하기도 한다.
다만 그전까지는 활용도가 높기 때문에 시작하는 단계에서는 좋은 선택이다.
3. 네트워크 설정
기업상에서 사용할 경우 화면상에 표기된 VPC, 서브넷 등을 세세하게 다루지만,
여기서는 혼자서 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.
VPC와 서브넷 등은 AWS 서비스들의 네트워크 환경을 구성하는 정도로만 이해하면 된다.
1인 개발 시 혹은 대량의 서버를 사용하지 않는다면 굳이 별도로 구성할 필요가 없으므로
여기서는 기본 생성되는 값을 사용한다.
혹시나 좀 더 제대로 구성을 해보고 싶으신 분들은 AWS만 다루는 다른 서적을 참고하면 된다.
4. 스토리지 구성
스토리지는 흔히 하드디스크라고 부르는 서버의 디스크(SSD도 포함)를 이야기하며
서버의 용량을 얼마나 정할지 선택하는 단계이다.
여기서 설정의 기본값은 8GB이다.
하지만 프리티어에서는 30GB까지 설정이 가능하다.
물론 그 이상의 사이즈는 비용이 청구되니 30GB로 변경해주면 된다.
5. 인스턴트 이름 및 태그
필자는 인스턴스의 이름을 책을 따라 'jojoldu'로 명명했다.
태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록해준다.
태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다.
EC2의 이름을 붙인다고 생각하고 넣어주면 된다.
여러 인스턴스가 있을 경우 이를 태그별로 구분하면 검색이나 그룹 짓기 편하므로
여기서 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록한다.
6. 보안 그룹 추가
보안 그룹은 방화벽을 이야기한다.
'서버로 80포트 외에는 허용하지 않는다'는 역할을 하는 방화벽이 AWS에서는 보안그룹으로 사용된다.
기존에 생성된 보안 그룹이 없으므로 보안 그룹 이름엔 유의미한 이름으로 변경한다.
보안 그룹 설정은 네트워크 설정의 편집 버튼을 누르면 설정 화면이 나타난다.
'그림 3-9'의 보안 그룹 규칙 부분이 굉장히 중요한 부분이다.
유형 항목에서 SSH이면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접속할 때를 이야기한다.
pem 키가 없으면 접속이 안되니 전체 오픈(0.0.0.0/0,::/0)하는 경우를 종종 발견한다.
이렇게 되면 이후 파일 공유 디렉토리나 깃허브 등에 실수로
pem 키가 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 볼 수 있다.
보안은 언제나 높을수록 좋으니 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전하다.
그래서 본인 집의 IP를 기본적으로 추가하고 (내 IP를 선택하면 현재 접속한 장소의 IP가 자동 지정)
카페와 같이 집 외에 다른 장소에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전하다.
현재 프로젝트의 기본 포트인 8080을 추가해주면 된다.
7. 키 페어 생성
인스턴스로 접근하기 위해서는 pem 키(비밀키)가 필요하다.
인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어,
해당 pem 키 외에는 접근을 허용하지 않는다.
일종의 마스터키이기 때문에 절대 유출되면 안된다.
pem 키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장한다.
기존에 생성된 pem키가 있다면 선택하고 없다면 신규로 생성해주면 된다.
8. 인스턴스 생성 시작
pem 키까지 내려받았다면 우측의 인스턴스 시작 버튼을 클릭해서 인스턴스를 생성해준다.
인스턴스 시작 페이지로 이동되면 인스턴스 id를 클릭하여 EC2 목록으로 이동한다.
인스턴스가 생성된 것을 확인할 수 있으며 Name 태그로 인해 Name이 노출되는 것도 확인 가능하다.
생성이 완료되었다면 아래와 같이 IP와 도메인이 할당된 것을 확인할 수 있다.
인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다.
인스턴스 생성 시에 항상 새 IP를 할당하는데, 한가지 조건이 더 있다.
같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.
즉, 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것이다.
이렇게 되면 매번 접속해야 하는 IP가 변경돼서 PC에서 접근할 때마다 IP주소를 확인해야 한다.
굉장히 번거로우므로 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 가지게 해야 한다.
고정 IP 할당
1. EIP 할당
AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다.
EC2 인스턴스 페이지의 왼쪽 카테고리에서 탄력적 IP를 눌러 이동하고,
신규 등록을 위해서 [탄력적 IP 주소 할당] 버튼을 클릭한다.
따로 입력하지 않고 [할당] 버튼을 눌러주면 탄력적 IP가 할당된다.
2. EIP와 생성된 EC2 주소를 연결
방금 생성한 탄력적 IP를 확인하고, 페이지 위에 있는 [작업] 버튼 -> [탄력적 IP 주소 연결] 메뉴를 선택한다.
주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 [연결] 버튼을 클릭한다.
연결이 완료되면 탄력적 IP 주소에 연결된 인스턴스 ID와 프라이빗 IP 주소가 노출된다.
왼쪽 카테고리에 있는 [인스턴스] 탭을 클릭해서 다시 인스턴스 목록 페이지로 이동한다.
아래와 같이 인스턴스에 탄력적 IP가 잘 연결되었는지 확인한다.
여기까지 진행했으면 EC2 인스턴스 생성 과정은 끝이난다.
하지만, 주의할 점이 있다.
방금 생성한 탄력적 IP는 생성한 후 EC2 서버에 연결하지 않으면 비용이 발생한다.
즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 한다.
만약 더는 사용할 인스턴스가 없다면 탄력적 IP를 삭제해야 한다.
마찬가지로 비용 청구가 되므로 꼭 잊지 않고 삭제해야 된다.
다음번엔 로컬 PC에서 EC2 인스턴스로 접속하는 방법을 포스팅하겠다.
'🛠️Backend > Spring' 카테고리의 다른 글
[Spring Boot] 단위 테스트 성공 시 Spring Rest Docs 파일 생성 (2) | 2024.01.02 |
---|---|
[Spring Boot] 단위 테스트 코드 작성 (JUnit 5) (0) | 2024.01.02 |
[Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 12 (0) | 2023.03.19 |
[Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 11 (0) | 2023.01.21 |
[Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 10 (2) | 2023.01.20 |
댓글