Share via


Azure Cosmos DB for PostgreSQL의 고가용성

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

HA(고가용성)는 클러스터에 있는 모든 노드의 대기 복제본을 유지하여 데이터베이스 가동 중지 시간을 최소화합니다. 노드가 다운되면 Azure Cosmos DB for PostgreSQL은 실패한 노드에서 들어오는 연결을 대기 복제본으로 전환합니다. 몇 분 만에 장애 조치(failover)가 수행되고 승격된 노드는 PostgreSQL 동기 스트리밍 복제를 통해 항상 최신 데이터를 보유하게 됩니다.

클러스터의 모든 기본 노드는 노드 간의 더 나은 대기 시간을 위해 하나의 가용성 영역으로 프로비전됩니다. 기본 가용성 영역을 사용하면 애플리케이션이 배포된 동일한 가용성 영역에 모든 클러스터 노드를 배치할 수 있습니다. 이러한 근접성으로 인해 앱 데이터베이스 대기 시간이 감소하여 성능이 더욱 향상될 수 있습니다. 대기 노드는 다른 가용성 영역에 프로비전됩니다. Azure Portal은 클러스터에 있는 각 주 노드의 가용성 영역을 표시합니다. REST API와 같은 프로그래밍 방법 중 하나를 사용하여 클러스터에 있는 각 노드의 가용성 영역을 확인할 수도 있습니다.

HA를 사용하지 않더라도 각 노드에는 Azure Storage 서비스에서 유지 관리하는 동기 복제본 3개가 포함된 자체 LRS(로컬 중복 스토리지)가 있습니다. 단일 복제본 오류가 있을 경우 Azure Storage 서비스에서 검색되고 투명하게 다시 생성됩니다. LRS 스토리지 내구성은 이 페이지의 메트릭을 참조하세요.

HA를 사용하도록 설정하면 Azure Cosmos DB for PostgreSQL은 클러스터의 각 주 노드에 대해 하나의 대기 노드를 실행합니다. 주 노드와 대기 노드는 동기 PostgreSQL 복제를 사용합니다. 이 복제를 통해 고객은 주 노드에서 오류가 발생할 경우의 가동 중지 시간을 예측할 수 있습니다. 간단히 말해서, 서비스가 주 노드에서 오류를 검색하고 데이터 손실 없이 대기 노드로 장애 조치(failover)됩니다.

코디네이터 노드에서 HA를 활용하려면 데이터베이스 애플리케이션에서 삭제된 연결과 오류가 발생한 트랜잭션을 검색하고 다시 시도해야 합니다. 동일한 연결 문자열을 사용하여 새로 승격된 코디네이터에 액세스할 수 있습니다.

고가용성 상태

복구는 검색, 장애 조치(failover), 전체 복구의 세 단계로 나눌 수 있습니다. Azure Cosmos DB for PostgreSQL은 모든 노드에서 정기적으로 상태 검사를 실행하고 검사에 4회 실패하면 노드가 다운된 것으로 결정합니다. Azure Cosmos DB for PostgreSQL은 대기를 기본 노드 상태로 승격(장애 조치(failover))하고 새로운 대기를 만듭니다. 스트리밍 복제가 시작되어 새 노드를 최신 상태로 만듭니다. 모든 데이터가 복제되면 노드가 전체 복구된 것입니다.

Azure Cosmos DB for PostgreSQL은 Azure Portal에서 클러스터에 대한 개요 페이지에 장애 조치(failover) 진행 상태를 표시합니다.

  • 정상: HA를 사용할 수 있으며 노드가 대기 노드에 완전히 복제되었습니다.
  • 장애 조치(failover) 진행 중: 주 노드에서 오류가 검색되었으며 대기 노드로 장애 조치(failover)가 시작되었습니다. 대기 노드로 장애 조치(failover)가 완료되고 대기 노드가 새로운 주 노드가 되면 이 상태는 대기 노드를 만드는 중으로 전환됩니다.
  • 대기 노드를 만드는 중: 이전 대기 노드가 주 노드로 승격되었으며 새로운 대기 노드를 만드는 중입니다. 새 보조 노드가 준비되면 이 상태는 복제 진행 중으로 전환됩니다.
  • 복제 진행 중: 새 대기 노드가 프로비저닝되었으며 데이터 동기화가 진행 중입니다. 모든 데이터가 새 대기 노드에 복제되고 나면 주 노드와 대기 노드 간에 동기 복제가 사용하도록 설정되고 노드 상태가 다시 정상으로 전환됩니다.
  • 아니요: 이 노드에서 HA가 사용하도록 설정되어 있지 않습니다.

다음 단계