엘라스틱빈스톡과 RDS를 결합하여 프로젝트를 배포해보겠습니다.
RDS 구성방법과 환경속성을 세팅하는 방법을 알아보고
VPC 구성, 아키텍처 구상에 대해 공부해 보겠습니다.
전체Flow 입니다.
1. 엘라스틱빈스톡 생성
엘라스틱 빈스톡을 생성하겠습니다.
엘라스틱 빈스톡 생성은 아래 링크를 참고하세요.
AWS Elastic Beanstalk란? (생성해보기)
AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포
velog.io
엘라스틱 빈스톡 생성 시 추가할것은 환경속성을 추가하는 것입니다.
url: jdbc:mysql://DB_URL:(포트번호)/(DB스키마)
url: jdbc:mariadb:// {rds.port}/${rds.db.name}
RDS_HOSTNAME : IP 주소
RDS_DB_NAME : readnthink
RDS_PORT : 3306
RDS_USERNAME : {DB_NAME}
RDS_PASSWORD : {DB_PASSWORD}
RDS_HOSTNAME은 RDS 생성 후에 mariaDB의 IP 주소로 변경해야 합니다!
RDS는 엘라스틱빈스톡을생성 할 때 추가할 수 있지만 나중에 직접 추가하겠습니다.
2. VPC 구성
엘라스틱빈스톡을 생성하면 EC2가 만들어지고 EC2는 VPC 내부에 생성이 됩니다.
RDS (MariaDB)를 생성한 뒤 EC2가 포함되어있는 VPC 안에 포함시킬것입니다.
보안그룹에는 22포트와 80포트만 열여있는 상태입니다.
여기에 RDS를 추가하겠습니다.
MariaDB를사용할것입니다.
VPC (Virtual Private Cloud)
VPC (Virtual Private Cloud)는 퍼블릭 클라우드환경에서 사용할 수 있는 고객 전용 사설 네트워크 입니다.
즉, 가상으로 논리적으로 공간을 격리하는데, 우리가 사용하는 EC2, RDS 등이 이 격리된 공간 위에서 리소스를 생성하는 것입니다.
하나의 계정에서 생성한 리소스들만의 격리된 네트워크를 만들어주는 기능이 바로 VPC이고,
격리되어 있기 때문에 다른 사람들은 접근하고 보는 것이 불가능해집니다.
VPC 사용 이유
VPC의 목적은 다양할 수 있지만 일반적으로 보안을위해 AWS 리소스간 허용을 최소화하고 그룹별로 손쉽게 네트워크를 구성하기위해 많이사용합니다.이외에도 독립적인 VPC간 네트워크 통신을 위한 VPC피어링, 기존 사용하는 온프레미스와 VPC를 연결하는 AWS Diarect Connect, VPC에서 발생하는 로그를 기록하는 VPC FLow Logs와같은 서비스가있습니다.
즉, 아래와 같은 상황에 사용하게 됩니다.
- 보안
- 그룹별 네트워크 구성
- VPC 피어링 : 독립적인 VPC간 네트워크 통신
- AWS Diarect Connect : 기존 사용하는 온프레미스와(가상 OS 환경 (EC2)) VPC를 연결
- VPC Flow Logs : VPC에서 발생하는 로그 기록
우리의 목적은 보안을 위해 VPC 안에 EC2와 RDS를 위치시킬 것입니다.
이렇게 하면 우리의 VPC만 외부접근이 가능하기 때문에,
외부에서 EC2로 접근했을 떄 내부적으로 RDS로 접근 할 수 있도록 설정할 수 있습니다.
추가적으로 RDS에 로컬 컴퓨터에서 접근이 가능하도록 설정해야 합니다.
로컬 컴퓨터에서 3306포트로 RDS에 접근하여 테이블 생성 등의 과정이 필요하기 때문입니다.
접근설정 방법
- RDS에 EC2만 접근이 가능하게 하기 위해서는 EC2의 퍼블릭IP, 사설IP에서만 접근 가능하게 설정 할 수 있습니다.
- EC2가 있는 보안그룹에 RDS를 포함시키면 됩니다.
- 같은 보안 그룹끼리 접근 가능하도록 설정 할 수 있기 떄문입니다.
- 그 후 3306포트를 개방하면 됩니다.
RDS 생성
이제 엘라스틱 빈스톡에 RDS를 추가하겠습니다.
aws > rds 검색 > 데이터베이스 생성
퍼블릭 엑세스를 허용해주면 외부에서 누구나 접근이 가능한 상태가 됩니다.
이제 로컬 컴퓨터에서만 외부 접근이 가능하도록 설정하겠습니다.
RDS생성이 완료되면 엔드포인트를 확인할 수 있습니다.
엔드포인트가 RDS의 주소입니다.
인바운드 규칙 편집
현재 해당 보안그룹은 EC2와 RDS가 같이 사용하고 있습니다.
보안 그룹 탭에서 RDS의 3306포트를 내 IP에만 열어주면
3306포트로는 내 로컬 컴퓨터에서만 접근이 가능합니다.
그 다음 EC2가 RDS에 연결이 가능해야 하기때문에 EC2에게도 3306 포트를 열어줍니다.
RDS 접속 후 확인
Name : aws-v4-maria
HostName : RDS엔드포인트
username : RDS_USERNAME
Password : RDS_PASSWORD
성공적으로 접속하였습니다.
create database readnthink default character set utf8;
USE `readnthink`;
CREATE TABLE `readnthink`.`Book`(
id bigint auto_increment primary key,
title varchar(255),
content varchar(255),
author varchar(255)
);
select * from readnthink.Book;
한글 설정을 스키마 생성시 해주는것이 좋습니다.
스키마와 테이블까지 잘 만들어 졌습니다.
스키마명은 환경설정에 RDS_HOST 와 일치해야 합니다!
참고자료
'AWS' 카테고리의 다른 글
엘라스틱빈톡 & DB & CI/CD 배포하기 2 (CI/CD, Webhock - GitAction) (0) | 2023.11.13 |
---|---|
엘라스틱빈톡 & DB & CI/CD 배포하기 1 (CI/CD, Webhock - GitAction) (0) | 2023.11.13 |
엘라스틱 빈스톡 SSH 접속 후 nginx, spring 동작 및설정 확인하기 (0) | 2023.11.12 |
AWS 엘라스틱 빈스톡 내부 구성 이해하기 (0) | 2023.11.12 |
AWS 재배포 직접 해보기 및 crontab 문제점 파악 (0) | 2023.11.11 |