클라우드/클라우드 실습 - AWS

AWS - RDS

simtongs 2022. 6. 17. 17:07

1. AWS RDS

 

 

 

1.1 RDS란?

 

 

 

 - RDS : Relational Database Service / 관계형 데이터베이스 서비스

 

 - RDS는 AWS에서 제공하는 관계형 데이터베이스 서비스로 클라우드에서 관계형 데이터베이스를

   간편하게 설정, 운영 및 확장할 수 있는 서비스이다.

 

 - 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 관리 작업을 자동화 하고, 사용자가 애플리케이션에

   집중하게 하여 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공하도록 지원해주는 서비스다.

 

 * IT 5대 관리 목록 : 성능, 용량, 비용, 장애, 보안

 

 - 위의 특성때문에 RDS는 사용자가 DB를 관리할 수 없음 [ Paas ] = root권한이 없고 사용자 권한만 부여하게 된다.

 

 

 

1.2 RDS의 사용

 

 

 

전 EC2 실습에서 두개의 인스턴스로 WEB 및 DB를 구성하여 서버를 구축해 보았다.

 

이번 RDS 실습에서는 위의 실습 구성에 DB 부분을 RDS를 사용해 서버를 구축하는 실습을 해볼 예정이다.

 

 

 

1.2.1 RDS의 설정 방식 차이

 

 

 

 1) RDS를 Public으로 설정 : 외부에서 접속 가능

  - 안전하지 않음 / 웹서버를 On premise로 사용하고 DB만 AWS에 설치하는 경우에 적합.

 

 2) RDS를 Private으로 설정 : 외부에서 접속이 불가능

 

 

 

1.2.2 RDS 활용 실습 계획

 

 

 

 

 

 

저번 3-Tier 구현에서 DB 서버 부분을 RDS로 구현하는 실습을 진행해 보겠다.

 

중요 과정으로는 RDS 생성과 RDS 조작을 위한 접속방법 및 외부 웹서버와의 연동 작업이 있다.

 

 

 

1.3 RDS 생성

 

 

 

1.3.1 VPC 수정

 

 

 

저번 실습에서 제작한 VPC에서 RDS에 접근하기 위한 설정을 해준다.

 

 

 

 

 

 

먼저 서브넷 두개가 필요한데 두 서브넷의 가용 영역을 다르게 해야한다.

 

 

 

 

 

 

저번에 생성한 서브넷은 가용영역이 끝자리 a 로 설정되어 있으며

 

 

 

 

 

 

다른 하나의 서브넷은 끝자리 b 로 설정해 놓았다.

 

 

 

서브넷의 가용영역 설정

HK_Subnet-Public : ap-northeast-2a
HK_Subnet-Pribvate : ap-northeast-2b

 

 

 

두개의 서브넷 생성 및 수정이 완료되었으면 자신의 VPC 페이지로 이동한다.

 

 

 

 

 

 

우측 상단에서 작업 탭을 열고 DNS 호스트 이름 편집DNS 확인 편집 에서 각각 체크를 한후 저장을 한다.

 

 

 

 

 

 

DNS 호스트 이름 편집 에서 DNS 호스트 이름활성화에 체크 후 변경 사항 저장 버튼 클릭.

 

 

 

 

 

 

DNS 확인 편집 에서는 DNS 확인활성화로 체크 후 변경 사항 저장 버튼으로 저장.

 

 

위의 과정을 완료했으면 저번 실습에서 만든 VPC에 RDS를 생성할 준비가 되었다.

 

 

 

1.3.2 RDS 생성

 

 

 

 

 

 

AWS 서비스 검색 탭에서 RDS를 검색후 접속한다.

 

 

 

 

 

 

RDS 페이지 접속 후 데이터베이스 생성 버튼을 누른다.

 

 

 

 

 

 

데이터베이스 생성 방식 선택은 표준 생성으로 진행하고

 

엔진 유형에서 각종 데이터베이스 엔진 목록이 있고 이중 자신에게 필요한 데이터베이스를 선택하면 된다.

 

이번 실습에서는 익숙한 MySQL로 선택했다.

 

 

 

 

 

 

템플릿은 테스트 용도인 프리 티어 를 선택한다.

 

 

 

 

 

 

밑의 설정에서 DB 인스턴스 식별자를 입력한다.

 

이후 자격 증명 설정에서는 RDS에 접근할 계정 명과 계정 패스워드를 설정해야 한다.

 

마스터 사용자 이름은 DB에 접근할 유저 명을 입력하고,

마스터 암호는 위 유저에 대한 패스워드를 입력하면 된다.

 

 

 

 

 

인스턴스 구성은 EC2 인스턴스와 같이 DB에 대한 클래스를 정할 수 있다.

 

최소한의 설정인 t2.micro를 선택했다.

 

만약 목록에 보이지 않는다면 밑의 이전 세대 클래스 포함을 체크하고 다시 목록을 보면 t2가 보인다.

 

 

 

 

 

 

연결 설정에서는 전에 제작한 VPC를 넣어주면 된다.

 

단, 서브넷 그룹의 경우 따로 제작한 적이 없으므로 default 값을 그대로 써도 무방하다.

 

VPC 보안 그룹의 경우 기존 항목을 사용해도 되고 새로 생성해도 무관하다.

 

나중에 EC2 인스턴스 생성 후 다시 보안 그룹에 대한 수정이 필요함으로 생성만 해주면 된다.

 

 

 

 

 

 

이외의 설정은 자신의 필요에 따라 수정해 주고 데이터베이스 생성을 마친다.

 

 

 

 

 

 

RDS 생성은 시간이 많이 소요 되므로 생성 중에 EC2에서 그누보드를 올리기위해 우분투를 올려본다.

 

 

 

1.4 EC2 인스턴스와 RDS 연동

 

 

 

