Cloud_AWS RDS 실습

목표 아키텍처

실습 단계

  1. Cloud Formation을 이용해서 기본 인프라 배포
  2. RDS 생성하고 웹 서버와 연동
  3. RDS 고가용성을 위한 Multi-AZ 구성하고 동작 확인
  4. RDS 성능 확장을 위한 Read Replica를 구성하고 동작 확인
  5. 실습을 위한 자원 모두 삭제

실습 1단계(Cloud Formation을 이용한 기본 인프라 배포)

스택 생성 완료

 

생성 자원 이름 정보
VPC CH6-VPC 10.6.0.0/16
인터넷 게이트웨이 CH6-IGW  
퍼블릭 라우팅 테이블 CH6-PublicRT  
프라이빗 라우팅 테이블 CH6-PrivateRT  
서브넷1(퍼블릭) CH6-SN1 CH6-PublicRT 연결
서브넷2(프라이빗) CH6-SN2 CH6-PrivateRT 연결
서브넷3(프라이빗) CH6-SN3 CH6-PrivateRT 연결
EC2 인스턴스 CH6-Web 10.6.1.10
보안그룹1 CH6-SGWebSrv TCP 22, 88, ICMP 허용
보안그룹2 CH6-SGRDS TCP3306 허용
DB 서브넷 그룹 DBLab-Subnet2,3 CH6-SN2,3
DB 파라미터 그룹 mymysql8  

* 스택 인프라를 표로 정리

 

실습 2단계(RDS 생성 후 웹 서버 연동)

DB 생성 완료
index.php 파일에 있는 DB_SERVER 값을 RDS2 엔드포인트 주소로 치환하여 웹서버와 rds2 연동

 

웹 서버에 RDS2 연동 완료
RDS2에 직접 진입하지 않고도 웹서버 SSH에서 접근 가능 확인

 

실습 3단계(RDS 고가용성을 위한 Multi-AZ 구성하고 동작 확인)

  • RDS2는 단일 데이터베이스로 생성했기에 재부팅 할 경우 웹서버에서 RDS2 테이블 정보 못가져옴

재부팅하는 동안 RDS2가 웹 서버와 연결이 안됌
Multi-AZ 기능이 가능한 RDS1과 웹서버 연결
현재 RDS1(Primary) IP는 10.6.3.147
RDS1은 재부팅을 하는 동안에도 웹서버와 데이터베이스가 잘 돌아감
연결된 IP를 확인해보니 RDS1의 IP가 바뀐것을 확인할 수 있음. RDS1(Rrimary)가 재부팅 되는 동안 RDS1(Standby)가 장애 발생으로 판별하여 본체로 바뀐거임

  • 위 결과로 Multi-AZ 기능이 있는 RDS는 데이터베이스에 장애가 생겨도 RDS1(Standby) 보조 데이터베이스가RDS(Primary) 본체 데이터베이스로 변경되어, 장애가 일어나도 문제 없이 계속 서비스가 운영되는걸 확인
  • 기존의 RDS(Primary였던 데이터베이스는 Standby 상태로 머물러 있음 - 재부팅 성공해도 IP 주소는 여전히 221인걸 확인)

실습 4단계(RDS 성능 확장 읽기 복제본[Read Replica] 동작 확인)

  • Read Replica는 RDS 설정 값에서 백업 보존 기간을 최소 1일 이상을 하여야 사용 가능

읽기 복제본 생성

 

복제본 생성 후 기존 RDS1 데이터베이스에 PARK 데이터 입력
읽기전용 RDS1rr 데이터베이스도 변경 사항이 반영됌
이번엔 RDS1rr 데이터베이스에 직접 데이터값을 넣어보려고 했지만 실패함(읽기 전용 데이터베이스이기 때문)

 

실습 5단계(실습 자원 모두 삭제 > <)