Wysoka dostępność dzięki Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB w sposób przezroczysty replikuje dane do wszystkich regionów świadczenia usługi Azure skojarzonych z Twoim kontem Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB wykorzystuje wiele warstw nadmiarowości danych, jak pokazano na poniższej ilustracji:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Partycjonowanie fizyczne

  • Dane w kontenerach Cosmos są podzielone na partycje w poziomie.The data within Cosmos containers is horizontally partitioned.

  • W każdym regionie każda partycja jest chroniona przez zestaw replik, a wszystkie zapisy są replikowane i trwale zatwierdzone przez większość replik.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Repliki są dystrybuowane w wielu domenach błędów 10-20.Replicas are distributed across as many as 10-20 fault domains.

  • Każda partycja we wszystkich regionach jest replikowana.Each partition across all the regions is replicated. Każdy region zawiera wszystkie partycje danych kontenera Cosmos i może akceptować zapisy i obsłużyć odczyty.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Jeśli Twoje konto Cosmos jest dystrybuowane w regionach platformy Azure , będą dostępne co najmniej N x 4 kopie wszystkich danych.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Oprócz zapewniania dostępu do danych o małym opóźnieniu i skalowanie przepływności zapisu/odczytu w regionach skojarzonych z kontem Cosmos, mając więcej regionów (wyższy N) jeszcze bardziej zwiększa dostępność.In addition to providing low latency data access and scaling write/read throughput across the regions associated with your Cosmos account, having more regions (higher N) further improves availability.

Umowy SLA do dostępnościSLAs for availability

Jako globalnie dystrybuowana baza danych Cosmos DB zapewnia kompleksową umowy SLA, która obejmuje przepływność, opóźnienie w 99 percentylu, spójności i wysokiej dostępności.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. W poniższej tabeli przedstawiono gwarancje dotyczące wysokiej dostępności zapewnianej przez Cosmos DB w przypadku kont z pojedynczym i wieloregionem.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Aby zapewnić wysoką dostępność, należy zawsze skonfigurować konta usługi Cosmos tak, aby zawierały wiele regionów zapisu.For high availability, always configure your Cosmos accounts to have multiple write regions.

Typ operacjiOperation type Pojedynczy regionSingle region Wiele regionów (zapis w jednym regionie)Multi-region (single region writes) Wiele regionów (zapisy w regionie wieloregionowym)Multi-region (multi-region writes)
PowodujeWrites 99,9999.99 99,9999.99 99,99999.999
OdczytywanReads 99,9999.99 99,99999.999 99,99999.999

Uwaga

W ramach tej usługi rzeczywista dostępność zapisu dla nieodświeżonego, sesji, spójnego prefiksu i wzorów spójności ostatecznej jest znacznie wyższa niż opublikowana umowy SLA.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. Rzeczywista dostępność odczytu dla wszystkich poziomów spójności jest znacznie wyższa niż opublikowana umowy SLA.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Wysoka dostępność z Cosmos DB w przypadku awarii regionalnejHigh availability with Cosmos DB in the event of regional outages

