고가용성을 위한 AWS RDS 다중 AZ 배포 구성 방법

자동 장애 조치, 더 안전한 유지 관리, 프로덕션 환경에서 더 나은 데이터베이스 가용성을 위해 AWS RDS 다중 AZ를 구성합니다.

고가용성을 위한 AWS RDS 다중 AZ 배포 구성 방법

애플리케이션이 단일 RDS 엔드포인트에 의존하는 경우 데이터베이스 가용성이 중요합니다. AWS RDS 다중 AZ는 다른 AZ에 대기 인스턴스를 유지하고 기본 인스턴스가 트래픽을 처리할 수 없을 때 자동으로 장애 조치하여 인스턴스 또는 가용 영역 장애 위험을 줄입니다.

이 가이드에서는 새 DB 인스턴스 또는 기존 DB 인스턴스에 대해 AWS RDS 다중 AZ 배포를 구성하는 방법, 변경 후 모니터링할 사항, 예상되는 절충점을 설명합니다.

AWS RDS 다중 AZ란 무엇인가요?

AWS RDS 다중 AZ(여러 가용 영역) 배포는 동일한 AWS 리전 내에서 물리적으로 분리된 다른 가용 영역(AZ)에 데이터베이스 인스턴스의 정확한 복제본을 생성합니다. 이 대기 인스턴스는 "핫 대기" 구성으로 작동하며, 동기식 복제를 사용하여 기본 인스턴스의 변경 사항으로 지속적으로 업데이트됩니다.

작동 방식:

  1. 기본 인스턴스: 애플리케이션이 기본 데이터베이스 인스턴스에 연결하고 데이터를 씁니다.
  2. 동기식 복제: 기본 인스턴스에 대한 모든 데이터 쓰기는 대기 인스턴스에 동기식으로 복제됩니다. 이렇게 하면 대기 인스턴스가 항상 기본 인스턴스와 최신 상태를 유지하여 장애 조치 중 데이터 손실을 최소화합니다.
  3. 자동 장애 조치: 기본 인스턴스에 영향을 미치는 인프라 장애(예: AZ 중단, 인스턴스 하드웨어 오류, 네트워크 문제 또는 데이터베이스 엔진 충돌)가 발생하면 AWS RDS가 자동으로 대기 복제본으로 전환합니다. 장애 조치 시간은 엔진, 워크로드 및 DNS 캐싱 동작에 따라 다르므로 애플리케이션은 재연결 로직을 사용해야 합니다. 데이터베이스 엔드포인트는 동일하게 유지되므로 애플리케이션에 새 연결 문자열이 필요하지 않습니다.
  4. 단일 엔드포인트: 기본 인스턴스와 대기 인스턴스 모두 단일 DNS 엔드포인트를 공유합니다. 애플리케이션은 이 엔드포인트에 연결되며, AWS는 현재 활성 기본 인스턴스로의 리디렉션을 관리합니다.

다중 AZ 배포의 이점

다중 AZ로 RDS를 구성하면 프로덕션 워크로드에 몇 가지 중요한 이점을 제공합니다.

  • 고가용성: 다른 AZ에 있는 대기 복제본으로의 자동 장애 조치는 기본 AZ에 중단이 발생하더라도 데이터베이스가 계속 작동하도록 보장합니다. 이는 가동 중지 시간을 크게 줄여줍니다.
  • 데이터 내구성: 동기식 복제는 모든 커밋된 트랜잭션이 기본 인스턴스와 대기 인스턴스 모두에 존재하도록 보장합니다. 이는 장애 조치 중 데이터 손실 위험을 최소화합니다.
  • 재해 복구: 여러 가용 영역에 걸쳐 있으므로 데이터베이스는 AZ 수준의 장애로부터 보호되며 재해 복구 전략의 중요한 구성 요소를 형성합니다.
  • 간소화된 운영: AWS가 모니터링, 복제 및 장애 조치 프로세스를 자동으로 처리합니다. 호스트 기반 복제를 구성하거나, 대기 인스턴스를 관리하거나, 수동으로 장애 조치를 오케스트레이션할 필요가 없습니다.
  • 유지 관리 기간: 계획된 유지 관리(예: OS 패치 또는 데이터베이스 엔진 업그레이드) 중에 AWS는 자동으로 대기 인스턴스로 장애 조치하고, 이전 기본 인스턴스에서 유지 관리를 수행한 다음 다시 전환합니다. 이는 애플리케이션 가동 중지 시간을 최소화합니다.
  • 성능(쓰기 지연 시간): 동기식 복제는 본질적으로 단일 AZ 배포에 비해 쓰기 지연 시간이 약간 증가하지만(두 위치에 쓰기를 확인해야 하므로), 대부분의 애플리케이션에서 이는 종종 무시할 수 있는 수준이며 향상된 가용성을 위한 가치 있는 절충점입니다.

사전 조건

