Disponibilità elevata con Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB replica in modo trasparente i dati in tutte le aree di Azure associate all'account Cosmos in uso.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB usa più livelli di ridondanza per i dati, come mostrato nell'immagine seguente:Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Partizionamento fisico

  • I dati nei contenitori Cosmos sono partizionati orizzontalmente.The data within Cosmos containers is horizontally partitioned.

  • All'interno di ogni area, ogni partizione è protetta da un set di repliche con tutte le scritture replicate e sottoposte a commit permanente dalla maggior parte delle repliche.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Le repliche sono distribuite in 10-20 domini di errore.Replicas are distributed across as many as 10-20 fault domains.

  • Ogni partizione in tutte le aree viene replicata.Each partition across all the regions is replicated. Ogni area contiene tutte le partizioni di dati di un contenitore Cosmos e può accettare operazioni di scrittura e rendere disponibili le letture.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Se l'account Cosmos è distribuito in N aree di Azure, saranno presenti almeno n x 4 copie di tutti i dati.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. Oltre a fornire l'accesso ai dati a bassa latenza e a ridimensionare la velocità effettiva di lettura/scrittura tra le aree associate all'account Cosmos, la presenza di più aree (maggiore di N) migliora ulteriormente la disponibilità.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.

Contratti di servizio per la disponibilitàSLAs for availability

Essendo un database distribuito a livello globale, Cosmos DB offre contratti di servizio completi che includono velocità effettiva, latenza al 99° percentile, coerenza e disponibilità elevata.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. Nella tabella seguente vengono descritte le garanzie relative alla disponibilità elevata fornita da Cosmos DB per gli account in aree singole e in più aree.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Per la disponibilità elevata, configurare sempre gli account Cosmos per avere più aree di scrittura.For high availability, always configure your Cosmos accounts to have multiple write regions.

Tipo di operazioneOperation type Area singolaSingle region Più aree (scrittura in area singola)Multi-region (single region writes) Più aree (scrittura in più aree)Multi-region (multi-region writes)
ScrittureWrites 99,9999.99 99,9999.99 99,99999.999
LettureReads 99,9999.99 99,99999.999 99,99999.999

Nota

In pratica, la disponibilità di scrittura effettiva per i modelli di decadimento ristretto, sessione, prefisso coerente e coerenza finale è significativamente superiore ai contratti di contratto pubblicati.In practice, the actual write availability for bounded staleness, session, consistent prefix and eventual consistency models is significantly higher than the published SLAs. La disponibilità effettiva di lettura per tutti i livelli di coerenza è notevolmente superiore a quella prevista dai contratti di servizio pubblicati.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Disponibilità elevata con Cosmos DB in caso di interruzioni a livello di areaHigh availability with Cosmos DB in the event of regional outages

