[스프링] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - AWS 서버 환경을 만들어보자 - AWS EC2

24시간 작동하는 서버가 필요할 때 방법 3가지

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

일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하다. 만약 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다.

클라우드스 서비스는 쉽게 말하면 이넡넷을 통해 서버, 스토리지(파일 저장소), 데이터 베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다.

클라우드의 형태
1. Infrastructure as a Service(IaaS, 아이아스, 이에스)

  • 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스다.
  • 가상 머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스다.
  • AWS의 EC2, S3등
  1. Platform as a Service (PaaS, 파스)
  • 앞에서 언급한 IaaS에서 한 번 더 추상화한 서비스다.
  • 한 번 더 추상화했기 때문에 많은 기능이 자동화되어 있다.
  • AWs의 Beanstalk(빈스톡), Heroku(헤로쿠) 등
  1. Software as a Service (Saas, 사스)
  • 소프트웨어 서비스를 이야기 한다.
  • 구글 드라이브, 드랍박스, 와탭 등

AWS 회원 가입

https://aws.amazon.com/ko/

EC2 인스턴스 생성하기

EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버다.

EC2 이름은 Elastic Comptue Cloud에서 C가 2개가 있어 C2라는 이름이 붙었다. 비슷한 예로 AW3의 S3는 Simple Storage Service를 줄여서 S3라 한다.

리전을 서울로 바꿨다. 리전이란 AWS의 서비스가 구동될 지역을 이야기한다. AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상머신들을 사용할 수 있다. 이를 리전이라 한다.

EC2의 인스턴스를 클릭한다.

인스턴스 시작

책에는 Linux1을 선택하라고 되어있지만, Linux1 서비스가 종료되었다.

인스턴스를 생성하는 첫 단계는 AMI(Amazon Machine Image)를 선택하는 것이다. AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것을 이야기 한다. 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지다.

아마존 리눅스 2는 센토스7버전 자료들을 그대로 사용할 수 있다. 아마존 리눅스 AMI를 고른 이유

  • 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄보면 문제 없이 쓸 수 있다.
  • AWS의 각종 서비스와 상성이 좋다
  • Amazon 독자적인 개발 리포지토리를 사용하고 있어 yum이 매우 빠르다.

디폴트 설정

30GB까지 늘려준다.

EC2의 이름을 붙이는 것이다. 여러 인스턴스가 있으면 태그별로 구분하면 편하다.

이 보안 그룹 부분이 중요하다. 유형 항목에서 SSH면서 포트 항목에서 22인 경우 AWS EC2에 터미널로 접속할 때를 이야기 한다. pem 키가 없으면 접속이 안되니 전체 오픈 (0.0.0.0/0, ::/0)하는 경우를 종종 발견한다. 이렇게 되면 이후 파일 공유 디렉토리나 깃허브 등에 실수로 pem 키가 노출되는 순간 서버에서 가상화폐가 채굴 되는것을 볼 수 있다.

보안은 언제나 높을수록 좋으니 epm키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전하다. 그래서 본인 집의 IP를 기본적으로 추가하고 (내 IP를 선택하면 현재 접속한 장소의 IP가 자동 지정된다) 카페와 같이 집 외에 다른 장소에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전하다.

인스턴스도 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시에 새 IP를 항당하는데, 한가지 조건이 더 있다. 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.

그래서 고정 IP를 할당할 필요가 있다.

EIP 할당
AWS의 고정 IP를 Elastic IP라고 한다.

탄력젹 IP와 방금 생성한 EC2 주소를 연결하자.

주의할 점이 있다. 방금 생성한 탄력적 IP는 생성하고 EC2서버에 연결하지 않으면 비용이 발생한다. 즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 하며, 만약 더는 사용할 인스턴스가 없을 때도 탄력적 IP를 삭제 해야 한다.

EC2 서버에 접속하기

윈도우

https://www.putty.org/

Putty 다운로드

puttygen 실행
putty는 pem 키로 사용이 안되며 pem 키를 ppk 파일로 변환을 해야한다. 이 과정을 진행해주는 클라이언트가 puttygen이다.

conversions -> import key

pem키를 이용해 ppk 파일 만드로 저장한다.
putty 실행

  • HostName: username@public_Ip를 등록한다. 우리가 생성한 Amazon Linux는 ec2-user가 username이라서 ec2-user@탄력적 IP 주소를 등록하면 된다.
  • Post: ssh 접속 포트인 22를 등록
  • Connection type: SSH

왼쪽 사이드바 Connection -> SSH -> Auth -> browse -> ppk 등록

다시 돌아와서 Saved Sessions에서 이름 등록하고 저장
Open

아마존 리눅스1 서버 생성 시 꼭 해야 할 것들

  • Java 8 설치: 현재 이 프로젝트 버전은 Java 8이다
  • 타임존 변경: 디폴트는 미국 시간대다
  • 호스트네임 변경: 현재 접속한 서버의 별명 등록. 실무에서는 수십 대의 서버가 작동 된다. 구분하기 위해 호스트 네임을 필수로 등록한다.

Java 8 설치

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

자바 버전을 8로 변경하자

sudo /usr/sbin/alternatives --config java

타임존 변경

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

Hostname 변경

sudo vim /etc/sysconfig/network

sudo reboot

Hostname 등록하고 한 가지 작업 더 해야 한다. 호스트 주소를 찾을 때 가장 먼저 찾아보는 /etc/hosts에 변경한 hostname을 등록한다.

 sudo vim /etc/hosts

curl 등록한 호스트 이름

80포트로 접근이 안된다는 에러가 발생하면 잘된 것이다. 아직 80포트로 실행된 서비스가 없음을 의미한다.

좋은 웹페이지 즐겨찾기