Zajištění vysoké dostupnosti pomocí Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB transparentně replikuje vaše data ve všech oblastech Azure přidružených k vašemu účtu Azure Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Azure Cosmos account. Azure Cosmos DB využívá více vrstev redundance pro vaše data, jak je znázorněno na následujícím obrázku:Azure Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Fyzické dělení

  • Data v kontejnerech Azure Cosmos jsou horizontálně rozdělená na oddíly.The data within Azure Cosmos containers is horizontally partitioned.

  • Sada oddílů je kolekcí více sad replik.A partition-set is a collection of multiple replica-sets. V rámci každé oblasti je každý oddíl chráněný sadou replik, která má všechny replikované zápisy a trvale potvrzené většinou replik.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Repliky jsou distribuované napříč až 10-20 domén selhání.Replicas are distributed across as many as 10-20 fault domains.

  • Všechny oddíly napříč všemi oblastmi se replikují.Each partition across all the regions is replicated. Každá oblast obsahuje všechny datové oddíly kontejneru Azure Cosmos a může přijímat zápisy a poskytovat čtení.Each region contains all the data partitions of an Azure Cosmos container and can accept writes and serve reads.

Pokud je váš účet Azure Cosmos distribuován mezi n oblastí Azure, bude k dispozici alespoň n x 4 kopií všech vašich dat.If your Azure Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Obecně existence účtu Azure Cosmos ve více než 2 oblastech vylepšuje dostupnost vaší aplikace a poskytuje nízkou latenci napříč přidruženými oblastmi.Generally having an Azure Cosmos account in more than 2 regions improves the availability of your application and provides low latency across the associated regions.

SLA pro dostupnostSLAs for availability

Jako globálně distribuovaná databáze Azure Cosmos DB poskytuje komplexní SLA zahrnující propustnost, latenci 99 percentilu, konzistenci a vysokou dostupnost.As a globally distributed database, Azure Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. Následující tabulka uvádí záruky vysoké dostupnosti poskytované Azure Cosmos DB pro účty s jednou a více oblastmi.The table below shows the guarantees for high availability provided by Azure Cosmos DB for single and multi-region accounts. Pro zajištění vysoké dostupnosti vždy nakonfigurujte účty Azure Cosmos tak, aby měly více oblastí pro zápis (označované také jako multi-Master).For high availability, always configure your Azure Cosmos accounts to have multiple write regions(also called multi-master).

Typ operaceOperation type Jedna oblastSingle region Více oblastí (zápisy v jedné oblasti)Multi-region (single region writes) Více oblastí (zápisy ve více oblastech)Multi-region (multi-region writes)
PisovalWrites 99,9999.99 99,9999.99 99,99999.999
OperaceReads 99,9999.99 99,99999.999 99,99999.999

Poznámka

V praxi je skutečná dostupnost zápisu pro ohraničenou neaktuálnost, relaci, konzistentní předponu a konečné modely konzistence podstatně vyšší než u publikovaných SLA.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. Skutečná dostupnost čtení pro všechny úrovně konzistence je podstatně vyšší než u publikovaného SLA.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Vysoká dostupnost s Azure Cosmos DB v případě regionálních výpadkůHigh availability with Azure Cosmos DB in the event of regional outages

Ve výjimečných případech regionálního výpadku Azure Cosmos DB zajišťuje, že je databáze vždy vysoce dostupná.For the rare cases of regional outage, Azure Cosmos DB makes sure your database is always highly available. Následující podrobnosti zachytí Azure Cosmos DB chování během výpadku v závislosti na konfiguraci účtu Azure Cosmos:The following details capture Azure Cosmos DB behavior during an outage, depending on your Azure Cosmos account configuration:

  • V případě Azure Cosmos DB před potvrzením operace zápisu klientovi je data trvale potvrzená kvorem replik v rámci oblasti, která přijímá operace zápisu.With Azure 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.

  • Účty s více oblastmi nakonfigurované s oblastmi s vícenásobným zápisem/s více hlavními servery budou vysoce dostupné pro zápis i čtení.Multi-region accounts configured with multiple-write regions/multi-master will be highly available for both writes and reads. Místní převzetí služeb při selhání je okamžité a nevyžaduje žádné změny aplikace.Regional failovers are instantaneous and don't require any changes from the application.

  • Účty v jedné oblasti mohou ztratit dostupnost po oblastním výpadku.Single-region accounts may lose availability following a regional outage. Vždycky se doporučuje nastavit aspoň dvě oblasti (nejlépe dvě oblasti zápisu) s vaším účtem Azure Cosmos, abyste zajistili vysokou dostupnost ve všech časech.It's always recommended to set up at least two regions (preferably, at least two write regions) with your Azure Cosmos account to ensure high availability at all times.

