[AWS 5] EC2 인스턴스와 RDS 데이터베이스 연동하기
AWS

[AWS 5] EC2 인스턴스와 RDS 데이터베이스 연동하기

 AWS의 RDS 서비스를 이용하면 클라우드에서 데이터베이스 확장이 용이하고, 전문적인 업체가 보안 및 관리를 담당하기 때문에 유지하기 쉬워진다는 것이 장점입니다. 이번 포스팅에는 AWS의 RDS 서비스를 통해 클라우드 데이터베이스를 구축하고, EC2의 인스턴스와 연결해보도록 하겠습니다.

 

 

 

 

1)

1) 데이터베이스를 생성하기 전에 해야하는 작업들이 있습니다. 데이터베이스를 생성할 때 입력해야되는 EC2 보안 그룹, 서브넷 그룹을 설정하는 과정입니다. 연결할 인스턴스의 가용 영역, 보안 그룹 이름을 기억한 뒤에 해당 인스턴스를 클릭합니다.

 

 

 

AWS 구조

 서브넷은 VPC 보다 작고, EC2 인스턴스들을 묶어놓은 단위를 말합니다.

 

 

 

2)

2) 인스턴스의 VPC ID, 서브넷 ID를 기억합니다.

 

 

 

3)

3) 보안 그룹 탭으로 이동한 뒤, 보안 그룹 생성 버튼을 클릭합니다.

 

 

 

4)

4) 기본 세부 정보를 입력합니다. 그 뒤에 인바운드 탭에서 규칙 추가 버튼을 누릅니다. 유형은 MYSQL/Aurora로 설정하시고 돋보기 옆 빈칸에 1)에서 기억했던 보안 그룹 이름을 입력합니다.

 

 

 

5)

5) 보안 그룹을 생성합니다. 해당 인스턴스는 MySQL과 연결이 허용됐습니다.

 

 

 

6)

6) 이제 RDS 서비스로 이동한 뒤에, 서브넷 그룹 탭에서 DB 서브넷 그룹 생성을 클릭합니다.

 

 

 

7)

7) 서브넷 그룹 세부 정보를 입력합니다.

 

 

 

8)

8) 서브넷 그룹을 생성합니다. 나중에 EC2 인스턴스와 데이터베이스는 같은 서브넷 그룹에 위치하게 됩니다.

 

 

 

9)

9) MySQL 데이터베이스는 기본적으로 한글을 지원하지 않습니다. 그래서 파라미터 그룹 탭으로 이동하여 한글 지원을 위한 파라미터 그룹 생성을 클릭합니다.

 

 

 

10)

10) 파라미터 그룹 세부 정보를 입력한 뒤 생성합니다.

 

 

 

11)

11) 생성된 파라미터 그룹을 클릭합니다.

 

 

 

12)

12) char를 검색한 뒤, 파라미터 편집을 클릭합니다.

 

 

 

13) 모든 값들을 utf8로 설정합니다. (첨부 이미지 아래의 생략된 내용도 utf8로 편집)

 

 

 

14)
14)

14) collation을 검색한 뒤, 모든 값을 utf8_general_ci로 설정합니다.

 

 

 

15)

15) 변경 사항 저장을 클릭합니다. 이제, 데이터베이스를 만들기 위한 준비가 모두 끝났습니다.

 

 

 

16)

16) 데이터베이스 탭으로 이동한 뒤, 데이터베이스 생성을 클릭합니다.

 

 

 

17)

17) MySQL을 선택합니다.

 

 

 

18)

18) 프리티어 옵션을 선택하고, 설정을 입력합니다.

 

 

 

19)

19) 지금까지 위에서 설정했던 값들을 입력합니다.

 

 

 

20)

20) 파라미터 그룹을 입력합니다.

 

 

 

21)

21) 그 외의 내용은 건드리지 않고 데이터베이스 생성을 클릭합니다. (생성하는 시간이 꽤 걸립니다.)

 

 

 

22)

22) 이제 EC2 인스턴스에서 생성된 데이터베이스에 접속해보겠습니다. 데이터베이스를 클릭합니다.

 

 

 

23)

23) 데이터베이스의 엔드포인트 주소를 통해 접속할 수 있습니다.

 

 

 

$ sudo apt-get install mysql-server