1.4.1 쉘스크립트로 인스턴스에 Apache2 및 Gnuboard5 설치

 

 

 

저번 실습처럼 우분투 OS에 그누보드를 올려본다.

 

퍼블릭 서브넷에 우분투 인스턴스를 생성후 Apache2 와 gnuboard5를 올리면 된다.

 

먼저 실습에서 배웠던 각종 인스턴스 접속 방법으로 우분투와 연결한다.

 

 

 

 

 

 

이전 실습에서 커맨드라인을 일일이 입력하지 않고 이번 실습에서는 쉘 스크립트를 활용해 보자.

 

 

먼저 vi 편집기로 install.sh 파일을 생성한다.

 

 

 

sudo vi install.sh

 

 

 

 

 

 

apache2 및 gnuboard5 설치 쉘 스크립트

#!/bin/bash
sudo apt update
sudo apt install -y apache2 php php-mysql php-common php-json php-xml php-fpm php-gd php-curl git
cd /var/www/html
sudo git clone https://github.com/gnuboard/gnuboard5
cd gnuboard5
sudo mkdir data
sudo chmod 707 data
sudo service apache2 restart

 

 

 

vi 편집기 실행 후 위의 내용을 복사후 붙여넣기한다.

 

 

 

 

 

 

이후 chmod로 쉘스크립트 파일 install.sh 에 대해 755 권한을 부여해준다.

 

 

 

install.sh 에 대해 실행 권한 부여

$ sudo chmod 755 install.sh

 

 

 

 

 

 

실행 권한 부여가 끝났으면 쉘 스크립트를 실행하여 각종 웹서버 설치를 진행하면 된다.

 

 

 

쉘 스크립트 실행

$ sudo sh install.sh

 

 

 

스크립트가 실행되면 웹서버 및 그누보드가 설치과정이 쭉 실행되게 된다.

 

스크립트 작동이 완료되었으면 인스턴스의 공인IP주소 뒤에 /gnuboard5를 붙여 접속해 본다.

 

 

 

 

 

 

위와 같은 화면이 떳다면 Apache2 및 그누보드 탑재가 성공했다.

 

 

 

1.4.2 RDS 보안그룹 수정

 

 

 

위에서 인스턴스를 생성 후 웹서버 환경을 구축하였다.

이때 RDS와 인스턴스간의 연결이 필요하므로 RDS의 보안그룹을 수정해 준다.

 

 

 

 

 

 

RDS 페이지에서 연결 & 보안 페이지 안쪽의 VPC 보안 그룹 링크를 클릭하여 이동한다.

 

 

 

 

 

이후 인바운드 규칙 편집으로 들어간후 MySQL 유형에서 소스탭에 IP 주소를 설정해 준다.

 

이렇게 되면 VPC 내부의 Public 서브넷에서 접근이 가능하게 된다.

 

 

 

1.4.3 RDS에 접속 후 데이터베이스 생성

 

 

 

RDS에 board라는 데이터베이스를 생성해야 그누보드에서 접근이 가능하므로

우분투에서 SQL 클라이언트 설치 후 접속하여 db를 생성한다.

 

 

 

우분투에 MySQL Client 설치

$ sudo apt install mysql-client -y

 

 

 

 

 

 

이후 MySQL 클라이언트로 RDS에 접속한다.

 

이때 경로가 필요하므로 자신의 RDS 엔드포인트를 확인하고 복사한다.

 

 

 

 

 

 

RDS에 MySQL 접속 명령어

$ sudo mysql -h ( RDS 엔드 포인트 ) -u ( RDS 계정 명 ) -p

ex) sudo mysql -h hk-rds-private.chm9rhbwy6vo.ap-northeast-2.rds.amazonaws.com -u admin -p

 

 

 

RDS 계정명은 RDS 생성 과정에서 admin으로 지정해준 부분이므로 기억해서 입력한다.

 

이후 입력하는 패스워드 또한 동일하게 지정한 패스워드를 입력한다.

 

 

 

 

 

 

위와같이 진행할 경우 같은 서브넷에 있는 인스턴스에서 접속할 수 있는데

 

나중에 RDS를 Public으로 지정 후 위와같은 과정을 외부 데스크톱에서 MySQL 워크벤치와 같은 프로그램에서도

RDS 엔드포인트를 통해 접속이 가능하니 따로 실습을 가져보는것을 추천한다.

 

여튼 RDS에 MySQL로 접속이 성공하면 board 라는 데이터베이스를 생성한다.

 

 

 

board 데이터베이스 생성

mysql> create database board;

board 데이터베이스 생성 확인

mysql> show databases;

 

 

 

 

 

 

데이터베이스 board가 생성이 되었다면 그누보드 설치 준비가 완료되었다.

 

 

 

1.4.4 그누보드 설치 진행

 

 

 

다시 자신의 우분투 인스턴스의 공인 IP 주소 뒤에 /gnuboard5를 붙여 접속하고 설치를 진행한다.

 

 

 

 

 

 

Host의 경우 아까 확인했던 RDS의 엔드포인트 주소 뒤에 :3306으로 포트 번호를 붙여 입력하고

User와 Password 또한 RDS 생성때 설정한 계정과 패스워드를 입력하면 된다.

 

DB의 경우 아까 생성한 board를 넣어주고

 

하단의 최고관리자 정보입력을 마치고 다음 버튼으로 진행하면 된다.

 

 

 

 

 

 

잠깐의 로딩과 함께 설치 시작 안내 문구가 뜨게 되고 우측하단의 버튼을 누르면 그누보드 설치가 완료된다.

 

 

 

 

 

 

이렇게 DB 서버를 직접 구축하지 않고 AWS의 RDS를 이용하여 웹서버와 연동하는 실습을 해보았다.