Účty s více oblastmi s oblastí s jedním zápisem (při výpadku oblasti zápisu)Multi-region accounts with a single-write region (write region outage)

  • Při výpadku oblasti zápisu bude účet Azure Cosmos automaticky propagovat sekundární oblast jako novou primární oblast pro zápis, když je v účtu Azure Cosmos nakonfigurovaná možnost povolit automatické převzetí služeb při selhání .During a write region outage, the Azure 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. Pokud je tato možnost povolená, dojde k převzetí služeb při selhání do jiné oblasti v pořadí podle priority oblasti, kterou jste zadali.When enabled, the failover will occur to another region in the order of region priority you've specified.
  • Když je dříve ovlivněná oblast zpět online, všechna data zápisu, která nebyla replikována v případě selhání oblasti, jsou zpřístupněna prostřednictvím kanálu konfliktů.When the previously impacted region is back online, any write data that was not replicated when the region failed, is made available through the conflicts feed. Aplikace mohou číst kanál konfliktů, řešit konflikty na základě logiky specifické pro aplikaci a podle potřeby zapisovat aktualizovaná data zpátky do kontejneru Azure Cosmos.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.
  • Jakmile se výše ovlivněné oblasti zápisu napřed mění, bude automaticky dostupná jako oblast pro čtení.Once the previously impacted write region recovers, it becomes automatically available as a read region. Můžete přejít zpátky do obnovené oblasti jako oblast zápisu.You can switch back to the recovered region as the write region. Oblasti můžete přepínat pomocí PowerShellu, rozhraní příkazového řádku Azure nebo Azure Portal.You can switch the regions by using PowerShell, Azure CLI or Azure portal. Neexistují žádná data ani ztráta dostupnosti před, během nebo po přepnutí oblasti zápisu a aplikace bude dál vysoce dostupná.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.

Důležité

Důrazně doporučujeme, abyste nakonfigurovali účty Azure Cosmos používané pro produkční úlohy, aby se povolilo automatické převzetí služeb při selhání.It is strongly recommended that you configure the Azure Cosmos accounts used for production workloads to enable automatic failover. Ruční převzetí služeb při selhání vyžaduje připojení mezi sekundární a primární oblastí pro zápis k dokončení kontroly konzistence, aby při převzetí služeb při selhání nedošlo ke ztrátě dat.Manual failover requires connectivity between secondary and primary write region to complete a consistency check to ensure there is no data loss during the failover. Pokud není primární oblast k dispozici, tato kontrola konzistence nemůže být dokončena a ruční převzetí služeb při selhání nebude úspěšné, což vede ke ztrátě dostupnosti zápisu.If the primary region is unavailable, this consistency check cannot complete and the manual failover will not succeed, resulting in loss of write availability.