Awarie regionalne nie są niczym niezwykłym, a usługa Azure Cosmos DB zapewnia, że baza danych jest zawsze wysoko dostępna.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. Następujące szczegóły przechwytują Cosmos DB zachowanie podczas przestoju, w zależności od konfiguracji konta Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Gdy Cosmos DB, przed potwierdzeniem operacji zapisu do klienta dane są trwale przez kworum replik w regionie, który akceptuje operacje zapisu.With Cosmos DB, before a write operation is acknowledged to the client, the data is durably committed by a quorum of replicas within the region that accepts the write operations.

  • Konta z wieloma regionami skonfigurowane z regionami z wieloma zapisami będą mieć wysoką dostępność dla operacji zapisu i odczytu.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. Regionalne przejścia w tryb failover są chwilowe i nie wymagają żadnych zmian w aplikacji.Regional failovers are instantaneous and don't require any changes from the application.

  • Konta w jednym regionie mogą utracić dostępność po awarii regionalnej.Single-region accounts may lose availability following a regional outage. Zawsze zaleca się skonfigurowanie co najmniej dwóch regionów (najlepiej co najmniej dwóch regionów zapisu) przy użyciu konta Cosmos, aby zapewnić wysoką dostępność przez cały czas.It's always recommended to set up at least two regions (preferably, at least two write regions) with your Cosmos account to ensure high availability at all times.

  • Konta wieloregionowe z regionem jednokrotnego zapisu (przestój w regionie zapisu):Multi-region accounts with a single-write region (write region outage):

    • Podczas awarii regionu zapisu konto Cosmos automatycznie promuje region pomocniczy jako nowy podstawowy region zapisu, gdy na koncie usługi Azure Cosmos zostanie skonfigurowane Automatyczne przełączanie do trybu failover .During a write region outage, the Cosmos account will automatically promote a secondary region to be the new primary write region when enable automatic failover is configured on the Azure Cosmos account. Po włączeniu tryb failover nastąpi w innym regionie w podanej kolejności regionu.When enabled, the failover will occur to another region in the order of region priority you’ve specified.
    • Klienci mogą również korzystać z ręcznego przełączania do trybu failover i monitorować swój Cosmos adres URL punktu końcowego zapisu, korzystając z wbudowanego agenta.Customers may also choose to use manual failover and monitor their Cosmos write endpoint URL's themselves using an agent built themselves. W przypadku klientów, którzy mają złożone i zaawansowane wymagania dotyczące monitorowania kondycji, może to spowodować zmniejszenie RTO w regionie zapisu.For customers with complex and sophisticated health monitoring needs, this can provide reduced RTO should a failure occur in the write region.
    • Gdy wcześniej zmieniony region jest w trybie online, wszelkie dane zapisu, które były Niereplikowane w przypadku niepowodzenia regionu, są udostępniane za pomocą źródła konfliktów.When the previously impacted region is back online, any write data that was unreplicated when the region failed, is made available through the conflicts feed. Aplikacje mogą odczytywać źródła konfliktów, rozwiązywać konflikty na podstawie logiki specyficznej dla aplikacji, a następnie zapisywać zaktualizowane dane z powrotem do kontenera platformy Azure Cosmos zgodnie z potrzebami.Applications can read the conflicts feed, resolve the conflicts based on the application-specific logic, and write the updated data back to the Azure Cosmos container as appropriate.
    • Po odzyskaniu wcześniej zmienionego regionu zapisu zostanie on automatycznie udostępniony jako region odczytu.Once the previously impacted write region recovers, it becomes automatically available as a read region. Można wrócić do odzyskanego regionu jako region zapisu.You can switch back to the recovered region as the write region. Regiony można przełączyć przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal.You can switch the regions by using Azure CLI or Azure portal. Przed, w trakcie lub po przełączeniu regionu zapisu nie ma utraty danych ani dostępności , a aplikacja nadal będzie o wysokiej dostępności.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.
  • Konta wieloregionowe z regionem jednokrotnego zapisu (awaria regionu odczytu):Multi-region accounts with a single-write region (read region outage):

    • Podczas przestoju regionu odczytu te konta pozostaną wysoce dostępne do odczytu i zapisu.During a read region outage, these accounts will remain highly available for reads and writes.
    • Region, którego dotyczy problem, jest automatycznie rozłączany i zostanie oznaczony jako w trybie offline.The impacted region is automatically disconnected and will be marked offline. Zestawy sdk Azure Cosmos DB będą przekierowywać wywołania odczytu do następnego dostępnego regionu na liście preferowanych regionów.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
    • Jeśli żaden z regionów na liście preferowanych regionów nie jest dostępny, wywołania automatycznie powracają do bieżącego regionu zapisu.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
    • W kodzie aplikacji nie są wymagane żadne zmiany w celu obsługi awarii regionu odczytu.No changes are required in your application code to handle read region outage. Ostatecznie, gdy zagrożony region jest z powrotem w trybie online, wcześniej zmieniony region odczytu zostanie automatycznie zsynchronizowany z bieżącym regionem zapisu i będzie on ponownie dostępny do objęcia żądaniami odczytu.Eventually, when the impacted region is back online, the previously impacted read region will automatically sync with the current write region and will be available again to serve read requests.
    • Kolejne odczyty są przekierowywane do odzyskanego regionu bez konieczności wprowadzania jakichkolwiek zmian w kodzie aplikacji.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Podczas pracy w trybie failover i ponownego przyłączania do poprzedniego regionu, gwarancje spójności odczytu są nadal uznawane przez Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Nawet w rzadkich i niezbyt krótkich przypadkach, gdy region platformy Azure jest nieodwracalnie nieodwracalny, nie ma utraty danych, jeśli konto Cosmos dla wieloregionu jest skonfigurowane z silną spójnością.Even in a rare and unfortunate event when the Azure region is permanently irrecoverable, there is no data loss if your multi-region Cosmos account is configured with Strong consistency. W przypadku trwałego odzyskania regionu zapisu, wieloregionowego konta Cosmos skonfigurowanego ze spójnością nieodświeżoną, potencjalne okno utraty danych jest ograniczone do okna nieodświeżonego (K lub T), gdzie K = 100 000 aktualizacji i T = 5 minut.In the event of a permanently irrecoverable write region, a multi-region Cosmos account configured with bounded-staleness consistency, the potential data loss window is restricted to the staleness window (K or T) where K=100,000 updates and T=5 minutes. W przypadku sesji, spójnego i ostatecznego poziomu spójności, potencjalne okno utraty danych jest ograniczone do maksymalnie 15 minut.For session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of 15 minutes. Aby uzyskać więcej informacji na temat elementów docelowych RTO i RPO dla Azure Cosmos DB, zobacz poziomy spójności i trwałość danychFor more information on RTO and RPO targets for Azure Cosmos DB, see Consistency levels and data durability

