Vysoká dostupnost s 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 Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB využívá více vrstev redundance pro vaše data, jak je znázorněno na následujícím obrázku:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Fyzické dělení

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

  • 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 oddíly dat Cosmos kontejneru a může přijímat zápisy a poskytovat čtení.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Pokud je váš účet Cosmos distribuován mezi n oblastí Azure, bude k dispozici alespoň n x 4 kopií všech vašich dat.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Kromě poskytování přístupu k datům s nízkou latencí a škálování pro zápis/čtení napříč oblastmi přidruženými k vašemu účtu Cosmos mají více oblastí (vyšší než N) lepší dostupnost.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.

SLA pro dostupnostSLAs for availability

Jako globálně distribuovaná databáze Cosmos DB poskytuje komplexní SLA zahrnující propustnost, latenci 99 percentilu, konzistenci a vysokou dostupnost.As a globally distributed database, 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é Cosmos DB pro účty s jednou a více oblastmi.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Pro zajištění vysoké dostupnosti vždy nakonfigurujte účty Cosmos tak, aby měly více oblastí pro zápis.For high availability, always configure your Cosmos accounts to have multiple write regions.

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)
ZápisyWrites 99,9999.99 99,9999.99 99,99999.999
ČteníReads 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 Cosmos DB v případě regionálních výpadkůHigh availability with Cosmos DB in the event of regional outages

Oblastní výpadky nejsou nijak neobvyklé a služba Azure Cosmos DB zajišťuje, aby vaše databáze byla vždy vysoce dostupná.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. Následující podrobnosti zachytí Cosmos DB chování během výpadku v závislosti na konfiguraci účtu Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • V případě 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 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 oblastí s vícenásobným zápisem budou vysoce dostupné pro zápis i čtení.Multi-region accounts configured with multiple-write regions 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 s více oblastmi s jednou oblastí zápisu (výpadek oblasti zápisu):Multi-region accounts with a single-write region (write region outage):

    • Během výpadku oblasti zápisu zůstanou tyto účty vysoce dostupné pro čtení.During a write region outage, these accounts will remain highly available for reads. Aby požadavky na zápis byly úspěšné, musíte zapnout možnost Povolit automatické převzetí služeb při selhání v účtu Azure Cosmos.For the write requests to succeed, you must turn on the enable automatic failover option on your Azure Cosmos account. Povolením této možnosti dojde k převzetí služeb při selhání ovlivněné oblasti v jiné oblasti v pořadí podle priority oblasti.Enabling this option will failover the impacted region 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á byla nerepliková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 unreplicated 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í rozhraní příkazového řádku Azure CLI nebo Azure Portal.You can switch the regions by using 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.
  • Účty s více oblastmi s jednou oblastí zápisu (výpadek při čtení oblasti):Multi-region accounts with a single-write region (read region outage):

    • Při výpadku oblasti čtení zůstanou tyto účty vysoce dostupné pro čtení a zápis.During a read region outage, these accounts will remain highly available for reads and writes.
    • Ovlivněná oblast je automaticky odpojena od oblasti pro zápis a bude označena jako offline.The impacted region is automatically disconnected from the write region 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í k dispozici žádná z oblastí v seznamu upřednostňovaných oblastí, volání se automaticky vrátí do aktuální oblasti pro zápis.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 však ovlivněná oblast zpět online, dříve ovlivněná oblast čtení se automaticky synchronizuje s aktuální oblastí pro zápis a bude opět k dispozici, aby mohla zpracovávat požadavky na čtení.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.
    • Následná čtení jsou přesměrována do obnovené oblasti bez nutnosti jakýchkoli změn kódu 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é Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Úč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 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 Cosmos account to ensure high availability at all times.

  • 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 Cosmos ve více oblastech nakonfigurovaný s výchozí úrovní konzistence Strong.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 the default consistency level of Strong. V případě trvale nezotavitelné oblasti zápisu pro účty Cosmos s více oblastmi nakonfigurovanou s konzistencí s ohraničenou kočárkou je možné časové období ztráty dat omezit na okno zastaralosti (K nebo T); v případě relace, konzistentní a konečné úrovně konzistence je možné okno ztráty dat omezit na maximálně pět sekund.In the event of a permanently irrecoverable write region, for the multi-region Cosmos accounts configured with bounded-staleness consistency, the potential data loss window is restricted to the staleness window (K or T); for session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of five seconds.

Podpora zón dostupnostiAvailability Zone support

Azure Cosmos DB je globálně distribuovaná databázová služba s více hlavními servery, která poskytuje vysokou dostupnost a odolnost během regionálních výpadků.Azure Cosmos DB is a globally distributed, multi-master database service that provides high availability and resiliency during regional outages. 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ňkovou funkcí pro replikaci s více hlavními servery .Zone redundancy is a supplemental capability to the multi-master replication 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 k dispozici v následujících oblastech Azure:This feature is available in following Azure regions:

  • Velká Británie – jihUK South
  • Jihovýchodní AsieSoutheast Asia
  • East USEast US
  • Východní USA 2East US 2
  • Střed USACentral US
  • Západní EvropaWest Europe
  • USA – západ 2West US 2

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:

KLÍČOVÝ UKAZATEL VÝKONUKPI 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%
CenaPrice 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 hlavními 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 multi master and more than one region, data loss is limited to the bounded staleness configured on your account.

Ztrátě dat během místního výpadku je možné vyhnout konfigurací silné konzistence s více oblastmi.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Tato možnost se týká kompromisů, které mají vliv na dostupnost a výkon.This option comes with tradeoffs that impact availability and performance.
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

Aby bylo možné povolit podporu zón dostupnosti pro účet Azure Cosmos ve více oblastech, musí mít tento účet povolený zápis s více hlavními servery.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master 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. V současné době můžete redundanci zóny Povolit jenom pomocí šablon Azure Portal, PowerShellu a Azure Resource Manager.Currently, you can only enable zone redundancy by using Azure portal, PowerShell and Azure Resource Manager templates. 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 } 
) 

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 Cosmos tak, aby zahrnoval nejméně dvě oblasti s více oblastmi zápisu.To ensure high write and read availability, configure your 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 Cosmos s více oblastmi zápisu.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • U účtů Cosmos s více oblastmi, které jsou nakonfigurované s jednou oblastí pro zápis, můžete Povolit automatické převzetí služeb při selhání pomocí Azure CLI nebo 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 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 Cosmos vysoce dostupný, vaše aplikace nemusí být správně navržená tak, aby zůstala vysoce dostupná.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. K otestování komplexní vysoké dostupnosti vaší aplikace pravidelně vyvolají ruční převzetí služeb při selhání pomocí Azure CLI nebo Azure Portaljako součást testování aplikace nebo procházení po havárii (Dr).To test the end-to-end high availability of your application, periodically invoke the manual failover by using Azure CLI or Azure portal, as a part of your application testing or disaster-recovery (DR) drills.

  • 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ší postupNext steps

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