시작하기 전에 다음 사항이 있는지 확인하세요.

  • RDS 인스턴스를 생성하고 관리할 수 있는 적절한 권한이 있는 AWS 계정.
  • AWS 리전, 가용 영역 및 가상 사설 클라우드(VPC) 에 대한 기본적인 이해.

단계별 구성 가이드

옵션 1: 다중 AZ로 새 RDS 인스턴스 생성

이것은 새 배포에 권장되는 접근 방식으로, 첫날부터 고가용성을 보장합니다.

  1. RDS 콘솔로 이동: AWS Management Console에 로그인하고 Amazon RDS 콘솔을 엽니다.
  2. 데이터베이스 생성: 탐색 창에서 데이터베이스를 선택한 다음 데이터베이스 생성을 클릭합니다.
  3. 데이터베이스 생성 방법 선택: 표준 생성을 선택합니다.
  4. 엔진 옵션 선택:
    • 엔진 유형: 원하는 데이터베이스 엔진(예: MySQL, PostgreSQL, SQL Server, Oracle)을 선택합니다.
    • 엔진 버전: 특정 버전을 선택합니다.
  5. 템플릿: 적절한 템플릿을 선택합니다. 프로덕션의 경우 프로덕션 지향 템플릿을 사용하고 데이터베이스를 생성하기 전에 다중 AZ 설정을 확인합니다.
  6. 설정:
    • DB 인스턴스 식별자: 데이터베이스 인스턴스의 고유한 이름을 제공합니다.
    • 마스터 사용자 이름마스터 암호: 기본 데이터베이스 사용자에 대한 자격 증명을 설정합니다.
  7. DB 인스턴스 크기: 성능 요구 사항을 충족하는 인스턴스 클래스를 선택합니다.
  8. 스토리지: 스토리지 유형과 할당된 스토리지를 구성합니다.
  9. 가용성 및 내구성: 다중 AZ의 중요한 단계입니다.
    • 다중 AZ 배포에서 예(대기 인스턴스 생성) 를 선택합니다.
    • (선택 사항) 이전에 "프로덕션" 템플릿을 선택한 경우 이 옵션이 미리 선택되어 있습니다.
  10. 연결:
    • VPC: 데이터베이스가 상주할 VPC를 선택합니다.
    • 서브넷 그룹: 여러 가용 영역에 걸쳐 있는 DB 서브넷 그룹이 있는지 확인합니다. RDS는 이를 사용하여 기본 인스턴스와 대기 인스턴스를 다른 AZ에 배치합니다.
    • 퍼블릭 액세스: 보안 모범 사례를 위해 프로덕션 환경에서는 아니요를 선택합니다.
    • VPC 보안 그룹: 애플리케이션 서버에서 데이터베이스 포트로의 인바운드 트래픽을 허용하는 적절한 보안 그룹을 연결합니다.
  11. 데이터베이스 인증: 원하는 인증 방법을 선택합니다.
  12. 모니터링, 성능 개선 도우미, 로그 내보내기, 유지 관리: 운영 요구 사항에 따라 구성합니다.
  13. 데이터베이스 생성: 모든 설정을 검토하고 데이터베이스 생성을 클릭합니다.

AWS는 기본 인스턴스를 프로비저닝한 다음 다른 가용 영역에 대기 복제본을 생성하고 동기화합니다. 이 프로세스는 인스턴스 크기에 따라 시간이 걸릴 수 있습니다.

옵션 2: 기존 RDS 인스턴스를 다중 AZ로 수정

가동 중지 없이 기존 단일 AZ RDS 인스턴스에 대해 다중 AZ를 활성화할 수 있습니다.

  1. RDS 콘솔로 이동: AWS Management Console에 로그인하고 Amazon RDS 콘솔을 엽니다.
  2. 데이터베이스 선택: 탐색 창에서 데이터베이스를 선택한 다음 수정하려는 RDS 인스턴스를 선택합니다.
  3. 인스턴스 수정: 수정 버튼을 클릭합니다.
  4. 가용성 및 내구성: 가용성 및 내구성 섹션으로 스크롤합니다.
    • 다중 AZ 배포에서 예(대기 인스턴스 생성) 를 선택합니다.
  5. 계속: 다른 설정(인스턴스 클래스, 스토리지 등)을 검토하고 필요한 다른 변경을 수행한 다음 계속을 클릭합니다.
  6. 수정 일정:
    • 즉시 적용: 이 옵션을 선택하면 변경이 즉시 시작됩니다. RDS는 기본 인스턴스가 계속 사용 가능한 상태에서 백그라운드에서 대기 인스턴스를 생성하지만, 동기화 중에 I/O 지연 시간이 더 높아질 수 있습니다. AWS는 일반적으로 다중 AZ를 활성화하기 위해 계획된 중단을 요구하지 않지만, 이후의 장애 조치 또는 유지 관리 이벤트는 여전히 연결을 중단시킬 수 있습니다.
    • 다음 예약된 유지 관리 기간 동안 적용: 이 옵션은 정의된 유지 관리 기간 동안 변경 사항을 적용하여 사용량이 많은 시간대의 중단을 최소화합니다.
  7. DB 인스턴스 수정: DB 인스턴스 수정을 클릭합니다.