Le interruzioni a livello di area sono abbastanza comuni e Azure Cosmos DB garantisce che il database sia sempre altamente disponibile.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. I dettagli seguenti acquisiscono Cosmos DB comportamento durante un'interruzione, a seconda della configurazione dell'account Cosmos:The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Con Cosmos DB, prima della conferma di un'operazione di scrittura al client, un quorum di repliche esegue il commit permanente dei dati all'interno dell'area accettando le operazioni di scrittura.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.

  • Gli account in più aree configurati con aree a scrittura multipla rimarranno a disponibilità elevata sia per le operazioni di scrittura che per le operazioni di lettura.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. I failover a livello di area vengono visualizzati immediatamente e non richiedono modifiche dall'applicazione.Regional failovers are instantaneous and don't require any changes from the application.

  • È possibile che gli account in area singola perdano disponibilità in caso di interruzione a livello di area.Single-region accounts may lose availability following a regional outage. È sempre consigliabile impostare almeno due aree (preferibilmente, almeno due aree di scrittura) con l'account Cosmos per garantire la disponibilità elevata in qualsiasi momento.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.

  • Account a più aree con un'area a scrittura singola (interruzione dell'area di scrittura):Multi-region accounts with a single-write region (write region outage):

    • Durante un'interruzione dell'area di scrittura, l'account Cosmos promuoverà automaticamente un'area secondaria come nuova area di scrittura primaria quando l' Abilitazione del failover automatico è configurata nell'account Azure Cosmos.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. Se abilitata, il failover viene eseguito in un'altra area nell'ordine di priorità dell'area specificato.When enabled, the failover will occur to another region in the order of region priority you’ve specified.
    • I clienti possono anche scegliere di usare il failover manuale e monitorare il proprio URL dell'endpoint di scrittura Cosmos usando un agente compilato autonomamente.Customers may also choose to use manual failover and monitor their Cosmos write endpoint URL's themselves using an agent built themselves. Per i clienti con esigenze di monitoraggio dell'integrità complesse e sofisticate, è possibile che si verifichino riduzioni di RTO in caso di errore nell'area di scrittura.For customers with complex and sophisticated health monitoring needs, this can provide reduced RTO should a failure occur in the write region.
    • Quando l'area interessata in precedenza è di nuovo online, tutti i dati di scrittura che non sono stati replicati quando l'area ha avuto esito negativo vengono resi disponibili tramite il feed dei conflitti.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. Le applicazioni possono leggere il feed dei conflitti, risolvere i conflitti in base alla logica specifica dell'applicazione e scrivere di nuovo i dati aggiornati nel contenitore Azure Cosmos nel modo appropriato.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.
    • Una volta che viene ripristinata l'area di scrittura interessata in precedenza, diventa automaticamente disponibile come area di lettura.Once the previously impacted write region recovers, it becomes automatically available as a read region. È possibile tornare all'area ripristinata come area di scrittura.You can switch back to the recovered region as the write region. È possibile cambiare le aree usando l'interfaccia della riga di comando di Azure o portale di Azure.You can switch the regions by using Azure CLI or Azure portal. Non sono presenti dati o perdite di disponibilità prima di, durante o dopo l'attivazione dell'area di scrittura e l'applicazione continua a essere a disponibilità elevata.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.
  • Account a più aree con un'area a scrittura singola (interruzione dell'area di lettura):Multi-region accounts with a single-write region (read region outage):

    • durante un'interruzione del servizio in un'area di lettura, questi account mantengono la disponibilità elevata per le letture e le scritture.During a read region outage, these accounts will remain highly available for reads and writes.
    • L'area interessata viene disconnessa automaticamente e verrà contrassegnata come offline.The impacted region is automatically disconnected and will be marked offline. Il Azure Cosmos DB SDK reindirizza le chiamate di lettura all'area successiva disponibile nell'elenco delle aree preferite.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
    • Se nessuna delle aree presenti nell'elenco è disponibile, viene eseguito il fallback automatico delle chiamate all'area di scrittura corrente.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
    • Non sono necessarie modifiche nel codice dell'applicazione per gestire le interruzioni di lettura a livello di area.No changes are required in your application code to handle read region outage. Quando alla fine l'area interessata è in di nuovo online, l'area di lettura interessata in precedenza viene sincronizzata automaticamente con l'area di scrittura corrente ed è disponibile anche in questo caso per servire le richieste di lettura.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.
    • Le letture successive vengono reindirizzate all'area ripristinata senza richiedere alcuna modifica del codice dell'applicazione.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Durante il failover e il join di un'area precedentemente non riuscita, le garanzie di coerenza di lettura continuano a essere rispettate dal Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Anche in un evento raro e sfortunato quando l'area di Azure è irreversibile in modo permanente, non si verifica alcuna perdita di dati se l'account Cosmos per più aree è configurato con coerenza assoluta.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. In caso di un'area di scrittura irreversibile in modo permanente, un account Cosmos a più aree configurato con la coerenza con obsolescenza associata, la finestra di perdita di dati potenziale è limitata alla finestra di obsolescenza (k o t) in cui k = 100000 aggiornamenti e T = 5 minuti.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. Per la sessione, il prefisso coerente e i livelli di coerenza finali, la finestra potenziale di perdita di dati è limitata a un massimo di 15 minuti.For session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of 15 minutes. Per altre informazioni sulle destinazioni RTO e RPO per Azure Cosmos DB, vedere livelli di coerenza e durabilità dei datiFor more information on RTO and RPO targets for Azure Cosmos DB, see Consistency levels and data durability

Supporto per la zona di disponibilitàAvailability Zone support

Oltre alla resilienza tra aree, è ora possibile abilitare la ridondanza della zona quando si seleziona un'area da associare al database di 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.

