개발놀이터

데이터베이스 서버와 애플리케이션 서버를 분리해보자 : 실전2 (EC2 생성) 본문

사이드 프로젝트/온라인 쇼핑몰 ver.4

데이터베이스 서버와 애플리케이션 서버를 분리해보자 : 실전2 (EC2 생성)

마늘냄새폴폴 2023. 8. 13. 17:18

이전 포스팅에서 AWS 설정을 마무리지었습니다. 이번엔 public subnet에 애플리케이션 서버를 두고 private subnet에 데이터베이스 서버를 둬보겠습니다. 

 

이전 포스팅과 이어지는 포스팅입니다. 

 

https://coding-review.tistory.com/452

 

데이터베이스 서버와 애플리케이션 서버를 분리해보자 : 실전1 (VPC와 서브넷)

앞선 포스팅에서 우리는 VPC와 서브넷, 라우터와 라우팅 테이블, 인터넷 게이트웨이, NAT 게이트웨이까지 알아봤습니다. 이번 포스팅에선 그 중 첫 번째 단계라고 볼 수 있는 VPC와 서브넷을 만들

coding-review.tistory.com

 

EC2 연결

1. 보안 그룹 생성

EC2를 만들기 전에 EC2에 연결할 보안그룹을 먼저 생성해주도록 하겠습니다. 

 

EC2 페이지에서 왼쪽 카테고리에 보안 그룹이 있습니다. 보안 그룹을 클릭하고 "보안 그룹 생성"을 클릭합니다. 

 

보안 그룹 이름, 설명을 적으시고 VPC는 우리가 만든 VPC를 선택해야합니다. 

 

그리고 인바운드 규칙에 웹 요청인 HTTP와 HTTPS 그리고 Putty를 이용해 들어가기위해 SSH 포트도 열어주고 저는 스프링을 공부하기 때문에 스프링에서 사용하는 대표적인 포트인 8080포트를 열어줬습니다. 

 

이제 데이터베이스 보안 그룹을 생성해봅시다. 

 

보안 그룹 이름과 설명을 적고, 앞서 설정한 것과 마찬가지로 우리가 만든 VPC를 설정해야합니다. 

 

그리고 인바운드 규칙을 SSH와 저는 MySQL을 사용할 것이기 때문에 3306포트를 열어주도록 하겠습니다. 

 

자 이제 EC2 인스턴스를 만들어보죠

 

2. application server EC2 생성

먼저 public subnet에 연결될 application server를 만들어줍니다. AMI는 Ubuntu 22.0.4 LTS 버전을 선택했습니다. 

 

인스턴스는 medium을 선택했습니다. 도커를 사용할 것이기 때문에 medium은 사용해야 렉이 걸리지 않습니다. 

 

물론 medium은 한 달 기준 5만5천원정도 비용이 발생합니다. 때문에 실습하고 갖다버릴 인스턴스입니다...

 

그리고 키 페어를 생성합니다. 

 

저는 Putty를 사용할 것이기 때문에 ppk를 만들어줍니다. 

 

여기서 pem 키와 ppk 키의 차이를 잠깐 설명하고 넘어가자면 pem은 private key이고 ppk는 public key입니다. 

 

이제 우리가 만든 VPC와 서브넷을 연결해줄겁니다. 

맨 처음엔 네트워크 설정이 닫혀있는데 이걸 열어주시고 편집을 눌러줍니다. 

 

VPC를 우리가 만든 VPC로 선택하고 서브넷은 public subnet을 연결합니다. 

 

그리고 방금 만든 application-SG를 선택합니다. 

 

여기서 다시 정리하자면 application-SG는 웹 요청을 위한 HTTP, HTTPS 그리고 Putty로의 접속을 위한 SSH, 스프링  프로젝트를 위한 8080포트를 열어줬습니다. 

 

3. database server EC2 생성

이름을 입력하고 AMI는 Ubuntu 22.0.4 LTS 버전을 선택했습니다. 

 

인스턴스도 medium을 선택합니다. 도커를 사용할 것이기 때문이죠. 

 

새 키페어를 만들어봅시다. 

 

앞서 pem 키와 ppk 키의 차이에 대해서 설명해드렸죠? 

 

키의 특성 때문에 우리는 private subnet에서 운영할 EC2 인스턴스인 데이터베이스 서버의 키를 private 하게 관리해야합니다. 

 

pem 키를 선택하고 키를 생성해줍니다. 

 

그리고 이번에도 마찬가지로 네트워크 설정을 펼쳐주시고 편집을 누릅니다. 

 

VPC는 우리가 만든 VPC를 선택하고 서브넷은 database-subnet을 선택합니다. 

 

그리고 보안 그룹은 앞서 만들었던 database-SG를 선택합니다. 

 

여기서 다시 정리해보자면 database-SG는 Putty를 이용하기위해 SSH 포트와 MySQL을 위한 3306 포트를 열어두었습니다. 

 

포스팅이 너무 길어져서 EC2 연결은 다음 포스팅에서 다루도록 하겠습니다. 

 

다음 포스팅

https://coding-review.tistory.com/454

 

데이터베이스 서버와 애플리케이션 서버를 분리해보자 : 실전3 (EC2 연결)

앞선 포스팅에서 우리는 EC2 인스턴스를 생성했습니다. 이제 우리는 EC2 인스턴스에 접속해보도록 하겠습니다. 이전 포스팅과 연결되는 포스팅입니다. https://coding-review.tistory.com/453 데이터베이스

coding-review.tistory.com