Obsługa strefy dostępnościAvailability Zone support

Oprócz odporności między regionami można teraz włączyć nadmiarowość stref podczas wybierania regionu do skojarzenia z bazą danych Azure Cosmos.In addition to cross region resiliency, you can now enable zone redundancy when selecting a region to associate with your Azure Cosmos database.

W przypadku obsługi stref dostępności Azure Cosmos DB zapewnia, że repliki są umieszczane w wielu strefach w danym regionie w celu zapewnienia wysokiej dostępności i odporności podczas awarii stref.With Availability Zone support, Azure Cosmos DB will ensure replicas are placed across multiple zones within a given region to provide high availability and resiliency during zonal failures. W tej konfiguracji nie wprowadzono żadnych zmian w czasie oczekiwania i innych umowy SLA.There are no changes to latency and other SLAs in this configuration. W przypadku awarii pojedynczej strefy nadmiarowość stref zapewnia pełną trwałość danych z elementem RPO = 0 i dostępnością z RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

Nadmiarowość stref to dodatkowa funkcja replikacji z wieloma wzorcami .Zone redundancy is a supplemental capability to the multi-master replication feature. W celu uzyskania odporności regionalnej nie można korzystać z samej nadmiarowości strefy.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Na przykład w przypadku regionalnego systemu przestoju lub małego opóźnienia w regionach zaleca się, aby oprócz nadmiarowości strefy była dostępna wiele regionów zapisu.For example, in the event of regional outages or low latency access across the regions, it’s advised to have multiple write regions in addition to zone redundancy.

Podczas konfigurowania wieloregionowych zapisów dla konta usługi Azure Cosmos możesz zrezygnować z nadmiarowości strefy bez dodatkowych kosztów.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. W przeciwnym razie zapoznaj się z poniższymi uwagami dotyczącymi cen obsługi nadmiarowości stref.Otherwise, please see the note below regarding the pricing for zone redundancy support. Nadmiarowość strefy można włączyć w istniejącym regionie konta usługi Azure Cosmos, usuwając region i dodając go ponownie z włączonym nadmiarowością strefy.You can enable zone redundancy on an existing region of your Azure Cosmos account by removing the region and adding it back with the zone redundancy enabled.

Ta funkcja jest dostępna w następujących regionach świadczenia usługi Azure:This feature is available in following Azure regions:

  • Południowe Zjednoczone KrólestwoUK South

  • Azja Południowo-WschodniaSoutheast Asia

  • Wschodnie stany USAEast US

  • Wschodnie stany USA 2East US 2

  • Środkowe stany USACentral US

  • Europa ZachodniaWest Europe

  • Zachodnie stany USA 2West US 2

Uwaga

