본문 바로가기
Book/스프링 부트와 AWS 웹 서비스

[AWS] 서버 환경 구성하기 - EC2

by 달의 조각 2023. 2. 22.
이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다.

 

1. EC2 인스턴스 생성
2. 탄력적 IP 만들기
3. EC2 인스턴스 접속하기

 

더보기

🍌 24시간 구동하는 서버 구성하기

  1. 개인 PC를 24시간 구동시킨다.
  2. 호스팅 서비스(Cafe 24, 코리아호스팅 등)을 이용한다.
  3. 클라우드 서비스(AWS, AZURE, GCP 등)을 이용한다.

1번과 2번 방법이 비용이 저렴하지만 특정 시간대에 트래픽이 몰리는 시스템의 경우 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드 서비스는 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다.

 


 

  EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다. 인스턴스를 생성하기 전에 리전이 서울로 설정되어 있는지 확인하자.

1. AMI(Amazon Machine Image)

  EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것이다. Amazon Linux AMI 2를 선택했다.

  • 아마존에서 개발하고 있기 때문에 지원받기가 쉽다.
  • 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄 본 사람일수록 문제 없이 사용할 수 있다.
  • AWS의 각종 서비스와의 상성이 좋다.
  • Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.

 

2. 인스턴스 유형

  프리티어로 표기된 t2.micro를 선택했다. t2는 요금 타입을 말하고, micro는 사양을 말한다. T 시리즈는 범용 시리즈이다. 크레딧이라는 일종의 CPU를 사용할 수 있는 포인트 개념이 있는데, 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 된다. 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더 이상 EC2를 사용할 수 없다.

 

3. pem 키(비밀키) 생성

  인스턴스는 지정된 pem 키와 매칭되는 공개키를 가지고 있어서 발급한 pem 키로만 접근할 수 있다. 일종의 마스터키이므로 절대 유출하면 안 된다!

 

4. 보안 그룹

  보안 그룹은 방화벽을 말한다. '서버로 80 포트 외에는 허용하지 않는다.'와 같은 설정을 할 수 있다.

  1. SSH이면서 22 포트인 경우: AWS EC2에 터미널로 접속할 때이다. pem 키가 없으면 접속이 안 되지만 유출될 경우를 대비해 전체 오픈을 하면 안 된다!!! 정해진 IP에서만 접속할 수 있도록 집 IP에서만 접속 가능하도록 했다.
  2. 현재 프로젝트의 기본 포트인 8080: 8080은 열어 두어도 위험하지 않다.

 

5. 스토리지

  스토리지는 하드디스크라고 부르는 서버의 디스크(SSD 포함)를 이야기하며, 서버의 용량을 설정한다. 프리티어로 30GB까지 가능해서 30GB를 선택했다.

 


 

🔮 탄력적 IP 만들기

  인스턴스도 하나의 서버이기 때문에 IP가 존재한다. 문제는 인스턴스를 중지하고 다시 시작하면 새 IP가 할당된다는 것이다. 이렇게 IP가 변경되면 번거롭다. 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 갖도록 고정 IP를 할당해 보자.

AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다. 발급받은 후 EC2 인스턴스를 [주소 연결]을 통해 연결하면 된다.

 


 

🔮 EC2 서버에 접속해서 기본 설정하기

  윈도우에서 SSH 접속을 하기 위해서 별도의 클라이언트인 PuTTY를 설치하거나 기본 터미널을 통해 이용할 수 있다. 나는 이 글을 참고해서 PowerShell에서 접속하도록 했다.

더보기
pem 키 등록

java 8 설치하기

sudo yum install -y java-1.8.0-openjdk-devel.x86_64 # 설치
sudo /usr/sbin/alternatives --config java # 인스턴스 Java 버전 변경

java -version

타임존 변경

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/seoul /etc/localtime
date # 시간 확인

Hostname 변경

여러 서버를 관리할 경우 IP 만으로 어떤 서비스의 서버인지 구분하기 어려우므로 설정한다. 참고

sudo hostnamectl set-hostname 원하는이름.localdomain
sudo vim /etc/hosts
127.0.0.1 등록한HOSTNAME # Failed to connect to ~가 나오면 성공!

댓글