PuTTY를 통해 인스턴스에 접속한 뒤, 해당 명령어를 통해 MySQL을 설치해줍니다.

 

 

 

24)

$ mysql -u admin -p --host 엔드포인트주소

24) 해당 명령어을 통해 mysql에 접속합니다. -u는 접속할 사용자를 의미합니다. 18)에서 입력한 admin을 입력합니다. -p는 포트번호를 의미합니다.(공백으로 두면 기본 값이 입력됩니다.) --host 뒤에 20)에서 기억한 엔드포인트 주소를 입력합니다. 패스워드는 18)에서 설정한 패스워드를 입력합니다. 입력할 때 보이지 않는 것이 정상이니 끝까지 입력하고 엔터를 눌러줍니다.

 그런데 error가 발생하는데요, 왜냐하면 우분투 20버전부터는 SSL로 연결할 때 보안상으로 막아뒀기 때문입니다. 이를 해결하기 위해서는 openssl 설정 정보를 수정해줘야 합니다.

 

 

 

25)

$ sudo vim /usr/lib/ssl/openssl.cnf

25) 해당 명령어를 통해 파일을 열어줍니다.

 

 

 

26)

# 파일 앞쪽에 아래의 코드 추가
openssl_conf = default_conf

# 기존에 있던
# 중간
# 파일 내용들

# 파일 가장 마지막에 아래의 코드를 추가합니다.
# [] 내용까지 모두 포함해야합니다.
[ default_conf ]
ssl_conf = ssl_sect

[ ssl_sect ]
system_default = ssl_default_sect

[ ssl_default_sect ]
CipherString = DEFAULT:@SECLEVEL=1

26) 위의 내용을 openssl.cnf 파일에 추가한 뒤 저장합니다. vim을 처음 사용하시는 분들을 위해 설명드리자면, i를 누르면 insert 모드로 변경하여 텍스트 입력이 가능해집니다. 모든 내용을 입력하고 esc를 눌러 모드를 종료합니다. 그 상태에서 :wq를 입력하여 저장하고 vim을 종료합니다.

 

 

 

27)

27) 이제 정상적으로 접속됨을 확인할 수 있습니다. 테스트를 위해서 테이블을 만들고 프로젝트를 실행시켜 보겠습니다.

 

 

 

28)

SHOW DATABASES;

28) 해당 명령어를 통해 데이터베이스 목록을 조회합니다.

 

 

 

29)

CREATE DATABASE mundododgeball;

29) 해당 명령어를 통해 mundododgeball 데이터베이스를 생성합니다.

 

 

 

30)

USE mundododgeball;

30) 해당 명령어를 통해 데이터베이스를 교체합니다.

 

 

 

31)

CREATE TABLE  users (
   userId VARCHAR(50),
   socketId VARCHAR(50),
   state VARCHAR(50),
   PRIMARY KEY (userId)
);

31) 해당 쿼리를 실행하여 테이블을 생성합니다.

 

 

 

32)

32) 해당 명령어들을 통해 테이블 생성과 테스트 데이터 입력이 완료됐음을 확인할 수 있습니다.

 

 

 

33)

 

cheonseungmin/mundododgeball

풀스택 개발한 웹 슈팅 게임. Contribute to cheonseungmin/mundododgeball development by creating an account on GitHub.

github.com

$ git clone https://github.com/cheonseungmin/mundododgeball.git

 

33) 데이터베이스 테스트를 위해 해당 명령어를 통해 프로젝트를 깃허브에서 가져옵니다.

$ npm install

그리고 디렉토리 이동후에 서버 실행을 위한 모듈들을 설치해줍니다.

 

 

 

34)

$ sudo vim server.js

34) 해당 명령어를 통해 server.js 파일을 편집합니다. 표시한 부분에 해당하는 값들을 입력합니다. host에는 엔드포인트 주소를 입력합니다.

 

$ node server.js

서버를 실행합니다.

 

 

 

35)

35) EC2 퍼블릭 도메인:3000 으로 접속하면, 직접 INSERT 했던 test1 데이터를 확인할 수 있습니다.

 

 이렇게 이번 포스팅에서는 AWS 서비스인 RDS를 통해 클라우드 데이터베이스를 생성하고, EC2의 인스턴스에 위치한 서버에서 연결하여 데이터 값을 성공적으로 가져올 수 있었습니다. 감사합니다.