Włączenie Strefy dostępności dla jednego regionu konta platformy Azure Cosmos spowoduje naliczenie opłat, które są równoznaczne z dodaniem dodatkowego regionu do konta.Enabling Availability Zones for a single region Azure Cosmos account will result in charges that are equivalent to adding an additional region to your account. Aby uzyskać szczegółowe informacje o cenach, zobacz stronę z cennikiem oraz Koszt dla wieloregionu w artykułach Azure Cosmos DB.For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

Poniższa tabela zawiera podsumowanie możliwości wysokiej dostępności różnych konfiguracji konta:The following table summarizes the high availability capability of various account configurations:

Wskaźnik KPIKPI Pojedynczy region bez Strefy dostępności (nie AZ)Single region without Availability Zones (Non-AZ) Pojedynczy region z Strefy dostępności (AZ)Single region with Availability Zones (AZ) Zapisy w wielu regionach z Strefy dostępności (AZ, 2 regiony) — najbardziej zalecanym ustawieniemMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
Umowa SLA dotycząca dostępności zapisuWrite availability SLA 99,99%99.99% 99,99%99.99% 99.999%99.999%
Umowa SLA dotycząca dostępności odczytuRead availability SLA 99,99%99.99% 99,99%99.99% 99.999%99.999%
CenaPrice Stawka rozliczenia w jednym regionieSingle region billing rate Stawka rozliczenia strefy dostępności pojedynczego regionuSingle region Availability Zone billing rate Wieloregionowa stawka rozliczeniowaMulti-region billing rate
Awarie stref — utrata danychZone failures – data loss Utrata danychData loss Brak utraty danychNo data loss Brak utraty danychNo data loss
Awarie stref — dostępnośćZone failures – availability Utrata dostępnościAvailability loss Brak utraty dostępnościNo availability loss Brak utraty dostępnościNo availability loss
Opóźnienie odczytuRead latency Między regionamiCross region Między regionamiCross region MałeLow
Opóźnienie zapisuWrite latency Między regionamiCross region Między regionamiCross region MałeLow
Awaria regionalna — utrata danychRegional outage – data loss Utrata danychData loss Utrata danychData loss Utrata danychData loss

W przypadku używania ograniczonej spójności niezgodności z wieloma wzorcami i więcej niż jednym regionem utrata danych jest ograniczona do granicy nieaktualnej konfiguracji skonfigurowanej na Twoim koncie.When using bounded staleness consistency with multi master and more than one region, data loss is limited to the bounded staleness configured on your account

Można uniknąć utraty danych podczas regionalnej awarii, konfigurując silną spójność z wieloma regionami.You can avoid data loss during a regional outage by configuring strong consistency with multiple regions. Ta opcja ma wpływ na dostępność i wydajność.This option comes with trade-offs that affect availability and performance. Można ją skonfigurować tylko na kontach, które są skonfigurowane do zapisu w jednym regionie.It can be configured only on accounts that are configured for single-region writes.
Awaria regionalna — dostępnośćRegional outage – availability Utrata dostępnościAvailability loss Utrata dostępnościAvailability loss Brak utraty dostępnościNo availability loss
PrzepływnośćThroughput X RU/s zainicjowana przepływnośćX RU/s provisioned throughput X RU/s zainicjowana przepływnośćX RU/s provisioned throughput przepustowość z obsługą jednostki RU/s2X RU/s provisioned throughput

Ten tryb konfiguracji wymaga dwukrotnej ilości przepływności w porównaniu do jednego regionu z Strefy dostępności, ponieważ istnieją dwa regiony.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Uwaga

Aby włączyć obsługę strefy dostępności dla konta usługi Azure Cosmos w wielu regionach, konto musi mieć włączone zapisywanie z wieloma wzorcami.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master writes enabled.

Nadmiarowość strefy można włączyć podczas dodawania regionu do nowych lub istniejących kont usługi Azure Cosmos.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Aby włączyć nadmiarowość strefy na koncie usługi Azure Cosmos, należy ustawić flagę isZoneRedundant na true dla określonej lokalizacji.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Tę flagę można ustawić we właściwości Locations.You can set this flag within the locations property. Na przykład poniższy fragment kodu programu PowerShell umożliwia nadmiarowość strefy dla regionu "Azja Południowo-Wschodnia":For example, the following powershell snippet enables zone redundancy for the "Southeast Asia" region:

