새소식

DataBase/MySQL

AWS RDS 다중 AZ DB 클러스터란?

  • -

AWS 다중 AZ DB 클러스터란 Amazon RDS에서 고가용성을 보장하기 위한 배포 모드이다. 읽기 작업을 위한 Reader 인스턴스와 쓰기 작업을 위한 라이터 인스턴스가 존재한다. 각각의 인스턴스는 AZ(Availablity Zone)에 존재하며 Amazon RDS의 DB 엔진 복제 기능을 사용하여 라이터 DB 인스턴스의 데이터를 리더 인스턴스로 복제한다. 라이터 인스턴스가 변경될 경우 변경 내용을 각각의 리더 인스턴스에 전송하며 해당 변경 사항을 커밋하고 적용하려면 하나 이상의 리더 DB 인스턴스의 승인을 받아야한다.

다중 AZ DB 클러스터는 클러스터, 리더, 인스턴스 3개의 엔드포인트가 존재한다. 여기서 엔드포인트란 간단하게 설명하자면 DB에 연결하기 위한 주소이다. 다중 AZ DB 클러스터에는 하나의 라이터만 존재하며 클러스터 엔드포인트의 경우 라이터 DB 인스턴스에 연결된다. 오로지 라이터 인스턴스에 대해서만 DDL 및 DML 문과 같은 쓰기 작업이 가능하며 읽기 작업 또한 가능하다.

 

아래는 클러스터 엔드포인트의 예시이다.

 

mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com

 

리더 엔드포인트의 경우 읽기 전용을 위한 로드 밸런싱을 제공한다. 개발 시 단순히 읽기 작업(SELECT)이 필요한 경우에는 리더 엔드포인트로 접근하여 처리할 수 있다. 읽기 작업을 별도의 인스턴스에서 처리함으로써 라이터 인스턴스의 오버헤드를 줄일 수 있다.

 

아래는 리더 엔드포인트의 예시이다.

 

mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com

 

여기서 리더 엔드포인트의 경우 가운데 -ro-가 붙는다는 차이점이 있다.

 

마지막으로 인스턴스 엔드포인트의 경우 라이터, 리더 엔드포인트에 직접 연결이 가능하다. 다중 AZ DB 클러스터의 경우 클러스터, 리더 엔드포인트를 통해 각각의 인스턴스에 접근하게 되는데 인스턴스에 직접 접근할 경우 해당 인스턴스의 상태 및 지표 등을 확인할 수 있다.

 

AWS RDS 는 어떻게 고가용성으로 동작할까?

다중 AZ DB에는 하나의 라이터 인스턴스는 읽기/쓰기의 작업이 가능하며 리더 엔드포인트는 읽기 작업만 가능하다. 여기서 클러스터, 리더 엔드포인트란 DB 인스턴스를 직접 가리키는 것이 아닌 추상화된 연결이다. 해당 연결정보를 통해 인스턴스로 접근이 가능한 중간 핸들러 역할로 실제 DB 인스턴스에 장애가 발생할 경우 자동으로 연결된 인스턴스를 변경한다. DB 클러스터의 기본 DB 인스턴스에 장애가 발생하면 자동으로 새로운 DB 인스턴스로 장애를 조치하는데 기존의 리더 인스턴스를 라이터 인스턴스로 승격하여 이를 수행한다. 이 때 리더 인스턴스의 장애 상황에도 새로운 라이터 인스턴스로 승격이 이루어진다. 장애 조치가 발생하면 기존의 연결을 재구성 할 필요없이 기존의 엔드포인트를 통해 승격된 라이터 인스턴스로 접근이 가능하다. 이 때 짧은 시간동안(초단위) 연결이 중단되지만 상당히 빠른 시간안에 복구가 가능하며 이후 별도의 조치 없이 서비스가 가능하다.

 

 

 

참고

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html#multi-az-db-clusters-concepts-overview

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.