다음을 통해 공유


다지역 환경에서 Azure Cosmos DB SDK의 가용성을 진단하고 문제를 해결하기

이 문서에서는 특정 지역에 대한 연결 문제가 표시되거나 지역 장애 조치(failover)가 발생할 때 최신 버전의 Azure Cosmos DB SDK 동작을 설명합니다.

모든 Azure Cosmos DB SDK는 지역 기본 설정을 사용자 지정하는 옵션을 제공합니다. 다음 속성은 다른 SDK에서 사용됩니다.

SDK가 지역 기본 설정을 지정하는 구성으로 초기화되면 먼저 전역 엔드포인트에서 사용 가능한 지역을 포함한 계정 정보를 가져옵니다. 그런 다음 구성된 지역 기본 설정과 계정의 사용 가능한 지역의 교집합을 적용하고 지역 기본 설정의 순서를 사용하여 결과의 우선 순위를 지정합니다.

지역 기본 설정 구성에 계정에서 사용 가능한 지역이 아닌 지역이 포함된 경우 값은 무시됩니다. 이러한 잘못된 지역이 나중에 계정에 추가되면 SDK는 기본 설정 구성에서 더 높은 경우 해당 지역을 사용합니다.

계정 유형 읽기 쓰기
단일 쓰기 지역 순서가 가장 높은 선호 지역 주 지역
다중 쓰기 지역 가장 높은 우선 순위의 선호 지역 선호되는 순서가 가장 높은 지역

기본 설정 지역을 설정하지 않으면 SDK 클라이언트는 주요 지역으로 기본값을 사용합니다.

계정 유형 읽기 쓰기
단일 쓰기 지역 주 지역 주 지역
다중 쓰기 지역 주 지역 주 지역

비고

주 지역은 Azure Cosmos DB 계정 지역 목록의 첫 번째 지역을 나타냅니다. 지역 기본 설정으로 지정된 값이 기존 Azure 지역과 일치하지 않으면 무시됩니다. 기존 지역과 일치하지만 계정이 복제되지 않은 경우 클라이언트는 일치하는 다음 기본 지역 또는 주 지역에 연결됩니다.

경고

이 문서에 설명된 장애 조치(failover) 및 가용성 논리는 클라이언트 구성에서 사용하지 않도록 설정할 수 있으며, 이는 사용자 애플리케이션이 가용성 오류 자체를 처리하지 않는 한 권장되지 않습니다. 이를 다음 방법으로 실현할 수 있습니다.

정상적인 상황에서 SDK 클라이언트는 기본 설정 지역(지역 기본 설정이 설정된 경우) 또는 주 지역(기본 설정이 설정되지 않은 경우)에 연결되며 아래 시나리오가 발생하지 않는 한 해당 지역으로 작업이 제한됩니다.

이러한 경우 Azure Cosmos DB SDK를 사용하는 클라이언트는 로그를 노출하고 작업 진단 정보의 일부로 재시도 정보를 포함합니다.

  • .NET V2 SDK의 응답에 대한 RequestDiagnosticsString 속성입니다.
  • .NET V3 SDK의 응답 및 예외에 대한 Diagnostics 속성입니다.
  • Java V4 SDK의 응답 및 예외에 대한 getDiagnostics() 메서드입니다.

기본 설정 순서대로 다음 지역을 결정할 때 SDK 클라이언트는 계정 지역 목록을 사용하여 기본 설정 지역(있는 경우)의 우선 순위를 지정합니다.

이러한 이벤트 중 SLA 보장에 대한 포괄적인 세부 정보는 가용성에 대한 SLA를 참조하세요.

계정에서 지역 제거

Azure Cosmos DB 계정에서 지역을 제거하면 계정을 적극적으로 사용하는 모든 SDK 클라이언트가 백 엔드 응답 코드를 통해 지역 제거를 검색합니다. 그런 다음 클라이언트는 지역 엔드포인트를 사용할 수 없음으로 표시합니다. 클라이언트는 현재 작업을 다시 시도하며 이후의 모든 작업은 기본 설정 순서대로 다음 지역으로 영구적으로 라우팅됩니다. 기본 설정 목록에 항목이 하나만 있거나 비어 있지만 계정에 다른 지역을 사용할 수 있는 경우 계정 목록의 다음 지역으로 라우팅됩니다.

