AWS RDS Multi-AZ 배포를 통한 고가용성 구성 방법
데이터베이스 가용성은 중요한 프로덕션 애플리케이션에 있어 매우 중요합니다. 다운타임은 상당한 재정적 손실, 평판 손상, 그리고 사용자 불만으로 이어질 수 있습니다. Amazon 관계형 데이터베이스 서비스(RDS)는 클라우드에서 관계형 데이터베이스를 관리하기 위한 강력한 솔루션을 제공하며, 그 Multi-AZ 배포 옵션은 데이터베이스 인스턴스에 향상된 가용성, 내구성 및 내결함성을 제공하도록 특별히 설계되었습니다.
이 문서에서는 AWS RDS Multi-AZ 배포를 구성하는 과정을 안내합니다. Multi-AZ가 무엇인지, 주요 이점은 무엇인지 다루고, 신규 및 기존 RDS 인스턴스 모두에 대해 설정하는 단계별 지침을 제공할 것입니다. 이 문서를 마치면, MySQL, PostgreSQL 또는 기타 지원되는 데이터베이스 인스턴스에 대한 가동 시간과 내구성을 크게 향상시키는 자동 페일오버 기능을 보장하는 탄력적인 데이터베이스 인프라를 구축하는 방법을 이해하게 될 것입니다.
AWS RDS Multi-AZ란 무엇인가요?
AWS RDS Multi-AZ (다중 가용 영역) 배포는 동일한 AWS 리전 내에서 물리적으로 격리된 다른 가용 영역(AZ)에 데이터베이스 인스턴스의 정확한 복제본을 생성합니다. 이 대기 인스턴스는 "핫 스탠바이" 구성으로 작동하며, 이는 동기식 복제를 사용하여 기본 인스턴스의 변경 사항으로 지속적으로 업데이트됨을 의미합니다.
작동 방식:
- 기본 인스턴스: 애플리케이션은 기본 데이터베이스 인스턴스에 연결하고 데이터를 기록합니다.
- 동기식 복제: 기본 인스턴스에 대한 모든 데이터 쓰기는 대기 인스턴스로 동기적으로 복제됩니다. 이는 대기 인스턴스가 항상 기본 인스턴스와 최신 상태를 유지하도록 보장하여, 페일오버 중 데이터 손실을 최소화합니다.
- 자동 페일오버: 기본 인스턴스에 영향을 미치는 인프라 장애(예: AZ 중단, 인스턴스 하드웨어 장애, 네트워크 문제 또는 데이터베이스 엔진 충돌) 발생 시, AWS RDS는 자동으로 대기 복제본으로 전환합니다. 이 페일오버 프로세스는 일반적으로 1~2분 정도 소요되며 사용자 측의 수동 개입이 필요하지 않습니다. 데이터베이스 엔드포인트는 동일하게 유지되므로 애플리케이션이 연결 문자열을 변경할 필요가 없습니다.
- 단일 엔드포인트: 기본 인스턴스와 대기 인스턴스 모두 단일 DNS 엔드포인트를 공유합니다. 애플리케이션은 이 엔드포인트에 연결하며, AWS는 현재 활성 상태인 기본 인스턴스로의 리디렉션을 관리합니다.
Multi-AZ 배포의 이점
RDS를 Multi-AZ로 구성하면 프로덕션 워크로드에 여러 가지 중요한 이점을 제공합니다.
- 고가용성: 다른 AZ의 대기 복제본으로 자동 페일오버를 통해 기본 AZ에 중단이 발생하더라도 데이터베이스가 계속 작동하도록 보장합니다. 이는 다운타임을 크게 줄여줍니다.
- 데이터 내구성: 동기식 복제는 모든 커밋된 트랜잭션이 기본 및 대기 인스턴스 모두에 존재함을 보장합니다. 이는 페일오버 중 데이터 손실 위험을 최소화합니다.
- 재해 복구: 여러 가용 영역에 걸쳐 확장됨으로써, 데이터베이스는 AZ 수준의 장애로부터 보호되며, 재해 복구 전략의 중요한 구성 요소가 됩니다.
- 간소화된 운영: AWS는 모니터링, 복제 및 페일오버 프로세스를 자동으로 처리합니다. 호스트 기반 복제를 구성하거나, 대기 인스턴스를 관리하거나, 페일오버를 수동으로 조정할 필요가 없습니다.
- 유지 관리 기간: 계획된 유지 관리(예: OS 패치 또는 데이터베이스 엔진 업그레이드) 중에 AWS는 자동으로 대기 인스턴스로 페일오버하고, 이전 기본 인스턴스에 대한 유지 관리를 수행한 다음, 다시 전환합니다. 이는 애플리케이션 다운타임을 최소화합니다.
- 성능 (쓰기 지연 시간): 동기식 복제는 단일 AZ 배포에 비해 쓰기 지연 시간을 약간 증가시키지만(두 위치에 쓰기를 확인해야 하므로), 이는 대부분의 애플리케이션에서 무시할 수 있는 수준이며, 향상된 가용성을 위한 가치 있는 절충점입니다.
사전 요구 사항
시작하기 전에 다음 사항을 확인하십시오.
- RDS 인스턴스를 생성하고 관리할 수 있는 적절한 권한을 가진 AWS 계정.
- AWS 리전, 가용 영역, 가상 프라이빗 클라우드(VPC)에 대한 기본적인 이해.
단계별 구성 가이드
옵션 1: Multi-AZ로 새로운 RDS 인스턴스 생성
이는 초기부터 고가용성을 보장하는 새로운 배포에 권장되는 접근 방식입니다.
- RDS 콘솔로 이동: AWS Management Console에 로그인하고 Amazon RDS 콘솔을 엽니다.
- 데이터베이스 생성: 탐색 창에서 데이터베이스를 선택한 다음 데이터베이스 생성을 클릭합니다.
- 데이터베이스 생성 방식 선택: 표준 생성을 선택합니다.
- 엔진 옵션 선택:
- 엔진 유형: 원하는 데이터베이스 엔진(예: MySQL, PostgreSQL, SQL Server, Oracle)을 선택합니다.
- 엔진 버전: 특정 버전을 선택합니다.
- 템플릿: 적절한 템플릿을 선택합니다. 프로덕션 환경의 경우, Multi-AZ가 기본값으로 설정되는 프로덕션 템플릿이 권장됩니다.
- 설정:
- DB 인스턴스 식별자: 데이터베이스 인스턴스에 고유한 이름을 제공합니다.
- 마스터 사용자 이름 및 마스터 암호: 기본 데이터베이스 사용자의 자격 증명을 설정합니다.
- DB 인스턴스 크기: 성능 요구 사항을 충족하는 인스턴스 클래스를 선택합니다.
- 스토리지: 스토리지 유형 및 할당된 스토리지를 구성합니다.
- 가용성 및 내구성: Multi-AZ를 위한 중요한 단계입니다:
- Multi-AZ 배포에서 예(대기 인스턴스 생성)를 선택합니다.
- (선택 사항) 이전에 "프로덕션" 템플릿을 선택한 경우, 이 옵션은 미리 선택되어 있습니다.
- 연결:
- VPC: 데이터베이스가 상주할 VPC를 선택합니다.
- 서브넷 그룹: 여러 가용 영역에 걸쳐 있는 DB 서브넷 그룹이 있는지 확인합니다. RDS는 이를 사용하여 기본 및 대기 인스턴스를 다른 AZ에 배치합니다.
- 퍼블릭 액세스: 보안 모범 사례를 위해 프로덕션 환경에서는 아니요를 선택합니다.
- VPC 보안 그룹: 애플리케이션 서버에서 데이터베이스 포트로 인바운드 트래픽을 허용하는 적절한 보안 그룹을 연결합니다.
- 데이터베이스 인증: 선호하는 인증 방법을 선택합니다.
- 모니터링, Performance Insights, 로그 내보내기, 유지 관리: 운영 요구 사항에 따라 이들을 구성합니다.
- 데이터베이스 생성: 모든 설정을 검토하고 데이터베이스 생성을 클릭합니다.
AWS는 기본 인스턴스를 프로비저닝한 다음, 다른 가용 영역에 대기 복제본을 생성하고 동기화할 것입니다. 이 과정은 인스턴스 크기에 따라 시간이 걸릴 수 있습니다.
옵션 2: 기존 RDS 인스턴스를 Multi-AZ로 수정
기존 단일 AZ RDS 인스턴스에 대해 다운타임 없이 Multi-AZ를 활성화할 수 있습니다.
- RDS 콘솔로 이동: AWS Management Console에 로그인하고 Amazon RDS 콘솔을 엽니다.
- 데이터베이스 선택: 탐색 창에서 데이터베이스를 선택한 다음, 수정하려는 RDS 인스턴스를 선택합니다.
- 인스턴스 수정: 수정 버튼을 클릭합니다.
- 가용성 및 내구성: 가용성 및 내구성 섹션으로 스크롤합니다.
- Multi-AZ 배포에서 예(대기 인스턴스 생성)를 선택합니다.
- 계속: 다른 설정(인스턴스 클래스, 스토리지 등)을 검토하고 필요한 다른 변경 사항을 적용한 다음 계속을 클릭합니다.
- 수정 예약:
- 즉시 적용: 이 옵션을 선택하면 변경 사항이 즉시 적용됩니다. Multi-AZ를 활성화하기 위해 AWS는 대기 인스턴스를 백그라운드에서 생성합니다. 이 초기 생성 단계 동안 기본 인스턴스는 계속 사용 가능하지만, 짧은 기간 동안 I/O 지연 시간이 증가할 수 있습니다. 대기 인스턴스가 동기화되면 AWS가 Multi-AZ 구성을 활성화하기 위해 작은 페일오버를 수행할 때 짧은 중단(일반적으로 1분 미만)이 발생합니다.
- 다음 예약된 유지 관리 기간에 적용: 이 옵션은 정의된 유지 관리 기간 동안 변경 사항을 적용하여 피크 시간 동안의 중단을 최소화합니다.
- DB 인스턴스 수정: DB 인스턴스 수정을 클릭합니다.
AWS는 대기 복제본을 생성하고 기본 인스턴스와 동기화하는 프로세스를 시작할 것입니다. 이 시간 동안 데이터베이스는 온라인 상태를 유지하지만, Multi-AZ 구성이 최종 완료될 때 짧은 페일오버 이벤트를 관찰할 수 있습니다.
Multi-AZ 배포 모니터링
Multi-AZ 설정 후에는 상태를 모니터링하는 것이 중요합니다.
- RDS 콘솔: RDS 콘솔로 이동하여 데이터베이스 인스턴스를 선택합니다.
- 세부 정보 탭: 연결 & 보안 섹션 아래에 Multi-AZ가
예로 표시됩니다. 가용성 및 내구성 아래에는 인스턴스가 Multi-AZ 배포 상태임을 보여야 합니다. - 이벤트: 페일오버, 인스턴스 생성 또는 유지 관리 활동과 관련된 이벤트를 확인하려면 로그 & 이벤트 탭을 확인하십시오. AWS는 페일오버에 대한 이벤트를 로깅할 것입니다(예:
RDS-EVENT-0026 - DB 인스턴스 XXX가 페일오버되었습니다).
페일오버 테스트 (선택 사항이지만 권장)
AWS가 페일오버를 자동으로 관리하지만, 비프로덕션 환경에서 페일오버 메커니즘을 이해하고 가끔 테스트하는 것은 좋은 방법입니다.
페일오버 트리거링:
- 페일오버와 함께 재부팅: RDS 콘솔에서 Multi-AZ 인스턴스를 선택합니다. 작업 메뉴에서 재부팅을 선택합니다. "페일오버와 함께 재부팅하시겠습니까?" 옵션을 반드시 선택합니다.
- 이 작업은 RDS가 기본 인스턴스를 대기 복제본으로 전환하도록 강제하여, 예기치 않은 중단을 시뮬레이션합니다. DNS 엔드포인트가 업데이트되는 동안 애플리케이션은 짧은 연결 끊김(1-2분)을 경험할 것입니다.
- 이벤트 관찰: 페일오버를 시작한 후, 인스턴스의 로그 & 이벤트 탭을 모니터링합니다. 페일오버가 발생했으며 새로운 기본 인스턴스가 활성 상태임을 나타내는 이벤트를 볼 수 있을 것입니다.
고려 사항 및 모범 사례
- 비용: Multi-AZ 배포는 단일 AZ 배포보다 더 높은 비용이 발생합니다. 이는 한 번에 하나의 데이터베이스 인스턴스만 활발하게 트래픽을 처리하더라도, 사실상 두 개의 데이터베이스 인스턴스(기본 및 대기)를 실행하고 있기 때문입니다.
- 읽기 전용 복제본 vs. Multi-AZ: 차이점을 이해해야 합니다. Multi-AZ는 고가용성 및 내구성(쓰기)을 위한 것입니다. 읽기 전용 복제본은 읽기 확장을 통해 읽기 성능을 향상시키기 위한 것입니다. 이 둘은 함께 사용될 수 있습니다. Multi-AZ 기본 인스턴스를 생성한 다음, 읽기 중심 애플리케이션의 확장을 위해 읽기 전용 복제본을 가질 수 있습니다.
- 성능 영향: Multi-AZ가 가용성을 향상시키지만, 동기식 복제는 단일 AZ에 비해 쓰기 지연 시간을 약간 증가시킬 수 있습니다. 대부분의 애플리케이션에서는 이 오버헤드가 미미합니다.
- 서브넷 그룹: DB 서브넷 그룹에 최소 두 개 이상의 다른 가용 영역에 있는 서브넷이 포함되어 있는지 확인합니다. 이를 통해 RDS는 기본 및 대기 인스턴스를 별도의 AZ에 배치할 수 있습니다.
- 보안 그룹: 애플리케이션 서버에서 RDS 엔드포인트로의 트래픽을 허용하도록 VPC 보안 그룹을 올바르게 구성합니다.
- 데이터베이스 엔진 지원: Multi-AZ는 MySQL, PostgreSQL, SQL Server, Oracle, MariaDB를 포함한 대부분의 인기 있는 데이터베이스 엔진에서 지원됩니다.
결론
AWS RDS Multi-AZ 배포는 클라우드에서 고가용성 및 내구성을 갖춘 관계형 데이터베이스 솔루션을 구축하는 데 있어 핵심적인 요소입니다. 가용 영역 간에 데이터를 자동으로 복제하고 원활한 페일오버를 제공함으로써, Multi-AZ는 중요한 애플리케이션의 다운타임 및 데이터 손실 위험을 크게 줄여줍니다. 비용 증가가 따르지만, 운영의 단순성과 향상된 탄력성은 AWS에서 프로덕션 등급 데이터베이스 워크로드를 위한 필수적인 구성으로 만듭니다. 지금 바로 Multi-AZ를 구현하여 데이터를 보호하고 지속적인 서비스 제공을 보장하십시오.