AWS 다중 AZ DB 클러스터란 Amazon RDS에서 고가용성을 보장하기 위한 배포 모드이다. 읽기 작업을 위한 Reader 인스턴스와 쓰기 작업을 위한 라이터 인스턴스가 존재한다. 각각의 인스턴스는 AZ(Availablity Zone)에 존재하며 Amazon RDS의 DB 엔진 복제 기능을 사용하여 라이터 DB 인스턴스의 데이터를 리더 인스턴스로 복제한다. 라이터 인스턴스가 변경될 경우 변경 내용을 각각의 리더 인스턴스에 전송하며 해당 변경 사항을 커밋하고 적용하려면 하나 이상의 리더 DB 인스턴스의 승인을 받아야한다.
다중 AZ DB 클러스터는 클러스터, 리더, 인스턴스 3개의 엔드포인트가 존재한다. 여기서 엔드포인트란 간단하게 설명하자면 DB에 연결하기 위한 주소이다. 다중 AZ DB 클러스터에는 하나의 라이터만 존재하며 클러스터 엔드포인트의 경우 라이터 DB 인스턴스에 연결된다. 오로지 라이터 인스턴스에 대해서만 DDL 및 DML 문과 같은 쓰기 작업이 가능하며 읽기 작업 또한 가능하다.
마지막으로 인스턴스 엔드포인트의 경우 라이터, 리더 엔드포인트에 직접 연결이 가능하다. 다중 AZ DB 클러스터의 경우 클러스터, 리더 엔드포인트를 통해 각각의 인스턴스에 접근하게 되는데 인스턴스에 직접 접근할 경우 해당 인스턴스의 상태 및 지표 등을 확인할 수 있다.
AWS RDS 는 어떻게 고가용성으로 동작할까?
다중 AZ DB에는 하나의 라이터 인스턴스는 읽기/쓰기의 작업이 가능하며 리더 엔드포인트는 읽기 작업만 가능하다. 여기서 클러스터, 리더 엔드포인트란 DB 인스턴스를 직접 가리키는 것이 아닌 추상화된 연결이다. 해당 연결정보를 통해 인스턴스로 접근이 가능한 중간 핸들러 역할로 실제 DB 인스턴스에 장애가 발생할 경우 자동으로 연결된 인스턴스를 변경한다. DB 클러스터의 기본 DB 인스턴스에 장애가 발생하면 자동으로 새로운 DB 인스턴스로 장애를 조치하는데 기존의 리더 인스턴스를 라이터 인스턴스로 승격하여 이를 수행한다. 이 때 리더 인스턴스의 장애 상황에도 새로운 라이터 인스턴스로 승격이 이루어진다. 장애 조치가 발생하면 기존의 연결을 재구성 할 필요없이 기존의 엔드포인트를 통해 승격된 라이터 인스턴스로 접근이 가능하다. 이 때 짧은 시간동안(초단위) 연결이 중단되지만 상당히 빠른 시간안에 복구가 가능하며 이후 별도의 조치 없이 서비스가 가능하다.