계정에 지역 추가

5분마다 Azure Cosmos DB SDK 클라이언트는 계정 구성을 읽고 알고 있는 지역을 새로 고칩니다.

지역을 제거하고 나중에 계정에 다시 추가하는 경우 추가된 지역이 현재 연결된 지역보다 SDK 구성에서 더 높은 지역 기본 설정 순서를 갖는 경우 SDK는 이 지역을 영구적으로 사용하도록 다시 전환합니다. 추가된 지역이 검색되면 이후의 모든 요청이 해당 지역으로 전달됩니다.

Azure Cosmos DB 계정에 없는 지역에 연결하도록 클라이언트를 구성하는 경우 기본 설정 지역은 무시됩니다. 나중에 해당 지역을 추가하면 클라이언트가 해당 지역을 검색하고 해당 지역으로 영구적으로 전환됩니다.

단일 쓰기 지역 계정에서 쓰기 지역을 장애 조치(failover)하기

현재 쓰기 지역의 장애 조치(failover)를 시작하면 알려진 백 엔드 응답으로 다음 쓰기 요청이 실패합니다. 이 응답이 감지되면 클라이언트는 계정을 쿼리하여 새 쓰기 지역을 알아보고, 현재 작업을 다시 시도하고 모든 향후 쓰기 작업을 새 지역으로 영구적으로 라우팅합니다.

지역 정전

계정이 단일 쓰기 지역이고 쓰기 작업 중에 지역 가동 중단이 발생하는 경우 동작은 수동 장애 조치(failover)와 유사합니다. 읽기 요청 또는 여러 쓰기 지역 계정의 경우 동작은 지역을 제거하는 것과 유사합니다.

세션 일관성 보장

세션 일관성을 사용하는 경우 클라이언트는 자체 쓰기를 읽을 수 있도록 보장해야 합니다. 읽기 지역 기본 설정이 쓰기 지역과 다른 단일 쓰기 지역 계정에서는 사용자가 쓰기를 발급한 다음 로컬 지역에서 읽기를 수행하는 경우가 있을 수 있습니다. 로컬 지역은 아직 데이터 복제(광원 제약 조건 속도)를 받지 못했습니다. 이러한 경우 SDK는 읽기 작업에 대한 서비스에서 특정 오류를 수신하고 주 지역에서 읽기를 다시 시도하여 세션 일관성을 보장합니다. 쓰기 지역이 여러 개 있는 계정의 경우 동일한 세션 의미 체계가 적용되지만 사용할 수 있는 쓰기 지역이 여러 개 있으므로 기본 지역 목록 또는 계정의 지역 순서를 사용하여 재시도를 실행합니다.

TCP 프로토콜의 일시적인 연결 문제

Azure Cosmos DB SDK 클라이언트가 TCP 프로토콜을 사용하도록 구성된 시나리오에서는 지정된 요청에 대해 네트워크 조건이 특정 엔드포인트와의 통신에 일시적으로 영향을 주는 상황이 있을 수 있습니다. 이러한 임시 네트워크 조건은 TCP 시간 제한 및 서비스를 사용할 수 없음(HTTP 503) 오류로 표시될 수 있습니다. 클라이언트는 가능하면 몇 초 동안 동일한 엔드포인트에서 로컬로 요청을 다시 시도 합니다.

사용자가 둘 이상의 지역을 사용하여 기본 지역 목록을 구성하고 클라이언트가 모든 로컬 재시도를 모두 사용한 경우 기본 설정 목록에서 다음 지역에서 해당 단일 작업을 다시 시도할 수 있습니다. 쓰기 작업은 Azure Cosmos DB 계정에 여러 쓰기 지역이 사용하도록 설정된 경우에만 다른 지역에서 다시 시도될 수 있지만 읽기 작업은 사용 가능한 모든 지역에서 다시 시도될 수 있습니다.

다음 단계