Azure Cosmos DB for NoSQL의 고가용성(안정성)
이 문서에서는 NoSQL용 Azure Cosmos DB의 고가용성(안정성) 지원에 대해 설명하고 가용성 영역뿐만 아니라 지역 간 재해 복구 및 비즈니스 연속성을 모두 다룹니다.
가용성 영역 지원
가용성 영역은 각 Azure 지역 내에서 물리적으로 별도의 데이터 센터 그룹입니다. 한 영역이 실패하면 서비스가 나머지 영역 중 하나로 장애 조치(failover)될 수 있습니다.
Azure의 가용성 영역에 대한 자세한 내용은 가용성 영역이란?을 참조하세요.
Azure Cosmos DB는 개별 컴퓨팅 노드의 모든 세부 정보를 투명하게 관리하는 다중 테넌트 서비스입니다. 패치 또는 계획된 유지 관리에 대해 걱정할 필요가 없습니다. Azure Cosmos DB는 시스템에서 수행하는 모든 자동 유지 관리 작업을 통해 P99 대기 시간 및 가용성에 대한 SLA를 보장합니다.
Azure Cosmos DB는 다음을 제공합니다.
개별 노드 중단 복원력. Azure Cosmos DB는 4개의 복제본 쿼럼 내에서 계정에 대한 각 Azure 지역의 데이터 복제본을 3개 이상 보장하여 복제본 중단을 자동으로 완화합니다. 이렇게 하면 애플리케이션 변경 또는 구성 없이도 개별 노드 중단에 대해 RTO가 0이고 RPO가 0이 됩니다.
영역 중단 복원력. 가용성 영역을 사용하여 Azure Cosmos DB 계정을 배포하면 Azure Cosmos DB는 영역 중단 시에도 RTO 0 및 RPO 0을 제공합니다. RTO에 대한 자세한 내용은 복구 목표를 참조하세요.
가용성 영역이 사용하도록 설정되면 Azure Cosmos DB for NoSQL은 영역 중복 구성을 지원합니다.
필수 조건
복제본은 가용성 영역을 지원하는 Azure 지역에 배포되어야 합니다. 해당 지역이 가용성 영역을 지원하는지 확인하려면 지원 지역 목록을 참조하세요.
가용성 영역 사용이 미치는 영향에서 가용성 영역이 현재 구성에 충분한 가치를 추가하는지 여부를 확인합니다.
가용성 영역 사용이 미치는 영향
Cosmos DB for NoSQL 데이터베이스의 고가용성에 대한 가용성 영역의 영향은 계정의 일관성 수준과 가용성 영역이 사용하도록 설정된 지역에 따라 달라집니다. 대부분의 경우 가용성 영역은 계정이 다중 지역인 경우(강력한 일관성으로 구성되지 않은 경우) 값을 추가하거나 최소값을 추가하지 않습니다.
현재 계정 구성에서 가용성 영역 사용이 미치는 영향을 예상하려면 아래 표를 참조하세요.
계정 일관성 수준 | 가용성 영역이 사용하도록 설정된 지역 | 가용성 영역 사용이 미치는 영향 |
---|---|---|
비동기(제한된 부실 또는 그 이하) | 보조 읽기 영역 수에는 제한이 없습니다. | 읽기 영역이 실패할 경우 SDK가 이미 읽기에 대한 원활한 리디렉션을 제공하므로 최소한의 값을 제공합니다. |
동기(강력) | 두 개 이상의 보조 읽기 지역 | 쓰기를 계속할 수 있는 읽기 영역의 가용성이 손실될 경우 시스템이 동적 쿼럼을 활용할 수 있으므로 한계 가치를 제공합니다. |
동기(강력) | 보조 읽기 지역 1개 | 이 시나리오에서 읽기 지역이 손실되면 쓰기 가용성에 영향을 미칠 수 있으므로 더 큰 값을 제공합니다. |
모두 | 쓰기 영역 및 임의 개수의 보조 영역 | 영역 오류에 대한 쓰기 작업의 가용성을 향상합니다. |
모두 | 단일 지역 | 단일 지역은 다중 지역 장애 조치(failover) 기능의 이점을 활용할 수 없습니다. 가용성 영역을 사용하면 영역 장애로 인한 전체 가용성 손실을 방지할 수 있습니다. |
SLA 개선 사항
가용성 영역은 실제로 분리되어 있고 별도의 전원, 네트워크 및 냉각을 제공하므로 가용성 SLA(서비스 수준 계약)는 단일 지역의 계정(99.99%)보다 높습니다(99.995%). 가용성 영역이 사용하도록 설정된 지역은 25% 프리미엄으로 청구되지만 가용성 영역이 없는 지역에는 프리미엄이 부과되지 않습니다. 또한 다중 지역 쓰기로 구성된 계정 및/또는 자동 크기 조정 모드로 구성된 컬렉션의 경우 가용성 영역에 대한 프리미엄 가격 책정이 면제됩니다.
Cosmos DB 계정에 지역을 추가하면 일반적으로 기존 청구액이 100%(곱셈이 아닌 가감) 증가하지만 지역 간 비용에는 약간의 차이가 있습니다. 자세한 내용은 가격 책정 페이지를 참조하세요.
AZ 사용, 지역 추가 또는 다중 지역 쓰기 사용은 단일 지역에 대한 4 9 가용성부터 각 단계에서 특정 Cosmos DB 계정의 복원력과 가용성을 높이는 계층화 방식으로 생각할 수 있습니다(단일 지역 AZ 없는 구성을 위한 4 9의 가용성부터 AZ가 있는 단일 지역을 위한 4와 9의 절반, 다중 지역 쓰기 옵션이 활성화된 다중 지역 구성을 위한 5 9의 가용성까지). 각 구성에 대한 SLA에 대한 요약은 다음 표를 참조하세요.
KPI | 가용성 영역을 사용하지 않는 단일 지역 쓰기 | 가용성 영역을 사용하는 단일 지역 쓰기 | 가용성 영역을 사용하지 않는 다중 지역, 단일 지역 쓰기 | 가용성 영역을 사용하는 다중 지역, 단일 지역 쓰기 | 가용성 영역을 사용하거나 사용하지 않는 다중 지역, 다중 지역 쓰기 |
---|---|---|---|---|---|
쓰기 가용성 SLA | 99.99% | 99.995% | 99.99% | 99.995% | 99.999% |
가용성 SLA 읽기 | 99.99% | 99.995% | 99.999% | 99.999% | 99.999% |
영역 실패: 데이터 손실 | 데이터 손실 | 데이터 손실 없음 | 데이터 손실 없음 | 데이터 손실 없음 | 데이터 손실 없음 |
영역 실패: 가용성 | 가용성 손실 | 가용성 손실 없음 | 가용성 손실 없음 | 가용성 손실 없음 | 가용성 손실 없음 |
지역 중단: 데이터 손실 | 데이터 손실 | 데이터 손실 | 일관성 수준에 따라 달라집니다. 자세한 내용은 일관성, 가용성 및 성능 장단점을 참조하세요. | 일관성 수준에 따라 달라집니다. 자세한 내용은 일관성, 가용성 및 성능 장단점을 참조하세요. | 일관성 수준에 따라 달라집니다. 자세한 내용은 일관성, 가용성 및 성능 장단점을 참조하세요. |
지역 중단: 가용성 | 가용성 손실 | 가용성 손실 | 읽기 지역 오류에 대한 가용성 손실 없음, 쓰기 지역 오류에 대해서는 임시 | 읽기 지역 오류에 대한 가용성 손실 없음, 쓰기 지역 오류에 대해서는 임시 | 영향을 받는 지역에서 읽기 가용성 손실, 일시적인 쓰기 가용성 손실 없음 |
가격(1) | 해당 없음 | 프로비전된 RU/초 x 1.25 비율 | 프로비전된 RU/s x N개 지역 | 프로비전된 RU/s x 1.25 속도 x N개 지역(2) | 다중 지역 쓰기 속도 x N개 지역 |
1 서버리스 계정의 경우에는RU에 1.25의 계수를 곱합니다.
2 1.25 속도는 가용성 영역을 사용하도록 설정하는 지역에만 적용됩니다.
가용성 영역을 사용하도록 설정된 리소스 만들기
Azure Cosmos DB NoSQL 계정에 새 지역을 추가하는 경우에만 가용성 영역을 구성할 수 있습니다.
가용성 영역 지원을 사용하도록 설정하려면 다음을 사용할 수 있습니다.
가용성 영역 지원으로 마이그레이션
Cosmos DB 계정을 가용성 영역 지원으로 마이그레이션하는 방법을 알아보려면 Azure Cosmos DB for NoSQL을 가용성 영역 지원으로 마이그레이션)을 참조하세요.
지역 간 재해 복구 및 비즈니스 연속성
DR(재해 복구)은 가동 중지 시간 및 데이터 손실을 초래하는 자연 재해 또는 실패한 배포와 같은 영향이 큰 이벤트로부터 복구하는 것입니다. 원인에 관계없이 최상의 재해 해결책은 잘 정의되고 테스트된 DR 계획과 DR을 적극적으로 지원하는 애플리케이션 디자인입니다. 재해 복구 계획을 만들기 전에 재해 복구 전략을 디자인하기 위한 권장 사항을 참조하세요.
DR과 관련하여 Microsoft는 공유 책임 모델을 사용합니다. 공유 책임 모델에서 Microsoft는 기준 인프라 및 플랫폼 서비스를 사용할 수 있도록 보장합니다. 동시에 많은 Azure 서비스는 데이터를 자동으로 복제하거나 실패한 지역에서 대체하여 사용하도록 설정된 다른 지역으로 교차 복제하지 않습니다. 이러한 서비스의 경우 워크로드에 적합한 재해 복구 계획을 설정할 책임이 있습니다. Azure PaaS(Platform as a Service) 제품에서 실행되는 대부분의 서비스는 DR을 지원하는 기능과 지침을 제공하며, 서비스별 기능을 사용하여 빠른 복구를 지원하여 DR 계획을 개발하는 데 도움이 될 수 있습니다.
지역 중단은 모든 가용성 영역에서 Azure 지역의 모든 Azure Cosmos DB 노드에 영향을 주는 중단입니다. 드문 지역 중단의 경우 내구성 및 가용성의 다양한 결과를 지원하도록 Azure Cosmos DB를 구성할 수 있습니다.
내구성
Azure Cosmos DB 계정이 단일 지역에 배포되는 경우 일반적으로 데이터 손실이 발생하지 않습니다. Azure Cosmos DB 서비스가 영향을 받는 지역에서 복구한 후 데이터 액세스가 복원됩니다. Azure Cosmos DB 지역에서 복구할 수 없는 재해가 있는 경우에만 데이터 손실이 발생할 수 있습니다.
지역의 치명적인 재해로 인해 발생할 수 있는 전체 데이터 손실을 방지할 수 있도록 Azure Cosmos DB는 두 가지 백업 모드를 제공합니다.
- 지속적인 백업은 100초마다 각 지역을 백업합니다. 이 모드를 사용하면 1초 세분성으로 데이터를 특정 시점으로 복원할 수 있습니다. 각 지역에서 백업은 해당 지역에서 커밋된 데이터에 따라 달라집니다. 지역에서 가용성 영역을 사용하는 경우 백업은 영역 중복 스토리지 계정에 저장됩니다.
- 주기적인 백업은 파티션 간 동기화 없이 계정에 속한 모든 컨테이너의 모든 파티션을 전체 백업합니다. 최소 백업 간격은 1시간입니다.
Azure Cosmos DB 계정이 여러 지역에 배포되는 경우 데이터 내구성은 계정에 구성된 일관성 수준에 따라 다릅니다. 다음 표에서는 모든 일관성 수준에서 둘 이상의 지역에 배포된 Azure Cosmos DB 계정의 RPO를 자세히 설명합니다.
일관성 수준 | 지역 중단에 대한 RPO |
---|---|
세션, 일관된 접두사, 최종 | 15분 미만 |
제한된 부실 | K 및 T |
강력 | 0 |
K = 항목의 버전(업데이트)의 수입니다.
T = 마지막 업데이트 이후 시간 간격입니다.
다중 지역 계정의 경우 K 및 T의 최솟값은 100,000개 쓰기 작업 또는 300초입니다. 이 값은 제한된 부실을 사용하는 경우 데이터의 최소 RPO를 정의합니다.
일관성 수준 간 차이점에 대한 자세한 내용은 Azure Cosmos DB의 일관성 수준을 참조하세요.
서비스 관리형 장애 조치
솔루션에 지역 중단 중에 지속적인 작동 시간이 필요한 경우 여러 지역에 걸쳐 데이터를 복제하고 필요할 때 운영 지역으로 투명하게 장애 조치(failover)하도록 Azure Cosmos DB를 구성할 수 있습니다.
지역 중단 후 단일 지역 계정에 대한 접근성이 상실될 수 있습니다. 항상 비즈니스 연속성을 보장하려면 단일 쓰기 지역과 최소한 두 번째(읽기) 지역으로 Azure Cosmos DB 계정을 설정하고 서비스 관리 장애 조치(failover)를 사용하도록 설정하는 것이 좋습니다.
서비스 관리형 장애 조치를 사용하면 내구성 섹션에서 이전에 설명한 대로 데이터 손실이 발생하지만 비즈니스 연속성을 유지하기 위해 Azure Cosmos DB에서 다중 지역 계정의 쓰기 지역을 장애 조치할 수 있습니다. 지역 장애 조치(failover)는 Azure Cosmos DB 클라이언트에서 검색되고 핸들됩니다. 애플리케이션에서 변경할 필요가 없습니다. 여러 읽기 지역 및 서비스 관리형 장애 조치를 사용하도록 설정하는 방법에 대한 지침은 Azure Portal을 사용하여 Azure Cosmos DB 계정 관리를 참조하세요.
Important
여러 읽기 지역이 있는 단일 지역 쓰기 구성을 선택한 경우 서비스 관리 장애 조치(failover)를 사용하도록 프로덕션 워크로드에 사용되는 Azure Cosmos DB 계정을 구성하는 것이 좋습니다. 이 구성을 사용하면 Azure Cosmos DB에서 계정 데이터베이스를 사용 가능한 지역으로 장애 조치할 수 있습니다. 이 구성이 없는 경우 계정에서는 쓰기 지역 중단의 전체 기간에 대한 쓰기 가용성 손실이 발생합니다. 지역 연결이 부족하므로 수동 장애 조치가 성공하지 못합니다.
Warning
서비스 관리 장애 조치(failover)가 사용하도록 설정된 경우에도 부분 중단으로 인해 Azure Cosmos DB 서비스 팀의 수동 개입이 필요할 수 있습니다. 이러한 시나리오에서는 장애 조치(failover)가 적용되는 데 최대 1시간(또는 그 이상)이 걸릴 수 있습니다. 부분 중단 시 쓰기 가용성을 높이려면 서비스 관리 장애 조치(failover) 외에 가용성 영역을 사용하도록 설정하는 것이 좋습니다.
다중 쓰기 지역
여러 지역에서 쓰기를 허용하도록 Azure Cosmos DB를 구성할 수 있습니다. 이 구성은 지리적으로 분산된 애플리케이션에서 쓰기 대기 시간을 줄이는 데 유용합니다.
Azure Cosmos DB 계정이 여러 쓰기 지역을 사용하도록 구성된 경우 강력한 일관성이 지원되지 않으며 쓰기 충돌이 발생할 수 있습니다. 이 충돌을 해결하는 방법에 대한 자세한 내용은 여러 쓰기 지역 사용 시 충돌 형식 및 해결 정책을 참조하세요.
Important
동일한 문서 ID를 자주 업데이트하거나 TTL 또는 삭제 후 동일한 문서 ID를 자주 다시 만들면 시스템에서 생성된 충돌 횟수 증가로 인해 복제 성능에 영향을 줍니다.
충돌 해결 지역
Azure Cosmos DB 계정이 다중 지역 쓰기로 구성되면 쓰기 충돌 시 지역 중 하나가 중재자 역할을 합니다.
다중 지역 쓰기에 대한 모범 사례
다음은 여러 지역에 쓸 때 고려해야 할 몇 가지 모범 사례입니다.
로컬 트래픽을 로컬로 유지
다중 지역 쓰기를 사용하는 경우 애플리케이션은 로컬 지역에서 시작되는 읽기 및 쓰기 트래픽을 엄격하게 로컬 Cosmos DB 지역으로 실행해야 합니다. 최적의 성능을 위해 지역 간 호출을 방지합니다.
애플리케이션은 다음 안티패턴을 방지하여 충돌을 최소화하는 것이 중요합니다.
모든 지역에 동일한 쓰기 작업을 전송하여 빠른 응답 시간을 얻을 확률 증가
요청별로 읽기 또는 쓰기 작업의 대상 지역을 임의로 결정
라운드 로빈 정책을 사용하여 요청별로 읽기 또는 쓰기 작업의 대상 지역을 결정합니다.
복제 지연에 대한 종속성 방지
강력한 일관성을 위해 다중 지역 쓰기 계정을 구성할 수 없습니다. 쓰기 대상 지역은 Azure Cosmos DB가 데이터를 전역적으로 비동기적으로 복제하는 동안 데이터를 로컬로 복제한 직후에 응답합니다.
드물긴 하지만 데이터를 지역에서 복제할 때 하나 이상의 파티션에서 복제 지연이 발생할 수 있습니다. 드물게 나타나는 네트워크 트래픽 문제 또는 평소보다 높은 충돌 해결 속도로 인해 복제 지연이 발생할 수 있습니다.
예를 들어, 애플리케이션이 지역 A에 쓰지만 지역 B에서 읽는 아키텍처는 두 지역 간에 복제 지연에 대한 종속성을 도입합니다. 그러나 애플리케이션이 동일한 지역에서 읽고 쓰는 경우에는 복제 지연이 있더라도 성능은 일정하게 유지됩니다.
쓰기 작업에 대한 세션 일관성 사용량 평가
세션 일관성에서는 읽기 및 쓰기 작업 모두에 세션 토큰을 사용합니다.
읽기 작업의 경우 Azure Cosmos DB는 캐시된 세션 토큰을 서버에 보내 지정된(또는 최신) 세션 토큰에 해당하는 데이터를 수신하도록 보장합니다.
쓰기 작업의 경우 Azure Cosmos DB는 세션 토큰을 데이터베이스에 보내 서버가 제공된 세션 토큰을 확인한 경우에만 데이터를 유지하도록 보장합니다. 단일 지역 쓰기 계정에서 쓰기 지역은 항상 세션 토큰을 확인하도록 보장됩니다. 그러나 다중 지역 쓰기 계정에서 쓰기 대상 지역이 다른 지역에 실행된 쓰기를 확인하지 못할 수 있습니다. 클라이언트가 지역 B의 세션 토큰을 사용하여 지역 A에 쓰는 경우 지역 A는 지역 B의 변경 내용을 확인할 때까지 데이터를 유지할 수 없습니다.
클라이언트 인스턴스 간에 세션 토큰을 전달하는 동안 읽기 작업에만 세션 토큰을 사용하고 쓰기 작업에는 사용하지 않는 것이 가장 좋습니다.
동일한 문서에 대한 빠른 업데이트 완화
충돌을 해결하거나 확인하기 위한 서버의 업데이트는 동일한 문서가 반복적으로 업데이트되는 경우 애플리케이션에서 트리거하는 쓰기와 충돌할 수 있습니다. 동일한 문서에 대한 업데이트가 연속적으로 반복되는 경우 충돌 해결 중에 더 높은 대기 시간이 발생합니다.
동일한 문서에 대한 반복 업데이트가 가끔 발생하는 것은 불가피하지만, 안정적인 상태 트래픽에서 장기간에 걸쳐 동일한 문서에 대한 빠른 업데이트가 나타나는 경우에는 대신 새 문서가 만들어지는 아키텍처를 살펴보는 것이 좋습니다.
읽기 및 쓰기 중단
단일 지역 계정의 클라이언트에서는 서비스가 복원될 때까지 읽기 및 쓰기 가용성이 손실됩니다.
다중 지역 계정에서는 다음 구성 및 중단 유형에 따라 다른 동작이 발생합니다.
구성 | Outage | 가용성 영향 | 내구성 영향 | 수행할 작업 |
---|---|---|---|---|
단일 쓰기 지역 | 읽기 지역 가동 중단 | 모든 클라이언트는 읽기를 다른 지역으로 자동으로 리디렉션합니다. 모든 구성에 대한 읽기 또는 쓰기 가용성 손실이 없습니다. 예외는 강력한 일관성을 가진 두 지역의 구성으로, 서비스가 복원될 때까지 쓰기 가용성이 손실됩니다. 또는 서비스 관리형 장애 조치를 사용하도록 설정하면 서비스는 지역을 실패로 표시하고 장애 조치가 발생합니다. | 데이터가 손실되지 않습니다. | 중단 중에는 읽기 트래픽을 지원하기 위해 나머지 지역에 프로비전된 RU(요청 단위)가 충분히 있는지 확인합니다. 중단이 끝나면 프로비전된 RU를 적절하게 다시 조정합니다. |
단일 쓰기 지역 | 쓰기 지역 가동 중단 | 클라이언트에서 읽기를 다른 지역으로 리디렉션합니다. 서비스 관리형 장애 조치가 없으면 클라이언트에서 쓰기 가용성 손실이 발생합니다. 중단이 종료되면 쓰기 가용성 복원이 자동으로 발생합니다. 서비스 관리형 장애 조치가 있으면 서비스가 선택한 새 쓰기 지역에 대한 장애 조치를 관리할 때까지 클라이언트에서 쓰기 가용성 손실이 발생합니다. |
강력한 일관성 수준을 선택하지 않으면 서비스에서 일부 데이터를 나머지 활성 지역에 복제하지 않을 수 있습니다. 이 복제는 선택한 일관성 수준에 따라 달라집니다. 영향을 받는 지역에 영구적인 데이터 손실이 발생할 경우 복제되지 않은 데이터가 손실될 수 있습니다. | 가동 중단 중에는 읽기 트래픽을 지원하기 위해 남은 지역에 프로비전된 RU가 충분한지 확인합니다. 성공할 수 없으므로 중단 중에는 수동 장애 조치를 트리거하지 마세요. 중단이 끝나면 프로비전된 RU를 적절하게 다시 조정합니다. API for NoSQL을 사용하는 계정은 충돌 피드를 통해 실패한 지역에서 복제되지 않은 데이터를 복구할 수도 있습니다. |
다중 쓰기 지역 | 모든 지역 가동 중단 | 서비스 관리형 장애 조치를 사용하는 단일 쓰기 지역과 유사한 일시적인 쓰기 가용성 손실이 발생할 수 있습니다. 충돌 해결 지역의 장애 조치로 인해 중단 시점에 쓰기 충돌이 많이 발생하는 경우 쓰기 가용성이 손실될 수도 있습니다. | 선택한 일관성 수준에 따라 실패한 지역의 최근 업데이트된 데이터를 나머지 활성 지역에서 사용하지 못할 수 있습니다. 영향을 받는 지역에 영구적인 데이터 손실이 발생할 경우 복제되지 않은 데이터가 손실될 수 있습니다. | 중단 중에는 추가 트래픽을 지원하기 위해 나머지 지역에 프로비전된 RU가 충분히 있는지 확인합니다. 중단이 끝나면 프로비전된 RU를 적절하게 다시 조정할 수 있습니다. 가능한 경우 Azure Cosmos DB는 실패한 지역에서 복제되지 않은 데이터를 자동으로 복구합니다. 이 자동 복구는 API for NoSQL을 사용하는 계정에 대해 구성하는 충돌 해결 방법을 사용합니다. 다른 API를 사용하는 계정의 경우 이 자동 복구는 마지막 쓰기 우선을 사용합니다. |
읽기 지역 가동 중단에 대한 추가 정보
영향을 받는 지역은 연결이 끊어지며 오프라인으로 표시됩니다. Azure Cosmos DB SDK는 기본 지역 목록에서 사용 가능한 다음 지역으로 읽기 호출을 리디렉션합니다.
기본 지역 목록의 어느 지역도 사용할 수 없는 경우 호출은 현재 쓰기 지역으로 자동으로 대체됩니다.
읽기 지역 중단을 처리하기 위해 애플리케이션 코드를 변경할 필요가 없습니다. 영향을 받은 읽기 지역이 다시 온라인 상태가 되면 현재 쓰기 지역과 동기화되고 완전히 catch된 후 읽기 요청을 제공하는 데 다시 사용할 수 있습니다.
후속 읽기는 애플리케이션 코드를 변경하지 않고도 복구된 지역으로 리디렉션됩니다. 이전에 실패한 지역의 장애 조치 및 다시 조인 중에 Azure Cosmos DB는 읽기 일관성 보장을 계속 적용합니다.
Azure 지역이 영구적으로 복구할 수 없는 드물고 불운한 경우에도, 다중 지역 Azure Cosmos DB 계정을 강력한 일관성으로 구성하면 데이터가 손실되지 않습니다. 다중 지역 Azure Cosmos DB 계정에는 내구성 섹션에서 이전에 지정한 내구성 특성이 있습니다.
쓰기 지역 가동 중단에 대한 추가 정보
쓰기 지역 중단 중에 서비스 관리형 장애 조치(failover)가 Azure Cosmos DB 계정에 구성되면 Azure Cosmos DB 계정에서 보조 지역을 새 주 쓰기 지역으로 승격시킵니다. 장애 조치는 지정한 지역 우선 순위의 순서대로 다른 지역에 수행됩니다.
수동 장애 조치는 트리거되지 않으며 원본 또는 대상 지역이 중단되는 경우에는 성공하지 못합니다. 장애 조치 절차에는 지역 간 연결이 필요한 일관성 검사 포함되기 때문입니다.
이전에 영향을 받은 지역이 다시 온라인 상태가 되면 해당 지역이 실패했을 때 복제되지 않은 모든 쓰기 데이터는 충돌 피드를 통해 사용할 수 있게 됩니다. 애플리케이션은 충돌 피드를 읽고, 애플리케이션별 논리에 따라 충돌을 해결하고, 업데이트된 데이터를 적절하게 Azure Cosmos DB 컨테이너에 다시 쓸 수 있습니다.
이전에 영향을 받은 쓰기 지역이 복구되면 Azure Portal에서 "온라인"으로 표시되고 읽기 지역으로 사용할 수 있게 됩니다. 이 시점에서 [PowerShell, Azure CLI 또는 Azure Portal](/azure/cosmos-db/how-to-manage-database-account#perform-manual-failover-on-an-azure-cosmos-db-account)을 사용하여 복구된 지역을 쓰기 지역으로 다시 전환하는 것이 안전합니다. 쓰기 지역을 전환하기 전, 전환하는 동안 또는 전환한 후 데이터 또는 가용성 손실이 없습니다. 애플리케이션은 고가용성을 계속 유지합니다.
Warning
Azure Cosmos DB 계정이 서비스 관리 장애 조치(failover)를 통해 보조 지역을 새로운 기본 쓰기 지역으로 승격시키는 쓰기 지역 중단이 발생하는 경우 원래 쓰기 영역은 복구된 후에 자동으로 쓰기 영역으로 다시 승격되지 않습니다. PowerShell, Azure CLI 또는 Azure Portal을 사용하여 복구된 지역을 쓰기 지역으로 다시 전환하는 것은 사용자의 책임입니다(위에 설명된 대로 안전한 경우).
중단 검색, 알림 및 관리
단일 지역 계정의 경우 클라이언트에서는 Azure Cosmos DB 지역 중단 중에 읽기 및 쓰기 가용성이 손실됩니다. 다중 지역 계정에서는 다음 표에 설명된 대로 다른 동작이 발생합니다.
쓰기 지역 | 서비스 관리형 장애 조치 | 필요한 항목 | 수행할 작업 |
---|---|---|---|
단일 쓰기 지역 | 사용 안 함 | 강력한 일관성을 사용하지 않을 때 읽기 지역에서 중단이 발생하는 경우 모든 클라이언트는 다른 지역으로 리디렉션합니다. 읽기 또는 쓰기 가용성 손실이 없으며 데이터 손실도 없습니다. 강력한 일관성을 사용하는 경우 두 개 미만의 읽기 지역이 남아 있으면 읽기 지역의 중단이 쓰기 가용성에 영향을 줄 수 있습니다. 쓰기 지역에서 중단이 발생하는 경우 클라이언트에서는 쓰기 가용성 손실이 발생합니다. 강력한 일관성을 선택하지 않으면 서비스에서 일부 데이터를 나머지 활성 지역에 복제하지 않을 수 있습니다. 이 복제는 선택한 일관성 수준에 따라 달라집니다. 영향을 받는 지역에 영구적인 데이터 손실이 발생할 경우 복제되지 않은 데이터가 손실될 수 있습니다. 중단이 종료되면 Azure Cosmos DB는 쓰기 가용성을 복원합니다. |
가동 중단 중에는 읽기 트래픽을 지원하기 위해 남은 지역에 프로비전된 RU가 충분한지 확인합니다. 성공할 수 없으므로 중단 중에는 수동 장애 조치를 트리거하지 마세요. 중단이 끝나면 프로비전된 RU를 적절하게 다시 조정합니다. |
단일 쓰기 지역 | Enabled | 강력한 일관성을 사용하지 않을 때 읽기 지역에서 중단이 발생하는 경우 모든 클라이언트는 다른 지역으로 리디렉션합니다. 읽기 또는 쓰기 가용성 손실이 없으며 데이터 손실도 없습니다. 강력한 일관성을 사용하는 경우 두 개 미만의 읽기 지역이 남아 있으면 읽기 지역의 중단이 쓰기 가용성에 영향을 줄 수 있습니다. 쓰기 지역에서 중단이 발생하는 경우 Azure Cosmos DB가 기본 설정에 따라 새 지역을 새 쓰기 지역으로 선택하기 전까지는 클라이언트에서 쓰기 가용성 손실이 발생합니다. 강력한 일관성을 선택하지 않으면 서비스에서 일부 데이터를 나머지 활성 지역에 복제하지 않을 수 있습니다. 이 복제는 선택한 일관성 수준에 따라 달라집니다. 영향을 받는 지역에 영구적인 데이터 손실이 발생할 경우 복제되지 않은 데이터가 손실될 수 있습니다. |
가동 중단 중에는 읽기 트래픽을 지원하기 위해 남은 지역에 프로비전된 RU가 충분한지 확인합니다. 성공할 수 없으므로 중단 중에는 수동 장애 조치를 트리거하지 마세요. 중단이 끝나면 쓰기 지역을 원래 지역으로 다시 이동하고 프로비전된 RU를 적절하게 다시 조정할 수 있습니다. API for NoSQL를 사용하는 계정은 충돌 피드를 통해 실패한 지역에서 복제되지 않은 데이터를 복구할 수도 있습니다. |
다중 쓰기 지역 | 해당 없음 | 실패한 지역의 최근 업데이트된 데이터는 나머지 활성 영역에서 사용하지 못할 수 있습니다. 최종적이고 일관된 접두사 및 세션 일관성 수준은 15분 미만의 부실을 보장합니다. 제한된 부실은 구성에 따라 K 업데이트 또는 T초 미만으로 보장됩니다. 영향을 받는 지역에 영구적인 데이터 손실이 발생할 경우 복제되지 않은 데이터가 손실될 수 있습니다. | 중단 중에는 추가 트래픽을 지원하기 위해 나머지 지역에 프로비전된 RU가 충분히 있는지 확인합니다. 중단이 끝나면 프로비전된 RU를 적절하게 다시 조정할 수 있습니다. 가능한 경우 Azure Cosmos DB는 실패한 지역에서 복제되지 않은 데이터를 복구합니다. 이 복구는 API for NoSQL을 사용하는 계정에 대해 구성하는 충돌 해결 방법을 사용합니다. 다른 API를 사용하는 계정의 경우 이 복구는 마지막 쓰기 우선을 사용합니다. |
고가용성 테스트
Azure Cosmos DB 계정의 가용성이 높더라도 애플리케이션이 고가용성을 유지하도록 올바르게 설계되지 않았을 수도 있습니다. 애플리케이션 테스트 또는 DR(재해 복구) 드릴의 일환으로 애플리케이션의 엔드투엔드 고가용성을 테스트하려면, 계정에 대해 서비스 관리형 장애 조치를 일시적으로 사용하지 않도록 설정합니다. PowerShell, Azure CLI 또는 Azure Portal을 사용하여 수동 장애 조치를 호출한 다음, 애플리케이션을 모니터링합니다. 테스트를 완료한 후 주 지역으로 장애 복구하고 계정에 대한 서비스 관리형 장애 조치를 복원할 수 있습니다.
Important
원본 또는 대상 지역에서 Azure Cosmos DB 중단 중에 수동 장애 조치를 호출하지 마세요. 수동 장애 조치의 경우 데이터 일관성을 유지 관리하기 위해 지역 연결이 필요하므로 성공하지 못합니다.