Udostępnij za pośrednictwem


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 skrzyżowanie skonfigurowanej preferencji regionalnej i dostępnych regionów konta i użyje kolejności w preferencji regionalnej, aby określić priorytety 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 użyje ich, jeśli są wyższe w konfiguracji preferencji.

Typ konta Odczyty Zapisy
Region pojedynczego 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 zostanie domyślnie ustawiony na region podstawowy:

Typ konta Odczyty Zapisy
Region pojedynczego 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 świadczenia usługi 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, który jest zgodny z regionem podstawowym lub z nim.

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ć same 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 z regionem podstawowym (jeśli nie ustawiono żadnych 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ść Diagnostyka dla 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ółowy opis 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 używa konta, wykryje usunięcie regionu za pomocą 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 wyższą kolejność preferencji regionalnych w konfiguracji zestawu SDK niż bieżący połączony region, zestaw SDK przełączy się z powrotem, aby trwale korzystać z 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 nie ma konto usługi Azure Cosmos DB, preferowany region zostanie zignorowany. Jeśli później dodasz ten region, 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 ze znaną odpowiedzią zaplecza. Po wykryciu tej odpowiedzi klient wyśle zapytanie do konta, aby dowiedzieć się więcej o nowym regionie zapisu i ponowić próbę wykonania bieżącej operacji i trwale skierować 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 ze 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 odbiera określony błąd z usługi podczas operacji odczytu i ponawia próbę odczytu w regionie podstawowym w celu zapewnienia spójności sesji. W przypadku kont z wieloma regionami zapisu mają zastosowanie te same semantyka sesji, ale ponieważ dostępnych jest wiele regionów zapisu, ponowne próby są wystawiane przy użyciu preferowanej listy regionów lub kolejności regionów 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ą wystąpić jako przekroczenia limitu czasu PROTOKOŁU TCP i błędy Usługi niedostępne (HTTP 503). Jeśli to możliwe, klient spróbuje ponownie żądanie 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