[스프링부트] 6. AWS 서버 환경을 만들기

Bummy·2022년 9월 17일
0

springboot

목록 보기
14/15

외부에서 내가 만든 서비스에 접근하려면 24시간동안 작동하는 서버가 필요하다. 24시간 작동하는 서버에는 3가지 선택지가 있는데

  • 집에 PC를 24시간 구동시킨다.
  • 호스팅 서비스를 이용한다.
  • 클라우드 서비스를 이용한다.

일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하다. 만약 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드 서비스가 유리하다.
클라우드 서비스는 쉽게 말해서 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것을 의미한다. 이러한 클라우드 서비스를 이용하기 위해서 AWS 회원가입과 배포할 서버인 EC2를 생성하고 설정해본다.


1. AWS 회원가입

AWS 공식 사이트(https://aws.amazon.com/ko/)에서 회원가입을 진행해준다. 기본적인 주소와 카드 정보를 입력해준다.


2. EC2 인스턴스 생성하기

2.1 EC2

EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다. EC2 사용에는 다음과 같은 제한이 있다.

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

인스턴스란 EC2 서비스에 생성된 가상머신을 의미한다.

2.2 AMI

인스턴스를 생성하는 가장 첫 번째 단계는 AMI(Amazon Machine, Iamge)를 선택하는 것이다.
AMI란 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것을 의미함. 인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 된다.
책에서는 Amazon Linux AMI 1을 선택했는데 1을 찾을 수 없어 2를 선택했다.
AMI를 선택했다면 인스턴스 유형으로 t2.micro를 선택해주면 된다.
이후의 설정은 책에 나와 있는 순서에 따라 쭉쭉 진행해주면 된다.

2.3 보안

보안 그룹은 방화벽을 의미하는데 보안으로 인해서 ssh 접속이 안된적이 있어서 다시 공부한다는 느낌으로 정리하려고 한다.

유형 항목에서 SSH이면서 포트 항목이 22인 경우는 AWS EC2에 터미널로 접속할 때를 의미한다. pem 키가 ㅇ벗으면 접속이 안되니 전체 오픈(0.0.0.0 등)하는 경우가 있는데 이렇게 되면 이후 파일 공유 디렉토리나 깃허브 등에 실수로 pem키가 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 볼 수 있다.
-> 실제로 가상화폐 채굴로 타인이 이용하여 엄청난 금액의 이용료로 AWS에 제공해야한다는 기사를 본적이 있다.

pem 키 관리와 지정된 ip에서만 ssh 접속이 가능하도록 구성하는 것이 안전하다. 그래서 본인 집에서 ip를 기본적으로 추가하고 카페와 같이 집 이외의 다른 장소에서 접속할 때는 해당 장소의 ip를 다시 ssh 규칙에 추가하는 것이 안전하다.
-> 이걸 몰라서 본가로 내려왔을 때 왜 안되는 건지 여러번 고민했고 ip가 달라져서 그런가? 했던 생각이 맞았다.

인스턴스로 접근하기 위해서는 pem 키(비밀키)가 필요한데 인스턴스는 지정된 pem키와 매칭되는 공개키를 가지고 있어 해당 pem키 외에는 접근을 허용하지 않는다.
일종의 마스터키이기 때문에 절대로 유출되면 안된다. pem키는 잘 관리할 수 있도록 디렉토리로 저장한다.

인스턴스가 모두 설정되었다면 ip와 도메인이 할당된 것을 확인할 수 있다.

2.3 EPI

인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시에 항상 새 ip를 할당하는데 같은 인스턴스를 중지하고 다시 시작할 때에도 새 ip가 할당된다. 이럴 경우 요금을 아끼기 위해 인스턴스를 중지하고 다시 시작할 때마다 ip를 확인해서 변경해주어야한다.
이러한 불편함을 해결하기 위해서 매번 변경되지 않고 고정 ip를 가질 수 있도록 해야한다.
AWS의 고정 IP를 탄력적 ip라고 하는데 고정 ip를 사용하기 위해선 탄력적 ip를 만들어줘야한다.
책의 내용으로 쭉쭉 진행해주면 탄력적 ip를 할당 받을 수 있다.
탄력적 ip는 생성하고 EC2 서버에 꼭 연결을 해야한다.
그렇지 않으면 비용이 발생하며 아마 한정적인 자원을 무분별하게 점유하는 것을 막기 위한 방식인 것으로 생각한다.
인스턴스 설정으로 가서 탄력적 ip를 연결해주면 인스턴스 설정은 완료된다.


3. EC2 서버에 접속하기

방금 만들어진 EC2 서버에 접속해볼것이다. 윈도우와 맥을 나눠서 설명을 하고 있지만 나는 맥을 사용하고 있기에 맥 방식을 사용하여 서버에 접속해 볼 것이다.

AWS와 같은 외부 서버로 SSH 접속을 하려면 매번 다음의 명령어를 입력해주어야한다.

ssh -i pem 키 위치 EC2의 탄력적 ip 주소

이 과정이 번거로우므로 쉽게 ssh 접속할 수 있도록 설정할 것이다.
pem 키를 ~/.ssh/ 디렉토리로 옮겨 놓으면 ssh 실행시 pem 키 파일을 자동으로 읽어 접속을 진행한다.

cd pem 키를 내려받은 위치~/.ssh/

다음 명령어로 pem 키를 ~/.ssh/ 디렉토리로 옮겨주고
pem 키의 권한을 다음 명령어로 변경해준다.

chmod 600 ~/.ssh/pem 키 이름 

권한을 변경했다면 config 파일을 생성해서 설정을 마무리해준다.

vim ~/.ssh/config

생성한 config 파일의 실행 권한을 변경해준다.

chmod 700 ~/.ssh/config

다음 명령어까지 설정했다면 다음의 명령어로 접속을 진행하면 된다.

ssh config에 등록한 서비스명 


실행이 완료되면 다음과 같은 화면을 볼 수 있다.

아마존 리눅스 서버 생성 이후 해줘야하는 설정들이 있는데

  • java 8 설치
  • 타임존 변경
  • hostname 변경

다음과 같은 설정들은 책을 통해 설정하면 된다.

0개의 댓글