Con il supporto della zona di disponibilità, Azure Cosmos DB garantisce che le repliche vengano posizionate in più zone all'interno di una determinata area per garantire disponibilità elevata e resilienza durante gli errori di zona.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. Non sono state apportate modifiche alla latenza e ad altri contratti di classe in questa configurazione.There are no changes to latency and other SLAs in this configuration. In caso di errore di una singola zona, la ridondanza della zona garantisce la durabilità dei dati completa con RPO = 0 e la disponibilità con RTO = 0.In the event of a single zone failure, zone redundancy provides full data durability with RPO=0 and availability with RTO=0.

La ridondanza della zona è una funzionalità aggiuntiva per la funzionalità di replica multimaster .Zone redundancy is a supplemental capability to the multi-master replication feature. Non è possibile fare affidamento solo sulla ridondanza della zona per ottenere la resilienza a livello di area.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Ad esempio, in caso di interruzioni a livello di area o di accesso a bassa latenza tra le aree, si consiglia di avere più aree di scrittura oltre alla ridondanza della zona.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.

Quando si configurano le Scritture in più aree per l'account Azure Cosmos, è possibile acconsentire esplicitamente alla ridondanza della zona senza costi aggiuntivi.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. In caso contrario, vedere la nota riportata di seguito relativa ai prezzi per il supporto della ridondanza della zona.Otherwise, please see the note below regarding the pricing for zone redundancy support. È possibile abilitare la ridondanza della zona in un'area esistente dell'account Azure Cosmos rimuovendo l'area e aggiungendola nuovamente con la ridondanza della zona abilitata.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.

Questa funzionalità è disponibile nelle aree di Azure seguenti:This feature is available in following Azure regions:

  • Regno Unito meridionaleUK South

  • Asia sud-orientaleSoutheast Asia

  • Stati Uniti orientaliEast US

  • Stati Uniti orientali 2East US 2

  • Stati Uniti centraliCentral US

  • Europa occidentaleWest Europe

  • Stati Uniti occidentali 2West US 2

Nota

L'abilitazione di zone di disponibilità per un account Azure Cosmos con una sola area comporterà addebiti equivalenti all'aggiunta di un'area aggiuntiva al proprio account.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. Per informazioni dettagliate sui prezzi, vedere la pagina relativa ai prezzi e il costo per più aree in Azure Cosmos DB articoli.For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

Nella tabella seguente sono riepilogate le funzionalità di disponibilità elevata di diverse configurazioni di account:The following table summarizes the high availability capability of various account configurations:

KPIKPI Singola area senza zone di disponibilità (non AZ)Single region without Availability Zones (Non-AZ) Area singola con zone di disponibilità (AZ)Single region with Availability Zones (AZ) Scritture in più aree con zone di disponibilità (AZ, 2 Regions): impostazione consigliataMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
SLA sulla disponibilità di scritturaWrite availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
SLA per la disponibilità di letturaRead availability SLA 99,99%99.99% 99,99%99.99% 99,999%99.999%
PrezzoPrice Tariffa di fatturazione per area singolaSingle region billing rate Frequenza di fatturazione della zona di disponibilità in una singola areaSingle region Availability Zone billing rate Frequenza di fatturazione per più areeMulti-region billing rate
Errori zona-perdita di datiZone failures – data loss Perdita di datiData loss Senza perdita di datiNo data loss Senza perdita di datiNo data loss
Errori zona-disponibilitàZone failures – availability Perdita di disponibilitàAvailability loss Nessuna perdita di disponibilitàNo availability loss Nessuna perdita di disponibilitàNo availability loss
Latenza letturaRead latency Area geograficaCross region Area geograficaCross region BassaLow
Latenza di scritturaWrite latency Area geograficaCross region Area geograficaCross region BassaLow
Interruzione a livello di area-perdita di datiRegional outage – data loss Perdita di datiData loss Perdita di datiData loss Perdita di datiData loss

Quando si usa la coerenza con decadimento ristretto con più master e più di un'area, la perdita di dati è limitata al decadimento delimitato configurato per l'accountWhen using bounded staleness consistency with multi master and more than one region, data loss is limited to the bounded staleness configured on your account

