ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS RDS Multi-AZ, Read Replica 실습
    AWS 2021. 7. 18. 20:52

    이번 포스팅은 RDS를 사용하여 애플리케이션을 동작시켜 보고,

    RDS의 특징인 Multi-AZ와 Read Replica를 사용해본다 .

     

     

     

    RDS Multi-AZ이란?

     

    다른 AZ에 백업DB를 구성하여 primary DB 장애시 백업 DB(secondary DB)가 동작 

     

     

     

    RDS Read Replica란?

     

     PrimaryDB 이외에 Read-Only DB를 두는 방식이다.

    평상시에 DB가 동기화 되어 읽기 Endpoint URL을 Read Replica DB로 사용할 수 있다. 

    (RDS는 최대 5개의 Copy본을 찍어낼 수 있다)

     

     

     

    < 실습 도안 > 

     

     

     

     

    1. RDS DB1 생성

     

    생성 방식 : 표준 생성

    엔진 옵션 : MySQL

    템플릿 : 프리 티어

    DB 인스턴스 식별자 : database-1

    마스터 사용자 이름 : root

    마스터 암호(암호확인) : qwe12345

    DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro

    VPC : DB-VPC1

    퍼블릭 액세스 가능 : 아니요

    VPC 보안 그룹 : TCP 3306 허용

    가용 영역 : ap-northeast-2a

    추가 구성 : 클릭

    - 초기 데이터베이스 이름 : sample

    - 백업 보존 기간 : 0일

    - 유지 관리 기간 : 선택 기간 → 일요일 , 01 :00 , 0.5시간

     

    (4분 정도 소요)

     

     

     

    WebSrv에 ssh 접속 후 생성된 AWS RDS DB1 확인 

    RDS1=database-1.ctxil1e8ebkk.ap-northeast-2.rds.amazonaws.com
    
    # dig 질의
    dig +short $RDS1
    
    # mysql 접속
    mysql -h $RDS1 -uroot -pqwe12345
    
    # 상태정보 및 데이터베이스 확인
    status;
    show databases;

     

     

    websrv의 nginx와 연결된 php 파일을 수정하여 RDS DB1과 연결하기 

     

     

    웹 서버를 이용하여 데이터 집어 넣기

     

     

     

     

    RDS DB1 데이터베이스에서도 확인 가능.

     

     

     

     

    ※ 참고

     

    RDS DB1을 Multi-AZ으로 수정하기 

    DB 수정 > 다중 AZ 배포(대기 인스턴스 생성) 클릭, 백업 (35)일 > 계속 > 즉시적용 > DB 인스턴스 수정 

     

     

     

     

     

    2. RDS DB2 생성

     

    생성 방식 : 표준 생성

    엔진 옵션 : MySQL

    템플릿 : 개발/테스트

    DB 인스턴스 식별자 : database-2

    마스터 사용자 이름 : root

    마스터 암호(암호확인) : qwe12345

    DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro (이전 세대 클래스 포함 체크)

    다중 AZ 배포: 대기 인스턴스 생성 (DB1과의 차이점)

    VPC : DB-VPC1

    퍼블릭 액세스 가능 : 아니요

    VPC 보안 그룹 : TCP 3306 허용

    추가 구성 : 클릭

    - 초기 데이터베이스 이름 : sample

    - 백업 보존 기간 : 35일

    - Enhanced 모니터링 활성화 (Uncheck)

     

     

     

    RDS2=database-2.ctxil1e8ebkk.ap-northeast-2.rds.amazonaws.com
    
    # dig 질의
    dig +short $RDS2
    
    # mysql 접속
    mysql -h $RDS2 -uroot -pqwe12345
    
    # 상태정보 및 데이터베이스 확인
    status;
    show databases;

     

    위와 마찬가지로 php에 DB2를 등록을 해본다. 

     

     

     

     

     

    1) 다중 AZ RDS 실습

     

    다중 AZ에 배포했으므로 primary DB이외에 backup 용 secondary DB가 돌아간다. 

     

    primary DB에 장애가 발생했을 때 secondary DB로 대체되어야 한다. 

     

    다음 커맨드는 DB가 연결되어 있는지 1초마다 확인한다.

    while true; do mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done

    위 커맨드를 통해  DB의 가용성을 확인해보자. 

     

     

     

     

    작업 > 재부팅 > 장애 조치로 재부팅하시겠습니까? 예

     

     

     

     

    2분 10초간 DB 사용이 중지 되었고, 이후에는 정상적으로 동작한다. 

     

     

     

     

    2) RDS ReadReplica 실습

     

    RDS DB2 작업 > 읽기 전용 복제본 생성

     

     

    DB 인스턴스 식별자 : database-2-readonly

    AWS 리전 : Asia Pacific (Seoul)

    다중 AZ 배포 : 대기 인스턴스를 생성하지 마십시오

     

    RDS2Read=database-2-readonly.cb79jlim4dyq.ap-northeast-2.rds.amazonaws.com
    
    dig $RDS2Read

     

     

     

    2개의 터미널을 켜놓고, 하나는 DB2, 다른 하나는 DB-ReadOnly에 접속해서 각 커맨드를 입력한다. 

    while true; do mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
    while true; do mysql -h $RDS2Read -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done

     

     

    그리고 웹에서 abcd, incheon 데이터를 추가해본다. 

     

     

     

    < DB2 >

     

    34~35초 구간에 데이터가 업데이트 되었다. 

     

     

     

    < DB2-ReadOnly >

     

    readonly DB도 마찬가지로 34~35초 구간에 데이터가 업데이트 되었다. 

     

    반응형

    댓글

Designed by Tistory.