Účty s více oblastmi s jednou oblastí zápisu (nevýpadek oblasti čtení)Multi-region accounts with a single-write region (read region outage)

  • Při výpadku oblasti čtení budou účty Azure Cosmos s využitím jakékoli úrovně konzistence nebo silné konzistence se třemi nebo více oblastmi pro čtení pořád vysoce dostupné pro čtení a zápisy.During a read region outage, Azure Cosmos accounts using any consistency level or strong consistency with three or more read regions will remain highly available for reads and writes.
  • Účty Azure Cosmos s využitím silné konzistence se dvěma nebo méně oblastmi pro čtení (které zahrnují oblast pro čtení & zápisu) ztratí dostupnost zápisu během výpadku oblasti čtení, ale budou mít u zbývajících oblastí k dispozici oprávnění ke čtení.Azure Cosmos accounts using strong consistency with two or fewer read regions (which includes the read & write region) will lose write availability during a read region outage but will maintain read availability for remaining regions.
  • Ovlivněná oblast je automaticky odpojena a bude označena jako offline.The impacted region is automatically disconnected and will be marked offline. Sady Azure Cosmos DB SDK přesměrují volání čtení do další dostupné oblasti v seznamu upřednostňovaných oblastí.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
  • Pokud není žádná oblast ze seznamu upřednostňovaných oblastí k dispozici, volání se automaticky vrátí na aktuální oblast zápisu.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
  • V kódu aplikace se nevyžadují žádné změny pro zpracování výpadku oblasti čtení.No changes are required in your application code to handle read region outage. Když je oblast s ovlivněným čtením zpět online, bude automaticky synchronizována s aktuální oblastí pro zápis a bude opět k dispozici pro poskytování požadavků na čtení.When the impacted read region is back online it will automatically sync with the current write region and will be available again to serve read requests.
  • Následná čtení se přesměrují na zotavenou oblast bez toho, aby se musel nějak změnit kód aplikace.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. V průběhu převzetí služeb při selhání a opětovném připojení k dříve neúspěšnému výskytu se Přečtěte záruky konzistence, které Azure Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Azure Cosmos DB.
  • I ve výjimečné a unfortunate události, když je oblast Azure trvale nezotavitelné, nedochází k žádné ztrátě dat, pokud je váš účet Azure Cosmos ve více oblastech nakonfigurovaný se silnými konzistencí.Even in a rare and unfortunate event when the Azure region is permanently irrecoverable, there is no data loss if your multi-region Azure Cosmos account is configured with Strong consistency. V případě trvale nezotavitelné oblasti zápisu se jedná o účet Azure Cosmos ve více oblastech nakonfigurovaný s kostarou konzistencí, což je potenciální okno ztráty dat omezené na okno zastaralosti (k nebo T), kde k = 100 000 aktualizací a t = 5 minut.In the event of a permanently irrecoverable write region, a multi-region Azure 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. V případě relace, konzistentní a konečné úrovně konzistence je možné okno ztráty dat omezit na maximálně 15 minut.For session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of 15 minutes. Další informace o cílech RTO a RPO pro Azure Cosmos DB najdete v tématu úrovně konzistence a odolnost dat .For more information on RTO and RPO targets for Azure Cosmos DB, see Consistency levels and data durability

Podpora zón dostupnostiAvailability Zone support

Kromě odolnosti mezi oblastmi teď můžete při výběru oblasti, která má být přidružena k databázi Azure Cosmos, povolit redundanci zóny .In addition to cross region resiliency, you can now enable zone redundancy when selecting a region to associate with your Azure Cosmos database.

Díky podpoře zón dostupnosti Azure Cosmos DB zajistí, aby se repliky v rámci dané oblasti umístily do několika zón, aby poskytovaly vysokou dostupnost a odolnost během selhání oblastí.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. V této konfiguraci nejsou žádné změny latence a jiné SLA.There are no changes to latency and other SLAs in this configuration. V případě selhání jedné zóny poskytuje redundance zóny plnou odolnost dat s cílem RPO = 0 a dostupnost s RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

Redundance zóny je doplňková schopnost replikace v rámci funkce zápisu ve více oblastech .Zone redundancy is a supplemental capability to the replication in multi-region writes feature. Na redundanci zóny se nedá spoléhat, aby bylo možné dosáhnout místní odolnosti.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Například v případě místního výpadku nebo přístupu s nízkou latencí v rámci oblastí doporučujeme mít kromě redundance zóny více oblastí pro zápis.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.

Když konfigurujete zápisy ve více oblastech pro účet Azure Cosmos, můžete se odhlásit k redundanci zóny bez dalších poplatků.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. V opačném případě se podívejte na následující poznámku týkající se cen pro podporu redundance zóny.Otherwise, please see the note below regarding the pricing for zone redundancy support. Redundanci zóny můžete povolit ve stávající oblasti svého účtu Azure Cosmos tak, že odstraníte oblast a přidáte ji zpátky s povolenou redundancí zóny.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.

Tato funkce je dostupná v těchto oblastech: Velká Británie – jih, jihovýchodní Asie, východní USA, východní USA 2, střed USA, západní Evropa, západní USA 2, Japonsko – východ, Severní Evropa, Francie – střední oblasti.This feature is available in: UK South, Southeast Asia, East US, East US 2, Central US, West Europe, West US 2, Japan East, North Europe, France Central regions.

Poznámka

Povolení Zóny dostupnosti pro jednu oblast účtu Azure Cosmos bude mít za následek poplatky, které se rovnají přidání další oblasti do svého účtu.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. Podrobnosti o cenách najdete na stránce s cenami a s náklady na více oblastí v Azure Cosmos DB článcích.For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

Následující tabulka shrnuje schopnost vysoké dostupnosti u různých konfigurací účtu:The following table summarizes the high availability capability of various account configurations:

KPIKPI Jedna oblast bez Zóny dostupnosti (ne AZ)Single region without Availability Zones (Non-AZ) Jedna oblast s Zóny dostupnostiem (AZ)Single region with Availability Zones (AZ) Zápisy ve více oblastech pomocí Zóny dostupnosti (AZ, 2 Regions) – Doporučené nastaveníMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
Smlouva SLA o dostupnosti pro zápisWrite availability SLA 99,99 %99.99% 99,99 %99.99% 99,999 %99.999%
SLA dostupnosti pro čteníRead availability SLA 99,99 %99.99% 99,99 %99.99% 99,999 %99.999%
PricePrice Fakturační sazba jedné oblastiSingle region billing rate Fakturační sazba zóny dostupnosti v jedné oblastiSingle region Availability Zone billing rate Fakturační sazba pro více oblastíMulti-region billing rate
Selhání zón – ztráta datZone failures – data loss Ztráta datData loss Žádná ztráta datNo data loss Žádná ztráta datNo data loss
Selhání zón – dostupnostZone failures – availability Ztráta dostupnostiAvailability loss Žádná ztráta dostupnostiNo availability loss Žádná ztráta dostupnostiNo availability loss
Latence čteníRead latency Mezi oblastmiCross region Mezi oblastmiCross region NízkáLow
Latence zápisuWrite latency Mezi oblastmiCross region Mezi oblastmiCross region NízkáLow
Oblastní výpadek – ztráta datRegional outage – data loss Ztráta datData loss Ztráta datData loss Ztráta datData loss

Při použití ohraničené konzistence neaktuálnosti s více oblastmi zápisu a více než jednou oblastí je ztráta dat omezená na ohraničenou neomezenou funkčnost nakonfigurovanou na vašem účtu.When using bounded staleness consistency with multiple write regions and more than one region, data loss is limited to the bounded staleness configured on your account

Nemůžete zabránit ztrátě dat při regionálním výpadku tím, že nakonfigurujete silnou konzistenci s více oblastmi.You can avoid data loss during a regional outage by configuring strong consistency with multiple regions. Tato možnost je součástí kompromisů, které mají vliv na dostupnost a výkon.This option comes with trade-offs that affect availability and performance. Dá se nakonfigurovat jenom pro účty, které jsou nakonfigurované pro zápisy v jedné oblasti.It can be configured only on accounts that are configured for single-region writes.
Oblastní výpadek – dostupnostRegional outage – availability Ztráta dostupnostiAvailability loss Ztráta dostupnostiAvailability loss Žádná ztráta dostupnostiNo availability loss
PropustnostThroughput Zajištěná propustnost X RU/sX RU/s provisioned throughput Zajištěná propustnost X RU/sX RU/s provisioned throughput dostupná propustnost dvojnásobných RU/s2X RU/s provisioned throughput

Tento režim konfigurace vyžaduje dvojnásobek objemu propustnosti v porovnání s jednou oblastí s Zóny dostupnosti, protože existují dvě oblasti.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Poznámka