È possibile evitare la perdita di dati durante un'interruzione a livello di area configurando la coerenza assoluta con più aree.You can avoid data loss during a regional outage by configuring strong consistency with multiple regions. Questa opzione comprende compromessi che influiscono sulla disponibilità e sulle prestazioni.This option comes with trade-offs that affect availability and performance. Può essere configurata solo per gli account configurati per le Scritture in una singola area.It can be configured only on accounts that are configured for single-region writes.
Interruzione a livello di area: disponibilitàRegional outage – availability Perdita di disponibilitàAvailability loss Perdita di disponibilitàAvailability loss Nessuna perdita di disponibilitàNo availability loss
Velocità effettivaThroughput Velocità effettiva con provisioning X ur/sX RU/s provisioned throughput Velocità effettiva con provisioning X ur/sX RU/s provisioned throughput velocità effettiva con provisioning di 2X ur/s2X RU/s provisioned throughput

Questa modalità di configurazione richiede due volte la quantità di velocità effettiva rispetto a una singola area con zone di disponibilità perché sono presenti due aree geografiche.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Nota

Per abilitare il supporto per la zona di disponibilità per un account Azure Cosmos a più aree, è necessario che nell'account siano abilitate le Scritture multimaster.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master writes enabled.

È possibile abilitare la ridondanza della zona quando si aggiunge un'area a account Azure Cosmos nuovi o esistenti.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Per abilitare la ridondanza della zona nell'account Azure Cosmos, è necessario impostare il flag di isZoneRedundant su true per una posizione specifica.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. È possibile impostare questo flag nella proprietà Locations.You can set this flag within the locations property. Ad esempio, il frammento di codice PowerShell seguente abilita la ridondanza della zona per l'area Asia sud-orientale: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 }
)

Il comando seguente mostra come abilitare la ridondanza della zona per le aree "Eastus" e "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

È possibile abilitare zone di disponibilità usando portale di Azure quando si crea un account Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Quando si crea un account, assicurarsi di abilitare la ridondanza geografica, le Scritturein più aree e scegliere un'area in cui zone di disponibilità sono supportati:When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Abilitare zone di disponibilità usando portale di Azure

Compilazione di applicazioni a disponibilità elevataBuilding highly available applications

  • Per garantire una disponibilità elevata di scrittura e lettura, configurare il proprio account Cosmos fino a occupare almeno due aree con aree a scrittura multipla.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Questa configurazione fornirà la massima disponibilità, la latenza più bassa e la migliore scalabilità per letture e scritture supportate da contratti di classe.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Per altre informazioni, vedere come configurare l'account Cosmos con più aree di scrittura.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • Per gli account Cosmos in più aree che sono configurati con un'area di scrittura singola, abilitare il failover automatico usando l'interfaccia della riga di comando di Azure o il portale di Azure.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Dopo aver abilitato il failover automatico, quando si verifica un'emergenza a livello di aera Cosmos DB esegue automaticamente il failover dell'account.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Anche se l'account Cosmos è a disponibilità elevata, l'applicazione potrebbe non essere correttamente progettata per garantire disponibilità elevata.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Per testare la disponibilità elevata end-to-end dell'applicazione, come parte del test dell'applicazione o del ripristino di emergenza, disabilitare temporaneamente il failover automatico per l'account, richiamare il failover manuale usando l'interfaccia della riga di comando di Azure o portale di Azure, quindi monitorare il failover dell'applicazione.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. Al termine, è possibile eseguire il failback nell'area primaria e ripristinare il failover automatico per l'account.Once complete, you can fail back over to the primary region and restore automatic-failover for the account.

  • All'interno di un ambiente di database distribuito a livello globale, esiste una relazione diretta tra il livello di coerenza e la durabilità dei dati in presenza di un'interruzione a livello di area.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. Quando si sviluppa il piano di continuità aziendale, è necessario conoscere il tempo massimo accettabile prima che l'applicazione venga ripristinata completamente dopo un evento di arresto improvviso.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Il tempo necessario per il ripristino completo di un'applicazione è noto come obiettivo del tempo di ripristino (RTO).The time required for an application to fully recover is known as recovery time objective (RTO). È anche necessario conoscere la perdita massima di aggiornamenti di dati recenti che l'applicazione è in grado di tollerare durante il ripristino dopo un evento di arresto improvviso.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Il periodo di tempo degli aggiornamenti che è possibile perdere è noto come obiettivo del punto di ripristino (RPO).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Per l'obiettivo del punto di ripristino (RPO) e l'obiettivo del tempo di ripristino (RTO) per Azure Cosmos DB, vedere Livelli di coerenza e durabilità dei datiTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Passaggi successiviNext steps

Successivamente si possono leggere gli articoli seguenti:Next you can read the following articles: