Diagnozowanie i rozwiązywanie problemów z dostępnością zestawów SDK usługi Azure Cosmos DB w środowiskach wieloregionowych

DOTYCZY: NoSQL

W tym artykule opisano zachowanie najnowszych wersji zestawów SDK usługi Azure Cosmos DB w przypadku wystąpienia problemu z łącznością z określonym regionem lub przejścia w tryb failover w regionie.

Wszystkie zestawy SDK usługi Azure Cosmos DB umożliwiają dostosowanie preferencji regionalnych. Następujące właściwości są używane w różnych zestawach SDK:

Gdy zestaw SDK inicjuje konfigurację określającą preferencje regionalne, najpierw uzyska informacje o koncie, w tym dostępne regiony z globalnego punktu końcowego. Następnie zastosuje przecięcie skonfigurowanej preferencji regionalnej i dostępnych regionów konta oraz użyje kolejności w preferencjach regionalnych, aby określić priorytet wyniku.

Jeśli konfiguracja preferencji regionalnych zawiera regiony, które nie są dostępnym regionem na koncie, wartości zostaną zignorowane. Jeśli te nieprawidłowe regiony zostaną dodane później do konta, zestaw SDK będzie ich używać, jeśli są wyższe w konfiguracji preferencji.

Typ konta Odczyty Zapisy
Pojedynczy region zapisu Preferowany region z najwyższą kolejnością Region podstawowy
Wiele regionów zapisu Preferowany region z najwyższą kolejnością Preferowany region z najwyższą kolejnością

Jeśli nie ustawisz preferowanego regionu, klient zestawu SDK jest domyślnie ustawiony na region podstawowy:

Typ konta Odczyty Zapisy
Pojedynczy region zapisu Region podstawowy Region podstawowy
Wiele regionów zapisu Region podstawowy Region podstawowy

Uwaga

Region podstawowy odwołuje się do pierwszego regionu na liście regionów konta usługi Azure Cosmos DB. Jeśli wartości określone jako preferencje regionalne nie są zgodne z żadnymi istniejącymi regionami platformy Azure, zostaną one zignorowane. Jeśli są one zgodne z istniejącym regionem, ale konto nie jest do niego replikowane, klient połączy się z następnym preferowanym regionem zgodnym z regionem podstawowym lub z regionem podstawowym.

Ostrzeżenie

Logika trybu failover i dostępności opisana w tym dokumencie może zostać wyłączona w konfiguracji klienta, co nie jest zalecane, chyba że aplikacja użytkownika będzie obsługiwać błędy dostępności. Można to osiągnąć, wykonując następujące czynności:

W normalnych okolicznościach klient zestawu SDK połączy się z preferowanym regionem (jeśli ustawiono preferencję regionalną) lub do regionu podstawowego (jeśli nie ustawiono preferencji), a operacje będą ograniczone do tego regionu, chyba że wystąpi którykolwiek z poniższych scenariuszy.

W takich przypadkach klient korzystający z zestawu SDK usługi Azure Cosmos DB uwidacznia dzienniki i zawiera informacje o ponawianiu próby w ramach informacji diagnostycznych operacji:

  • Właściwość RequestDiagnosticsString w odpowiedziach w zestawie SDK platformy .NET w wersji 2.
  • Właściwość Diagnostics na temat odpowiedzi i wyjątków w zestawie SDK platformy .NET w wersji 3.
  • Metoda getDiagnostics() w zakresie odpowiedzi i wyjątków w zestawie SDK języka Java w wersji 4.

Podczas określania następnego regionu w kolejności preferencji klient zestawu SDK będzie używać listy regionów konta, ustalając priorytety preferowanych regionów (jeśli istnieją).

Aby uzyskać szczegółowe informacje na temat gwarancji umowy SLA podczas tych zdarzeń, zobacz umowy SLA dotyczące dostępności.

Usuwanie regionu z konta

