DevOps/AWS

[RDS] NestJS 애플리케이션 AWS에 배포하기 04

kyoulho 2023. 3. 19. 13:14

인프라 구성도

이번 시간에는 저번 시간에 이어 프라이빗 서브넷에 RDS를 구축합니다

데이터베이스 서브넷 그룹 생성

RDS를 이용하기 위해서는 서브넷 그룹을 생성해야 합니다. 서브넷 그룹은 두 개 이상의 가용영역에 생성된 프라이빗 서브넷으로 구성합니다.

이전에 새성했던 프라이빗 서브넷 두개를 선택후 생성합니다.

 

보안 그룹 생성하기

RDS에 연결될 보안 그룹을 생성합니다. 저는 MariaDB를 사용하기에 인바운드 규칙에 MYSQL/Aurora을 선택했고 소스로 EC2-SG를 선택했습니다.

EC2에 연결되어 있는 보안 그룹의 아웃바운드를 수정합니다. 대상으로 RDS에 연결되어있는 보안그룹을 선택합니다.

RDS 생성하기

사용하고 싶은 데이터베이스 엔진을 선택합니다. db 인스턴스 식별자와 마스터 사용자 이름, 마스터 암호를 입력해줍니다.

인스턴스 클래스는 프리티어가 지원되는 클래스를 선택했습니다. 스토리지도 프리티어가 있으니 확인하시고 선택하세요.

비용이 나오길 원치 않으시면 스토리지 자동 조정 활성화 옵션을 꺼주세요.

이전에 생성한 서브넷 그룹과 보안 그룹을 선택하여 줍니다. 로그 설정도 원한시는 데로 선택하여 주고 생성해줍니다. 

 

인코딩 및 타임존 설정하기

파라미터 그룹탭으로 이동합니다.

기본 파라미터 그룹은 수정이 되지 않기 때문에 새롭게 생성해줍니다.

방금 생성한 파라미터 그룹에서 character와 관련된 설정들을 utf8mb4(이모지)로 설정합니다.

character_set_filesystem은 binary로 설정해줍니다.

collation_connection, collation_server 는 정렬관련 설정입니다. utf8mb4_unicode_ci로 변경합니다.

time_zone은 Asia/Seoul로 설정합니다.

 

데이터베이스 수정화면에서 기본값을 방금 생성한 파라미터 그룹으로 수정한 후 즉시 적용을 선택해줍니다.

데이터베이스를 재부팅 해줍니다.

 

EC2에서 RDS 접속하기

EC2에 접속하는 방법은 EC2 인스턴스 선택 후 연결을 선택합니다. 저는 SSH 클라이언트로 접속합니다.

 

EC2에는 아직 아무것도 설치 하지 않은 상태이기에 몇가지 실행해 주어야합니다.

sudo apt update
sudo apt upgrade
sudo apt install mysql-client

mysql 클라이언트로 RDS에 접속합니다.

엔드포인트는 RDS 인스턴스 선택 후 상세 화면의 연결&보안 탭에서 확인 가능합니다.

만약 접속이 안된다면 보안 그룹이나 NACL 설정을 다시 한번 확인해주세요.

mysql -h [엔드포인트] -u [마스터 계정] -p [데이터베이스 이름]

 

설정값들을 확인해봅시다.

show variables where variable_name like 'c%';

잘 설정 되어있는 것을 확인 할 수 있습니다.