RDS Cross-Region Replication & Failover 테스트

AWS RDS와 Aurora Global Database를 활용한 리전 간 재해 복구 솔루션 테스트입니다. 읽기 전용 복제본 기반 Failover와 글로벌 데이터베이스 클러스터 구성을 확인합니다.

개요

최근 RDS 재해 복구에 대한 요구사항을 받게되었습니다.

RDS는 기본적으로 관리형 서비스이므로 리전간 재해 복구가 가능할 것으로 생각했으며 이를 검증하기 위해 읽기 전용 복제본을 활용하여 Failover가 정상적으로 구성되는지 테스트해보았습니다.

추가적으로 Aurora Global Database를 사용해보며 글로벌 데이터베이스의 클러스터는 어떻게 구성되는지 확인하고 Failover를 테스트 해보았습니다.

Process

RDS 마스터 데이터베이스와 슬레이브(읽기 전용) 데이터베이스를 생성합니다.

크로스 리전 복제본을 지원하는 인스턴스는 아래 링크에서 확인할 수 있습니다.

Notion Image
Notion Image

DB가 정상적으로 실행되었다면 테스트를 위해 Master DB를 삭제합니다.

Notion Image

삭제 이후 Slave DB가 Master와 연결을 지속적으로 시도 후 자동으로 독립 DB 인스턴스로 승급됩니다.

Notion Image
Notion Image

혹은 이벤트를 통해 승급시키는 방법도 존재합니다.

Notion Image

단순 Failover 뿐만 아니라 다양한 이유로 읽기 전용 복제본을 승급하는 경우 또한 존재하며 대표적인 사례는 다음과 같습니다.

더 자세한 내용은 아래 링크를 참조해주세요

https://docs.aws.amazon.com/kokr/AmazonRDS/latest/UserGuide/USERReadRepl.Promote.html

  1. 읽기 전용 복제본:
  1. Multi-AZ 구성:

Aurora Global database

Aurora Global Database를 생성합니다.

Notion Image

Aurora Global Cluster의 경우엔 글로벌 엔드포인트를 확인할 수 있습니다.

Notion Image
nslookup bjchoi-aurora-cluster.global-glbpwwwgrlyd.global.rds.amazonaws.com
Server:        203.248.252.2
Address:    203.248.252.2#53

Non-authoritative answer:
bjchoi-aurora-cluster.global-glbpwwwgrlyd.global.rds.amazonaws.com    canonical name = bjchoi-aurora-global-test.cluster-csuhqyt3lq7d.ap-northeast-2.rds.amazonaws.com.
bjchoi-aurora-global-test.cluster-csuhqyt3lq7d.ap-northeast-2.rds.amazonaws.com    canonical name = bjchoi-aurora-global-test-instance-1.csuhqyt3lq7d.ap-northeast-2.rds.amazonaws.com.
bjchoi-aurora-global-test-instance-1.csuhqyt3lq7d.ap-northeast-2.rds.amazonaws.com    canonical name = ec2-3-38-33-33.ap-northeast-2.compute.amazonaws.com.
Name:    ec2-3-38-33-33.ap-northeast-2.compute.amazonaws.com
Address: 3.38.33.33

장애 조치를 시작합니다.

Notion Image

전환(Switchover)

장애 조치(Failover)

장애조치(Failover)를 선택하여 작업을 수행합니다.

Notion Image
  ~ nslookup bjchoi-aurora-cluster.global-glbpwwwgrlyd.global.rds.amazonaws.com
Server:        203.248.252.2
Address:    203.248.252.2#53

Non-authoritative answer:
bjchoi-aurora-cluster.global-glbpwwwgrlyd.global.rds.amazonaws.com    canonical name = bjchoi-aurora-cluster-cluster-1.cluster-clpmipqca15k.us-east-1.rds.amazonaws.com.
bjchoi-aurora-cluster-cluster-1.cluster-clpmipqca15k.us-east-1.rds.amazonaws.com    canonical name = bjchoi-aurora-cluster-instance-1.clpmipqca15k.us-east-1.rds.amazonaws.com.
bjchoi-aurora-cluster-instance-1.clpmipqca15k.us-east-1.rds.amazonaws.com    canonical name = ec2-54-211-161-70.compute-1.amazonaws.com.
Name:    ec2-54-211-161-70.compute-1.amazonaws.com
Address: 54.211.161.70

Reference