RDS

박진선·2025년 1월 13일
0

RDS 특징

  • AWS RDS는 고가용성을 보장하기 위해 기본 DB 인스턴스(primary DB instance)와 동기화된 보조 DB 인스턴스(synchronous secondary DB instance)를 설정할 수 있다.
    문제가 발생하면 기본 인스턴스에서 보조 인스턴스로 자동 장애 조치(failover)가 이루어진다.

  • 읽기 부하(read load)를 분산하고 성능을 향상시키기 위해 읽기 복제본(read replicas)을 사용할 수 있다.

배포옵션

Multi-AZ Clusters

  • 다중 AZ 클러스터 방식은 두 개의 Reader DB Instance(읽기 전용 인스턴스)와 한 개의 Writer DB Instance(기존 단일 인스턴스)로 구성되어 있다.
  • 의 인스턴스를 세 개의 서로 다른 Availability Zone에 배치되어 있습니다.
  • 데이터는 Writer DB Instance로 부터 다른 Reader DB Instance에 반동기식으로 복제된다.
  • 장애가 발생한 경우 Reader DB Instance가 Writer DB Instance로 빠르게 전환되므로 고가용성을 제공한다고 볼 수 있다. 또한 장애복구에도 뛰어난 구성이다.
  • 또한 Reader DB Instance를 두 개 배치함으로써 높은 애플리케이션의 Read(읽기) 처리량을 높였다고 할 수 있습니다.
  • 고가용성과 뛰어난 장애복구 그리고 높은 읽기 처리량을 가집니다.

Multi-AZ DB Instances

  • 다중 AZ DB 인스턴스 배포 방식은 하나의 Primary DB Instance와 하나의 Standby Replica Instance로 구성되어 있다.
  • Primary DB Instance는 읽기/쓰기 작업을 수행하고, Standby Replica로 동기식으로 데이터를 복제한다.
  • Standby Replica는 읽기/쓰기 작업을 수행하지 않고 Primary의 장애에 대응하는 역할이다. Standby Replica가 읽기 작업을 수행하게 하고 싶으면 다중 AZ 클러스터 방식을 사용해야 한다.
  • Primary DB에 문제가 생긴 경우 Standby Replica를 Primary DB로 프로모션(변경)하고 트래픽을 Standby Replica가 받도록 수정한다.(failover) 이 때 Standby Replica가 동작을 수행하는 것 이다.
  • 애플리케이션의 중단을 최소화하고, 가용성을 높이는 일반적인 방식

Single DB Instance

  • 다중 AZ 클러스터나 다중 AZ DB 인스턴스와 달리 예비 DB가 존재하지 않는다.
    대신 비용이 효율적
  • 데이터베이스 장애 시 복구 시간이 길다. (예비용 데이터베이스가 없으므로, 새로운 인스턴스를 생성하고 데이터베이스를 설치하고, 데이터를 복구해야 한다.)
  • 일반적으로 더 간단한 구성 및 관리를 제공하여, 개발 및 테스트 작업을 더 쉽게 수행할 수 있다. 프로덕션 환경에는 권장하지 않음
  • 단일 DB 인스턴스는 다중 AZ 구성에 비해 미미하지만 더 낮은 지연 시간을 제공한다.
    하지만, 단일 DB 인스턴스는 시스템 장애나 데이터 손실의 위험이 높아, 데이터의 무결성과 가용성을 보장하기 위해 주기적인 백업 및 모니터링이 필요합니다.

읽기 복제본(read replicas)

read replica는 DB 인스턴스의 읽기 전용 복사본 이다.
애플리케이션에서 읽기 복제본으로 쿼리를 라우팅하여 primary DB instance의 부하를 줄일 수 있다.
소스 DB 인스턴스에서 읽기 복제본을 만들기 위해 Amazon RDS는 DB 엔진의 내장 복제 기능을 사용 한다.
소스 DB 인스턴스에서 읽기 복제본을 생성한 하면 소스 DB 인스턴스는 primary DB instance가 된다.
primary DB instance를 업데이트할 때 Amazon RDS는 read replica에 비동기식으로 이를 복사합니다.
클라이언트는 primary DB instance에 대한 읽기/쓰기 액세스 권한과 read replica에 대한 읽기 전용 액세스 권한을 가진다.

Read Replica vs Multi-AZ
Multi-AZ 복제는 서비스가 항상 가동해야 하는 가용성을 위한 것이지, 부하 분산을 통한 성능 향상이 목적이 아니다.

Read Replica 기능은 Disaster Recovery(재해 복구) 용도가 아니다. 즉, 안정성을 위한 서비스가 아닌 퍼포먼스를 위한 서비스 이다.

Multi-AZ 복제본 같은 경우는 그저 안정성을 위해 아무것도 하지않는 인스턴스를 미리 준비해 가동하는 것이지만, Read Replica는 실제로 다른 EC2들과 상호작용을 하기 때문이다.

Read Replica는 Multi-AZ 와 달리 fail over(자동복구)가 불가능하다.
만약 RDS Primary가 고장났을경우, 관리자가 직접 수동으로 쓰기 DNS를 복제본에 연결해 복구를 해줘야 한다.

트러블 슈팅

RDS 생성 시 VPC, 서브넷 그룹, 가용영역을 필수적으로 설정해야 하는데 해당 설정을 통해 어떤 서브넷 하위에 RDS가 생성될지 자동으로 지정되고 해당 서브넷의 IP 범주 안에서 Private ip가 할당된다.

서브넷 그룹은 2개 이상의 가용영역이 다른 서브넷을 포함해야만 생성이 가능하다.

만약 RDS의 가용영역을 기본 설정 없음 으로 선택하면 서브넷 그룹에 속하는 서브넷들의 가용영역중 하나가 임의로 할당되는데 퍼블릭 액세스를 가능하게 설정할 경우 Public 서브넷이 존재한다면 해당 서브넷에 할당되고 불가능 하게 설정 했다면 Private 서브넷에 할당된다.

하지만 퍼블릭 액세스를 가능하게 설정했다 하더라도 Private 서브넷 하위에 RDS가 생성될 경우 외부 접근이 불가능하다.

RDS의 인스턴스 클래스를 변경하면 새로운 네트워크 인터페이스가 생성되어 Public, Private IP가 모두 변경된다. 기존 네트워크 인터페이스는 삭제 된다.

RDS의 Private IP 주소를 알고 싶으면 동일한 VPC 내에 위치한 EC2에서 nslookup [rds엔드포인트] 명령어를 실행하면 알 수 있다.
Public IP 주소를 알고 싶으면 다른 VPC 내에 위치한 EC2에서 위의 명령어를 실행하면 알 수 있다.

하지만 RDS 인스턴스의 IP주소는 동적으로 변하므로 static IP address 나 Elastic IP 를 할당할 수 없다.
1. 인스턴스가 중지되었다가 시작 되었을 경우, 재시작의 경우에는 변하지 않는다.

profile
주니어 개발자 입니다

0개의 댓글

관련 채용 정보