AWS EC2 생성 및 설정
다음은 내가 작성한 EC2 생성 정리글이다.
https://yenjjun187.tistory.com/847
이름 및 태그
- 태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록한다.
- 태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다.
- EC2의 이름을 붙인다고 생각하고 넣으면 된다.
- 여러 인스턴스가 있을 경우 이를 태그별로 구분하면 검색이나 그룹 짓기 편하므로 여기서 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록한다.
AMI
- 인스턴스를 생성하는 첫 단계는 AMI(Amazon Machine Image, 아마존 머신 이미지)를 선택하는 것이다.
- AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것이다.
- 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 된다.
- 예를 들어 아마존 리눅스 1 AMI를 사용한다면 Amazon Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미한다.
- 여기서는 Ubuntu를 선택한다.
인스턴스 유형
- 인스턴스 유형에서는 프리티어로 표기된 t2.micro를 선택한다.
- t2는 요금 타입을 이야기하며, micro는 사양을 의미한다.
- t2 외에 t3도 있으며 보통 이들을 T시리즈라고한다.
- T 시리즈는 범용 시리즈로 불리기도 한다.
- 이들은 다른 서비스와 달리 크레딧이란 일종의 CPU를 사용할 수 있는 포인트 개념이 있다.
- 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며, 사용하지 않을 때는 크레딧을 축적하고, 사용할 때 이 크레딧을 사용한다.
- 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다.
키 페어
- 인스턴스로 접근하기 위해서는 pem 키(비밀키)가 필요하다.
- 인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않는다.
일종의 마스터키이기 때문에 절대 유출되어서는 안 된다. - pem 키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉터리로 저장한다.
- 기존에 생성된 pem 키가 있다면 선택하고 없다면 신규로 생성한다.
네트워크 설정
VPC (Virtual Private Cloud)
VPC로 이미 만들어진 VPC를 선택한다.
서브넷 (Subnet)
서브넷은 '기본 설정 없음'으로 선택한다.
보안 그룹
기존에 생성된 보안 그룹이 없으므로 보안 그룹엔 유의미한 이름으로 변경한다.
여기서는 프로젝트 EC2인스턴스만을 위한 별도의 보안 그룹을 생성한다.
- 인바운드 보안 그룹 규칙
- SSH (Secure Shell): SSH는 원격 컴퓨터를 안전하게 제어하기 위한 프로토콜이다.
- 이를 통해 사용자는 네트워크를 통해 다른 컴퓨터에 로그인하고, 명령어를 실행하며, 파일을 전송할 수 있다.
- SSH는 기본적으로 TCP 22번 포트를 사용한다.
- 이 규칙을 추가하면 사용자는 인터넷을 통해 EC2 인스턴스에 SSH 접속을 시도할 수 있게 된다.
- HTTP (Hypertext Transfer Protocol): HTTP는 웹 서버와 클라이언트 간에 정보를 주고 받기 위한 프로토콜이다.
- 웹 브라우저를 통해 웹페이지를 요청하거나, 웹 서버에서 웹페이지를 제공하는 등의 작업에 사용된다.
- HTTP는 기본적으로 TCP 80번 포트를 사용한다.
- 이 규칙을 추가하면 사용자는 인터넷을 통해 EC2 인스턴스에서 호스팅되는 웹페이지에 접속할 수 있게 된다.
- HTTPS (Hypertext Transfer Protocol Secure): HTTPS는 HTTP에 보안 기능이 추가된 프로토콜이다.
- 이를 통해 웹 서버와 클라이언트 간에 주고 받는 정보는 SSL/TLS를 통해 암호화되어, 외부의 공격자로부터 안전하게 보호된다.
- HTTPS는 기본적으로 TCP 443번 포트를 사용한다.
- 이 규칙을 추가하면 사용자는 인터넷을 통해 EC2 인스턴스에서 보안성이 강화된 웹페이지에 접속할 수 있게 된다.
- 이러한 규칙을 설정할 때는 각 규칙의 "소스" 항목을 잘 설정해야 한다.
- "소스" 항목은 해당 규칙이 적용될 IP 주소 범위를 설정하는 곳이다.
- 특정 IP 주소만 접속을 허용하려면 그 IP 주소를, 모든 IP 주소를 허용하려면 '0.0.0.0/0'을 설정하면 된다.
- SSH (Secure Shell): SSH는 원격 컴퓨터를 안전하게 제어하기 위한 프로토콜이다.
스토리지
- 스토리지는 하드디스크라고 부르는 서버의 디스크(SSD포함)를 이야기하며 서버의 용량을 얼마나 정할지 선택하는 단계이다.
- 설정의 기본값은 8GB이다.
- 30GB까지 프리티어로 가능하다.
- 여기서는 최대치인 30GB로 변경해 사용한다.
EC2 인스턴스 생성 확인
위 과정을 모두 완료했다면 인스턴스 생성 시작 페이지로 이동하고 인스턴스 id를 클릭해 EC2 목록으로 이동한다.
정상적으로 생성되었다면 다음과 같이 ip와 도메인이 할당된 것을 확인할 수 있다.
또한, Name 태그로 인해 Name이 노출되는 것도 확인 가능하다.
인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시 항상 새 IP를 할당하는데, 한 가지 조건이 더 있다.
같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.
즉, 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것이다.
이렇게 되면 매번 접속해야 하는 IP가 변경되어 PC에서 접근할 때마다 IP 주소를 확인해야 한다.
굉장히 번거로우므로 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 가지게 해야 한다.
그래서 고정 IP를 할당한다.
탄력적 IP 할당
- 주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 [연결] 버튼을 클릭한다.
도커 설치
프로젝트 배포 과정에서 Docker를 사용한다.
EC2 인스턴스 환경 내부에서 docker-compose.yml 파일을 실행시켜야 하므로 인스턴스 내부에 Docker를 설치하도록 한다. 생성된 EC2 인스턴스에 배포에 사용되는 Docker를 다음 블로그를 참고하여 설치한다.
https://everydayyy.tistory.com/121
시간 설정
생성된 EC2 인스턴스의 시간을 설정해보면 UTC(국제표준시)로 설정되어 있다.
이러한 인스턴스의 시간을 한국 표준시간으로 변경한다. 다음 글을 참고한다.
https://jane-aeiou.tistory.com/114
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
sudo apt install docker-compose
'기술 블로그 > ToValley' 카테고리의 다른 글
[Spring Boot + React]배포#5. AWS 보안 그룹 설정 (0) | 2023.12.17 |
---|---|
[Spring Boot + React]배포#4. AWS RDS 생성 및 설정 (1) | 2023.12.17 |
[EC2 + RDS + Docker + Spring Boot + React]배포#11. 문제 해결 과정 (0) | 2023.12.16 |
[Spring Boot + React]배포#2. 구성 이해 (2) | 2023.12.15 |
[Spring Boot + React]배포#1. 소개 (0) | 2023.12.15 |