Po usunięciu regionu z konta usługi Azure Cosmos DB każdy klient zestawu SDK, który aktywnie korzysta z konta, wykryje usunięcie regionu za pośrednictwem kodu odpowiedzi zaplecza. Następnie klient oznacza regionalny punkt końcowy jako niedostępny. Klient ponawia próbę bieżącej operacji, a wszystkie przyszłe operacje są trwale kierowane do następnego regionu w kolejności preferencji. Jeśli lista preferencji miała tylko jeden wpis (lub był pusty), ale konto ma dostępne inne regiony, zostanie przekierowany do następnego regionu na liście kont.

Dodawanie regionu do konta

Co 5 minut klient zestawu SDK usługi Azure Cosmos DB odczytuje konfigurację konta i odświeża regiony, o których jest świadomy.

Jeśli usuniesz region, a później dodasz go z powrotem do konta, jeśli dodany region ma większą kolejność preferencji regionalnych w konfiguracji zestawu SDK niż bieżący połączony region, zestaw SDK powróci do trwałego użycia tego regionu. Po wykryciu dodanego regionu wszystkie przyszłe żądania są kierowane do niego.

Jeśli skonfigurujesz klienta tak, aby najlepiej nawiązać połączenie z regionem, którego konto usługi Azure Cosmos DB nie ma, preferowany region zostanie zignorowany. Jeśli ten region zostanie dodany później, klient wykryje go i przełączy się trwale do tego regionu.

Przechodzenie w tryb failover w regionie zapisu na jednym koncie regionu zapisu

Jeśli zainicjujesz tryb failover bieżącego regionu zapisu, następne żądanie zapisu zakończy się niepowodzeniem z znaną odpowiedzią zaplecza. Po wykryciu tej odpowiedzi klient będzie wysyłać zapytanie do konta, aby poznać nowy region zapisu, i kontynuować ponawianie próby bieżącej operacji i trwale kierować wszystkie przyszłe operacje zapisu do nowego regionu.

Awaria regionalna

Jeśli konto jest pojedynczym regionem zapisu, a regionalna awaria występuje podczas operacji zapisu, zachowanie jest podobne do ręcznego przejścia w tryb failover. W przypadku żądań odczytu lub wielu kont regionów zapisu zachowanie jest podobne do usuwania regionu.

Gwarancje spójności sesji

W przypadku korzystania z spójności sesji klient musi zagwarantować, że może odczytywać własne zapisy. W przypadku kont w jednym regionie zapisu, w których preferencja regionu odczytu różni się od regionu zapisu, mogą wystąpić przypadki, w których użytkownik wystawia zapis, a następnie wykonuje odczyt z regionu lokalnego, region lokalny nie otrzymał jeszcze replikacji danych (szybkość ograniczenia światła). W takich przypadkach zestaw SDK otrzymuje określony błąd z usługi podczas operacji odczytu i ponawia próbę odczytu w regionie podstawowym, aby zapewnić spójność sesji. W przypadku kont z wieloma regionami zapisu te same semantyka sesji mają zastosowanie, ale ponieważ dostępnych jest wiele regionów zapisu, ponowne próby są wystawiane przy użyciu preferowanej listy regionów lub kolejności regionu konta.

Przejściowe problemy z łącznością w protokole TCP

W scenariuszach, w których klient zestawu SDK usługi Azure Cosmos DB jest skonfigurowany do używania protokołu TCP dla danego żądania, mogą wystąpić sytuacje, w których warunki sieciowe tymczasowo wpływają na komunikację z określonym punktem końcowym. Te tymczasowe warunki sieciowe mogą powodować błędy przekroczenia limitu czasu protokołu TCP i niedostępności usługi (HTTP 503). Jeśli to możliwe, klient ponowi próbę żądania lokalnie w tym samym punkcie końcowym przez kilka sekund.

Jeśli użytkownik skonfigurował listę preferowanych regionów z więcej niż jednym regionem i klient wyczerpał wszystkie lokalne ponawianie prób, może spróbować ponowić próbę wykonania tej pojedynczej operacji w następnym regionie z listy preferencji. Operacje zapisu można ponowić tylko w innym regionie, jeśli konto usługi Azure Cosmos DB ma włączone wiele regionów zapisu, podczas gdy operacje odczytu można ponowić w dowolnym dostępnym regionie.

Następne kroki