Pokud chcete povolit podporu zón dostupnosti pro účet Azure Cosmos ve více oblastech, musí mít tento účet povolený zápis zápisu ve více oblastech.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-region writes writes enabled.

Pokud přidáte oblast do nových nebo existujících účtů Azure Cosmos, můžete povolit redundanci zóny.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Pokud chcete povolit redundanci zóny na svém účtu Azure Cosmos, měli byste nastavit isZoneRedundant příznak na true pro konkrétní umístění.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Tento příznak můžete nastavit ve vlastnosti umístění.You can set this flag within the locations property. Například následující fragment kódu prostředí PowerShell umožňuje redundanci zóny pro oblast jihovýchodní Asie: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; "isZoneRedundant"= "true" }
)

Následující příkaz ukazuje, jak povolit redundanci zóny pro oblasti "EastUS" a "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

Zóny dostupnosti můžete povolit pomocí Azure Portal při vytváření účtu Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Když vytváříte účet, ujistěte se, že jste povolili zápis geografické redundance, více oblastía zvolíte oblast, kde se zóny dostupnosti podporují:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Povolit Zóny dostupnosti pomocí Azure Portal

Vytváření vysoce dostupných aplikacíBuilding highly available applications

  • Abyste zajistili vysokou dostupnost zápisu a čtení, nakonfigurujte účet Azure Cosmos tak, aby zahrnoval alespoň dvě oblasti s více oblastmi zápisu.To ensure high write and read availability, configure your Azure Cosmos account to span at least two regions with multiple-write regions. Tato konfigurace poskytuje nejvyšší dostupnost, nejnižší latenci a nejlepší škálovatelnost pro čtení i zápis zálohovaných službou SLA.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Další informace najdete v tématu Konfigurace účtu Azure Cosmos s více oblastmi zápisu.To learn more, see how to configure your Azure Cosmos account with multiple write-regions.

  • Pro účty Azure Cosmos s více oblastmi, které jsou nakonfigurované s jednou oblastí pro zápis, umožňují automatické převzetí služeb při selhání pomocí Azure CLI nebo Azure Portal.For multi-region Azure Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Po povolení automatického převzetí služeb při selhání dojde k automatickému převzetí služeb při selhání Cosmos DB, když dojde k místní havárii.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • I když je váš účet Azure Cosmos vysoce dostupný, vaše aplikace nemusí být správně navržená tak, aby zůstala vysoce dostupná.Even if your Azure Cosmos account is highly available, your application may not be correctly designed to remain highly available. K otestování komplexní vysoké dostupnosti vaší aplikace, jako součást testování aplikací nebo zotavení po havárii (DR), můžete dočasně zakázat automatické převzetí služeb při selhání pro účet, vyvolat ruční převzetí služeb při selhání pomocí PowerShellu, rozhraní příkazového řádku Azure nebo Azure Portala potom monitorovat převzetí služeb při selhání vaší aplikace.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 PowerShell, Azure CLI or Azure portal, then monitor your application's failover. Po dokončení můžete navrátit služby po obnovení do primární oblasti a obnovit automatické převzetí služeb při selhání pro tento účet.Once complete, you can fail back over to the primary region and restore automatic-failover for the account.

  • V rámci globálně distribuovaného databázového prostředí existuje přímý vztah mezi úrovní konzistence a odolností dat při výpadku v rámci oblasti.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. Při vývoji plánu provozní kontinuity musíte pochopit maximální přijatelnou dobu, než se aplikace kompletně obnoví po přerušení události.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Čas potřebný k úplnému obnovení aplikace je známý jako cíl doby obnovení (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). Také je potřeba porozumět maximálnímu intervalu nedávných aktualizací dat, které může aplikace tolerovat při obnovování po přerušení události.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Časový interval aktualizací, které si můžete dovolit ztratit, se označuje jako cíl bodu obnovení (RPO).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Pokud chcete zobrazit RPO a RTO pro Azure Cosmos DB, přečtěte si část úrovně konzistence a odolnost dat .To see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Další krokyNext steps

Dále si můžete přečíst následující články:Next you can read the following articles: