[AWS] 서버 환경 구축 EC2, S3, Aurora Mysql 설정 - 1 (EC2)

 

서버 환경 구축 순서

 

  1. 현재글
  2. [AWS] 서버 환경 구축 EC2, S3, Aurora Mysql 설정 - 2 (S3)
  3. [AWS] 서버 환경 구축 EC2, S3, Aurora Mysql 설정 - 3 (Aurora Mysql)

 

 

시작에 앞서

인스턴스를 생성하는 이 부분은 뒤에 적을 내용의 흐름이 끊기지 않게만 간단히 적고,

필요한 부분만 캡처와 함께 설명을 덧붙여 넘어가려 한다.

모두가 생성하고 싶은 AMI, 아키텍처, 인스턴스 유형이 각기 다를 거라 생각해 불 필요한 부분인 것 같다.

(테스트용도로만 구성하고 싶으신 분들은 프리티어가 붙은 유형만을 선택해 진행하면 될 것 같다.)

 


EC2 대시보드 > '인스턴스 시작' 클릭

 

 

WEB Server EC2 생성

 

이름 및 태그 : web-server
애플리케이션 및 OS 이미지(Amazon Machine Image) : Amazon Linux 2023 AMI
아키텍처 : 64(Arm)
인스턴스 유형 : t4g.small
키 페어(로그인)  : 없음
네트워크 설정 : (아래 캡처 참조)
스토리지 구성 : 50 GiB gp3
(나머지는 기본값)

나의 경우 Public 환경인 WEB Server EC2의 키 페어 설정을 안 했지만 보안상 키페어를 발급하는걸 추천한다.

 

네트워크 설정에서 '편집' 클릭

 

네트워크 설정은 위처럼 세팅한다.

  • VPC : EC2가 위치해야 할 미리 생성해 둔 VPC
  • 서브넷 : EC2가 위치해야 할 Public subnet
  • 보안그룹 이름 : Public-sg-1
  • 설명: web-server security group
인프라 구축 단계라 유형에서 모든 트래픽 소스 유형은 내 IP를 선택했지만
실제로 사용할 때는 꼭 필요한 프로토콜이나 IP대역을 설정해서 사용해야 한다.

만약, aws console에서만 접속 하고 싶다면 13.209.1.56/29를 ssh 프로토콜로 허용해놓자.
참고사이트

 

 

'인스턴스 시작' 클릭

 

 

WEB Server EC2 정상 확인

 

인스턴스가 생성되고 인스턴스 상태가 '실행 중'으로 변경되면

우측 상단 '연결' 클릭 > 'EC2 인스턴스 연결'탭에서 '연결' 클릭

# 외부 인터넷 연결(네이버) 되는지 확인 명령어
curl -v naver.com

위처럼 로그가 나온다면 정상적으로 생성이 완료되었다.

 

또, 한 가지 더 설정해줘야 할 것이 남았다.

EC2를 생성할 때 이미 퍼블릭 IP를 할당받았지만 이 IP는 고정된 IP가 아니다.

그래서 우리는 탄력적 IP를 이용해서 고정된 IP를 EC2에게 할당해야 한다.

 

탄력적 IP 할당

 

왼쪽 메뉴 > 네트워크 및 보안 > 탄력적 IP

 

해당 메뉴에 들어왔으면 오른쪽 상단에 '탄력적 IP 할당' 클릭

다른 설정 필요 없이 '할당' 클릭

 

 

생성된 탄력적 IP 주소를 선택 한 뒤,

오른쪽 상단 '작업' 클릭 -> '탄력적 IP 주소 연결' 클릭

 

생성한 web-server 인스턴스와 프라이빗 IP 주소를 선택하고 '연결'을 클릭한다.

적용되어 있는 탄력적 IP 주소는 인스턴스 세부정보에서 확인할 수 있다.

 

 

WEB Server는 이제 모든 구성이 완료되었다.

 

 

 

이제 WAS Server를 구성해 보자

 

EC2 대시보드 > '인스턴스 시작' 클릭

 

 

WAS Server EC2 생성

 

이름 및 태그 : was-server
애플리케이션 및 OS 이미지(Amazon Machine Image) : Amazon Linux 2023 AMI
아키텍처 : 64(Arm)
인스턴스 유형 : t4g.small
키 페어(로그인)  : (아래 캡처 참조)
네트워크 설정 : (아래 캡처 참조)
스토리지 구성 : 50 GiB gp3
(나머지는 기본값)

 

 

키 페어(로그인) 

 

'새 키 페어 생성' 클릭

 

 

  • 키 페어 이름 : my-vpc-keypair

 

'키 페어 생성' 클릭하면

자동적으로 키페어가 생성되어 다운받아지며 키 페어 셀렉트 박스에 자동으로 생성된 값이 선택된다.

 

다운받아진 키페어 파일은 잘 관리하자 재발급 받을 수 없어 분실되면

새로운 키페어를 생성해서 대체해야 한다.

 

 

네트워크 설정에서 '편집' 클릭

네트워크 설정은 위처럼 세팅한다.

  • VPC : EC2가 위치해야 할 미리 생성해 둔 VPC
  • 서브넷 : EC2가 위치해야 할 Private subnet
  • 보안그룹 이름 : Private-sg-1
  • 설명: was-server security group
인프라 구축 단계라 유형에서 모든 트래픽을 받을 수 있게 선택했지만
실제로 사용할 때는 꼭 필요한 프로토콜이나 IP대역을 설정해서 사용해야 한다.

 

 

'인스턴스 시작' 클릭

 

 

WAS Server EC2 정상 확인

 

인스턴스가 생성되고 인스턴스 상태가 '실행 중'으로 변경된 것을 확인하면

'web-server' 인스턴스를 선택 > 우측 상단 '연결' 클릭 > 'EC2 인스턴스 연결'탭에서 '연결' 클릭한다.

 

우린 분명 was-server인스턴스를 생성했지만

private subnet 공간에 생성해 놓아서 다이렉트로 접속은 못한다.

 

그래서 우린 web-server를 통해 우회적으로 접속할 것이다.

보통은 bastion, jump server라는 것들을 사용해서 우회적으로 접속하지만
이 글에 aws 아키텍처는 사내 테스트용으로 설계되어 통제된 환경에서 사용하려다 보니
보안적으로는 특별히 신경을 안 써도 되기 때문에 이 부분이 빠져있다.

 

# root 권한을 얻어오자.
sudo -s

# 키페어 파일을 생성
nano my-vpc-keypair.pem

 

was-server를 생성할 때 다운로드하였던 키페어를 메모장으로 열어 내용을 모두 복사해서 

위의 명령어로 생성된 파일에 붙여 넣자.

 

이후, 'ctrl' + 'x' > 엔터로 빠져나오자.

 

# 생성된 파일이 현재 티렉터리 위치해 있는지 확인해보고 기억해두자.
pwd
# 접속한뒤 티렉터리 위치 변경을 안했다면 아마 home/ec2-user/일 것이다.

# 파일 권한 변경
chmod 400 my-vpc-keypair.pem

# RSA 방식으로 my-vpc-keypair.pem을 이용해서 
# ec2-user라는 username과 <was-server private ip>로 ssh 프로토콜을 통해 접속한다는 의미이다.
ssh -i "my-vpc-keypair.pem" ec2-user@<was-server private ip>

 

접속 중 fingerprint 얘기가 나오면 yes를 선택해 주자.

 

 

 

위처럼 ip가 바뀌었다면 정상적으로 was-server에 접속이 완료된 것이다.

 

 

was-server NAT 게이트웨이 정상 연결 확인

 

# 외부 인터넷 연결(네이버) 되는지 확인 명령어
curl -v naver.com

위처럼 로그가 나온다면 정상적으로 NAT 게이트웨이와 EC2가 위치되어 있는

Private Subnet도 연결이 성공되었다는 의미이다.

 

 

추가 EC2 환경 수정
  1. pem 없이 비밀번호로 접속
  2. 서버 시간 설정
1번의 경우
한번 등록해둔 pem 키페어를 계속 고정으로 사용하기 때문에
긴 명령어를 계속 사용하기도 귀찮은 것을 해결하기 위해 설정한다.

2번의 경우
예를 들어 EC2에 설치되어 있는 Tomcat이나 Jenkins에서 서버 시간을 가져와 로그를 찍어주는 스크립트가 있다면
한국 시간대와 맞지 않는 시간을 찍어 줄 것이기 때문에 설정한다.