AWS는 대기 복제본을 생성하고 기본 인스턴스와 동기화하는 프로세스를 시작합니다. 이 시간 동안 데이터베이스는 계속 온라인 상태이지만, 다중 AZ 구성이 완료되면 짧은 장애 조치 이벤트가 발생할 수 있습니다.

다중 AZ 배포 모니터링

다중 AZ를 설정한 후에는 상태를 모니터링하는 것이 중요합니다.

  1. RDS 콘솔: RDS 콘솔로 이동하여 데이터베이스 인스턴스를 선택합니다.
  2. 세부 정보 탭: 연결 및 보안 섹션에서 다중 AZ로 표시된 것을 볼 수 있습니다. 가용성 및 내구성 아래에는 인스턴스가 다중 AZ 배포에 있는 것으로 표시되어야 합니다.
  3. 이벤트: 로그 및 이벤트 탭에서 장애 조치, 인스턴스 생성 또는 유지 관리 활동과 관련된 이벤트를 확인합니다. AWS는 장애 조치에 대한 이벤트(예: RDS-EVENT-0026 - DB 인스턴스 XXX가 장애 조치되었습니다)를 기록합니다.

장애 조치 테스트(선택 사항이지만 권장됨)

AWS가 자동으로 장애 조치를 관리하지만, 비프로덕션 환경에서 장애 조치 메커니즘을 이해하고 때때로 테스트하는 것이 좋습니다.

장애 조치 트리거:

  1. 장애 조치와 함께 재부팅: RDS 콘솔에서 다중 AZ 인스턴스를 선택합니다. 작업 메뉴에서 재부팅을 선택합니다. "장애 조치와 함께 재부팅" 옵션을 선택했는지 확인합니다.
    • 이 작업은 RDS가 기본 인스턴스를 대기 복제본으로 전환하도록 강제하여 계획되지 않은 중단을 시뮬레이션합니다. 엔드포인트가 새 기본 인스턴스로 확인되기 시작하는 동안 애플리케이션은 짧은 연결 끊김을 예상해야 합니다.
  2. 이벤트 관찰: 장애 조치를 시작한 후 인스턴스의 로그 및 이벤트 탭을 모니터링합니다. 장애 조치가 발생했고 새 기본 인스턴스가 활성 상태임을 나타내는 이벤트가 표시되어야 합니다.

고려 사항 및 모범 사례

  • 비용: 다중 AZ 배포는 단일 AZ 배포보다 비용이 더 많이 듭니다. 한 번에 하나의 인스턴스만 트래픽을 적극적으로 제공하더라도 기본적으로 두 개의 데이터베이스 인스턴스(기본 및 대기)를 실행하기 때문입니다.
  • 읽기 복제본과 다중 AZ 비교: 차이점을 이해하세요. 다중 AZ는 고가용성 및 내구성(쓰기)을 위한 것입니다. 읽기 복제본은 읽기 확장 및 읽기 성능 향상을 위한 것입니다. 함께 사용할 수 있습니다. 다중 AZ 기본 인스턴스를 만든 다음 읽기 중심 애플리케이션을 확장하기 위한 읽기 복제본을 가질 수 있습니다.
  • 성능 영향: 다중 AZ는 가용성을 향상시키지만 동기식 복제는 단일 AZ에 비해 쓰기 지연 시간이 약간 증가할 수 있습니다. 대부분의 애플리케이션에서 이 오버헤드는 최소화됩니다.
  • 서브넷 그룹: DB 서브넷 그룹에 최소 두 개의 다른 가용 영역에 있는 서브넷이 포함되어 있는지 확인합니다. 이렇게 하면 RDS가 기본 인스턴스와 대기 인스턴스를 별도의 AZ에 배치할 수 있습니다.
  • 보안 그룹: 애플리케이션 서버에서 RDS 엔드포인트로의 트래픽을 허용하도록 VPC 보안 그룹을 적절히 구성합니다.
  • 데이터베이스 엔진 지원: 다중 AZ는 MySQL, PostgreSQL, SQL Server, Oracle 및 MariaDB를 포함한 대부분의 인기 있는 데이터베이스 엔진에서 지원됩니다.

핵심 내용

추가 비용과 가능한 쓰기 지연 시간 오버헤드보다 자동 장애 조치가 더 중요한 프로덕션 데이터베이스에는 AWS RDS 다중 AZ를 사용하세요. 활성화한 후에는 DB 서브넷 그룹이 최소 두 개의 AZ에 걸쳐 있는지 확인하고, 비프로덕션 환경에서 애플리케이션 재연결 동작을 테스트하고, RDS 이벤트를 모니터링하여 장애 조치가 팀을 놀라게 하지 않도록 하세요.