본문 바로가기
공부/AWS

AWS) EC2 인스턴스 생성

by son_i 2024. 1. 20.
728x90

EC2란 ?) AWS에서 제공하는 클라우드 컴퓨팅 서비스.

 

1. EC2 인스턴스 시작하기

- 가상 컴퓨팅 환경으로 가상 머신을 생성하고 실행하는데 사용된다.


2. AMI (Amazon Machine Image) 선택하기

- AMI란 인스턴스를 시작하는데 필요한 정보를 제공하는 이미지로, 한 AMI로 여러 인스턴스를 생성할 수 있다.

 

- AWS에서 제공하는 AMI를 선택하여 사용할 수 있으며, Linux/Windows를 제공한다.

 

- 고유 이미지를 생성할 수도 있고, MarketPlace에도 다양한 이미지가 존재하지만, 대부분 유료이기 때문에 주의 !

 

-> 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워넣은 이미지로 생각하면 된다.

ex) 아마존 리눅스 1 AMI를 사용한다면 Amazon Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음,.

 

AWS 프리티어로 Amazon Linux AMI 선택.


 

3. 인스턴스 유형 선택하기

- 인스턴스는 5가지 유형으로 나뉘며, 각 유형별로 다양한 인스턴스 크기를 제공한다.

  범용, 컴퓨팅 최적화, 메모리 최적화, 액셀러레이티드 컴퓨팅, 스토리지 최적화

 

프리티어로 사용가능한 t2.micro 선택

t2는 요금 타입을 의미. micro는 사양을 의미.


 

4. 키페어 생성하기

- 인스턴스로 접근하기 위해서는 pem 키(비밀키)가 필요.

 

- 인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않음.

 

- 일종의 마스터 키로 절대 유출되면 안 되고 , 다시 다운 받을 수 없기 때문에 절대 저장된 위치를 잃어버리면 안 됨 !


5. 보안그룹 구성하기

- 보안그룹은 EC2 인스턴스에 허용되는 인바운드, 아웃바운드 트래픽을 제어하는 가상 방화벽이다.

 

- 기본 보안 그룹은 모든 트래픽을 허용하며, 상태 기반 규칙을 사용한다.

 

- 유형 항목에서 SSH이면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접속할 때를 의미.

  pem 키가 없으면 접속이 안 돼서 전체 오픈(0.0.0.0/0, ::/0)하는 경우가 종종 있음.

  실수로 pem 노출되는 순간 서버에서 가상화폐가 채굴 될 것임 ... ! 주의

 

보안은 높은 것이 좋으니 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전.

집 IP를 기본으로 추가하고 (내 IP를 선택하면 현재 접속한 장소의 IP가 자동 지정됨)

카페와 같은 집 외의 장소에서는 해당 장소의 IP를 다시 SSh 규칙에 추가하는 것이 안전.

 

SSH 소스를 내 IP로 수정하고 8080 포트를 추가했다. 8080 전체 오픈은 위험한 일이 아니라 해놓음.

 

 


6. 스토리지 구성

- 스토리지는 하드디스크라고 부르는 서버의 디스크(SSD도 포함)를 이야기하며 서버의 용량을 얼마나 정할지 선택하는 단계

 

- 기본값은 8GB이며 30GB까지 프리티어로 설정 가능.

 

다른 세부 설정들은 그대로 두고 인스턴스 시작

 

잘 생성이 되었다 ~

 

몇 가지 추가해야할 사항이 남았다.

 


7. 탄력적 IP 할당하기

- AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다.

 

- 인스턴스를 생성할 때는 항상 새 IP가 할당 되고, 

  인스턴스를 중지하고 재시작하면 새로운 IP가 할당되기 때문에 고정적인 IP를 가질 수 있도록 할당.

 

- 주의 ! EIP를 만들고 EC2에 연결하지 않으면 과금이 되기 때문에 주의 !!!

 

별 다른 설정 없이 할당을 누른다.

 

 

탄력적 IP주소 연결을 통해 EC2 인스턴스와 연결해준다.

 


8. 윈도우에서 SSH 접속하기

 - puttygen.exe 실행

 Conversions > Import key 선택해서 내려받은 pem 키 선택.

 

그럼 다음과 같이 변환이 자동으로 변환이 진행됨.

save private key 눌러서 ppk 파일 생성

ppk 파일 이름과 저장위치 지정 후 저장.

 

- putty.exe 실행하여 각 항목 등록.

 

 

 

· HostName : username@public_Ip를 등록. 우리가 생성한  Amazon Linux의 username은 ec2-user.

   > ec2-user@탄력적 IP 주소 등록하면 됨/

 

· Port : ssh 접속 포트인 22 등록.

 

· Connection type : SSH 선택.

 

항목들을 다 채우고

Connection > SSH > Auth >Credentials 선택해서 ppk 파일 업로드 후

 

다시  Session 탭으로 와서 Saved Sessions 하고 open 클릭

 

요런 SSH 접속 알림이 뜸. Accept 클릭

 

잘 접속이 되었습니다 ~~

 


리눅스 운영서버에서 해야할 설정 작업

1.  Java 8 설치 : 현재 프로젝트 버전은 Java 8

 

설치 가능한 자바 조회

yum list java*

 

 

자바 1.8 설치

sudo yum install java-1.8.0-amazon-corretto.x86_64

 

현재 자바 버전 확인

java -version

 

2. 타임존 변경 : 기본 서버의 시간은 미국 시간대. 한국 시간대가 되어야만 우리가 사용하는 시간이 모두 한국 시간으로 등록되고 사용됨.

 

EC2 서버의 기본 타임존인 UTC는 한국 시간과 9시간 차이남. 

이 경우 Java 애플리케이션에서 생성되는 시간도 모두 9시간 씩 차이나기 때문에 꼭 수정해야 함.

 

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

 

KST로 나오면 정상적으로 변경됨.

 

3. 호스트네임 변경 : 현재 접속한 서버의 별명 등록. 실무에서는 한 대의 서버가 아닌 수십 대의 서버가 작동하기 때문에 IP만으로 어떤 서버가 어떤 역할을 하는지 알 수 없음. 이를 구분하기 위해 호스트 네임을 필수로 등록.

 

$ sudo vim /etc/sysconfig/network

 

HOSTNAME 항목을 원하는 서비스 명으로 변경

 

다시 접속하면 HOSTNAME이 잘 변경됨 ! 은 무슨 안 바꼈는데요 

 

요 방법도 했다가 ssh 껐다 키니까 바뀌었음 !

 

다시 해보니 아래 방법으로 하니까 바뀌네잉 config 파일은해도 안 된다 ? 왜징

암튼 뿅

됐음

 

마지막으로 호스트 주소를 찾을 때 가장 먼저 검색해보는 /etc/hosts에 변경한 hostname을 등록해야함.

$ sudo vim /etc/hosts

 

잘 등록이 되었는지 확인

$ curl 등록한 호스트이름

 

 

잘 등록이 되었으면 80포트로 접근이 안 된다는 에러가 발생함.

== 아직 80 포트로 실행된 서비스가 없음을 의미. 

== curl 호스트 이름으로 실행은 잘 되었음을 의미.

 

끝 !


참고

스프링부트와 AWS로 혼자 구현하는 웹 서비스

https://velog.io/@kyj311/AWS-EC2-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

728x90