$locations = @(
    @{ "locationName"="Southeast Asia"; "failoverPriority"=0; "isZoneRedundant"= "true" },
    @{ "locationName"="East US"; "failoverPriority"=1 }
)

Następujące polecenie pokazuje, jak włączyć nadmiarowość strefy dla regionów "Wschodnie" i "WestUS2":The following command shows how to enable zone redundancy for the "EastUS" and "WestUS2" regions:

az cosmosdb create \
  --name mycosmosdbaccount \
  --resource-group myResourceGroup \
  --kind GlobalDocumentDB \
  --default-consistency-level Session \
  --locations regionName=EastUS failoverPriority=0 isZoneRedundant=True \
  --locations regionName=WestUS2 failoverPriority=1 isZoneRedundant=True

Strefy dostępności można włączyć przy użyciu Azure Portal podczas tworzenia konta usługi Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Podczas tworzenia konta, upewnij się, że włączono geograficznąi Wieloregionową zapis, i wybierz region, w którym strefy dostępności są obsługiwane:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Włącz Strefy dostępności przy użyciu Azure Portal

Tworzenie aplikacji o wysokiej dostępnościBuilding highly available applications

  • Aby zapewnić wysoką dostępność i odczyt, skonfiguruj konto Cosmos tak, aby obejmowało co najmniej dwa regiony z regionami wielokrotnego zapisu.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Ta konfiguracja zapewnia najwyższą dostępność, najniższy czas oczekiwania i najlepszą skalowalność dla operacji odczytu i zapisu, które są obsługiwane przez umowy SLA.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Aby dowiedzieć się więcej, zobacz jak skonfigurować konto Cosmos z wieloma regionami zapisu.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • W przypadku kont Cosmos z wieloregionem, które są skonfigurowane w regionie jednokrotnego zapisu, należy włączyć funkcję automatycznego przełączania do trybu failover przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Po włączeniu automatycznego trybu failover, gdy wystąpi awaria regionalna, Cosmos DB automatycznie przejdzie w tryb failover na koncie.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Nawet jeśli Twoje konto Cosmos ma wysoką dostępność, aplikacja może nie być prawidłowo zaprojektowana tak, aby pozostawała wysoce dostępna.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Aby przetestować kompleksową wysoką dostępność aplikacji, w ramach przechodzenia do testowania aplikacji lub odzyskiwania po awarii (DR), tymczasowo wyłącz automatyczne przełączanie do trybu failover dla konta, wywołaj ręczną pracę awaryjną przy użyciu interfejsu wiersza polecenia platformy Azure lub Azure Portal, a następnie Monitoruj tryb failover aplikacji.To test the end-to-end high availability of your application, as a part of your application testing or disaster-recovery (DR) drills, temporarily disable automatic-failover for the account, invoke the manual failover by using Azure CLI or Azure portal, then monitor your application's failover. Po zakończeniu można przeprowadzić powrót po awarii do regionu podstawowego i przywrócić automatyczne przejście w tryb failover dla konta.Once complete, you can fail back over to the primary region and restore automatic-failover for the account.

  • W całym globalnie rozproszonym środowisku bazy danych istnieje bezpośrednia relacja między poziomem spójności a trwałością danych w przypadku awarii całego regionu.Within a globally distributed database environment, there is a direct relationship between the consistency level and data durability in the presence of a region-wide outage. Podczas opracowywania planu ciągłości biznesowej należy zrozumieć maksymalny akceptowalny czas, po upływie którego aplikacja zostanie w pełni odzyskana po zdarzeniu zakłócania.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Czas wymagany do pełnego odzyskania aplikacji jest znany jako cel czasu odzyskiwania (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). Należy również zrozumieć maksymalny okres ostatnich aktualizacji danych, które aplikacja może tolerować podczas odzyskiwania po wystąpieniu zdarzenia zakłócenia.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Okres aktualizacji, którego utrata może być tolerowana, jest określany jako cel punktu odzyskiwania (RPO, recovery point objective).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Aby zobaczyć cel punktu odzyskiwania i RTO dla Azure Cosmos DB, zobacz poziomy spójności i trwałość danychTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Następne krokiNext steps

Następnie możesz zapoznać się z następującymi artykułami:Next you can read the following articles: