Haute disponibilité avec Azure Cosmos DBHigh availability with Azure Cosmos DB

Azure Cosmos DB réplique en toute transparence vos données vers toutes les régions Azure associées votre compte Cosmos.Azure Cosmos DB transparently replicates your data across all the Azure regions associated with your Cosmos account. Cosmos DB emploie plusieurs couches de redondance pour vos données, comme le montre l’image suivante :Cosmos DB employs multiple layers of redundancy for your data as shown in the following image:

Partitionnement physique

  • Les données dans les conteneurs Cosmos sont partitionnées horizontalement.The data within Cosmos containers is horizontally partitioned.

  • Dans chaque région, chaque partition est protégée par un jeu de réplicas avec toutes les écritures répliquées et durablement validées par une majorité de réplicas.Within each region, every partition is protected by a replica-set with all writes replicated and durably committed by a majority of replicas. Les réplicas sont répartis entre 10 et 20 domaines d’erreur.Replicas are distributed across as many as 10-20 fault domains.

  • Chaque partition est répliquée dans toutes les régions.Each partition across all the regions is replicated. Chaque région contient toutes les partitions de données d’un conteneur Cosmos et peut accepter des écritures et traiter les lectures.Each region contains all the data partitions of a Cosmos container and can accept writes and serve reads.

Si votre compte Cosmos est distribué entre N régions Azure, il y aura au moins N x 4 copies de toutes vos données.If your Cosmos account is distributed across N Azure regions, there will be at least N x 4 copies of all your data. En plus de fournir un accès à faible latence aux données et la mise à l’échelle du débit d’écriture/de lecture dans les régions associées à votre compte Cosmos, le fait d’avoir plus de régions (N supérieur) améliore 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.

Contrats SLA pour la disponibilitéSLAs for availability

En tant que base de données mondialement distribuée, Cosmos DB fournit des contrats SLA complets qui englobent le débit, la latence au 99e centile, la cohérence et une haute disponibilité.As a globally distributed database, Cosmos DB provides comprehensive SLAs that encompass throughput, latency at the 99th percentile, consistency, and high availability. Le tableau suivant comporte les garanties de haute disponibilité fournie par Cosmos DB pour les comptes à région unique et multirégion.The table below shows the guarantees for high availability provided by Cosmos DB for single and multi-region accounts. Pour bénéficier de la haute disponibilité, configurez systématiquement vos comptes Cosmos afin d’avoir plusieurs régions d’écriture.For high availability, always configure your Cosmos accounts to have multiple write regions.

Type d'opérationOperation type Région uniqueSingle region Multirégion (écritures dans une seule région)Multi-region (single region writes) Multirégion (écritures dans une plusieurs régions)Multi-region (multi-region writes)
ÉcrituresWrites 99,9999.99 99,9999.99 99,99999.999
LecturesReads 99,9999.99 99,99999.999 99,99999.999

Notes

Dans la pratique, la disponibilité d’écriture réelle pour l’obsolescence limitée, la session, les modèles de cohérence éventuelle et à préfixe cohérent, est beaucoup plus importante que les contrats SLA publiés.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é réelle de lecture pour tous les niveaux de cohérence est beaucoup plus importante que les contrats SLA publiés.The actual read availability for all consistency levels is significantly higher than the published SLAs.

Haute disponibilité avec Cosmos DB en cas de pannes régionalesHigh availability with Cosmos DB in the event of regional outages

Les pannes régionales ne sont pas rares et Azure Cosmos DB permet de s’assurer que votre base de données est toujours hautement disponible.Regional outages aren't uncommon, and Azure Cosmos DB makes sure your database is always highly available. Les détails suivants permettent de capturer le comportement de Cosmos DB pendant une panne, en fonction de la configuration de votre compte Cosmos :The following details capture Cosmos DB behavior during an outage, depending on your Cosmos account configuration:

  • Avant la reconnaissance d’une opération d’écriture auprès du client alors que Cosmos DB est utilisé, les données sont validées durablement par un quorum de réplicas se trouvant la région qui accepte les opérations d’écriture.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.

  • Les comptes multirégion configurés avec plusieurs régions d’écriture sont hautement disponibles pour les écritures et les lectures.Multi-region accounts configured with multiple-write regions will be highly available for both writes and reads. Les basculements régionaux sont instantanés et ne nécessitent aucune modification à partir de l’application.Regional failovers are instantaneous and don't require any changes from the application.

  • Les comptes dans une seule région peuvent perdre leur disponibilité en raison d’une panne régionale.Single-region accounts may lose availability following a regional outage. Il est toujours recommandé de configurer au moins deux régions (de préférence, au moins deux régions d’écriture) avec votre compte Cosmos pour garantir une haute disponibilité en permanence.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.

  • Comptes multirégion avec une seule région d’écriture (panne de région d'écriture) :Multi-region accounts with a single-write region (write region outage):

    • En cas de panne de région d’écriture, le compte Cosmos promeut automatiquement une région secondaire en tant que nouvelle région d’écriture principale lorsque l'option Activer le basculement automatique est configurée dans le compte 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. Lorsque cette option est activée, le basculement intervient vers une autre région dans l’ordre de priorité des régions que vous avez spécifié.When enabled, the failover will occur to another region in the order of region priority you’ve specified.
    • Les clients peuvent également choisir d’utiliser le basculement manuel et de surveiller leurs URL de point de terminaison d’écriture Cosmos à l’aide d’un agent qu'ils ont eux-mêmes généré.Customers may also choose to use manual failover and monitor their Cosmos write endpoint URL's themselves using an agent built themselves. Pour les clients présentant des besoins complexes et sophistiqués en matière de surveillance de l’intégrité, cela permet de disposer d'un RTO réduit en cas de panne dans la région d’écriture.For customers with complex and sophisticated health monitoring needs, this can provide reduced RTO should a failure occur in the write region.
    • Lorsque la région précédemment affectée est de nouveau en ligne, toutes les données d'écriture qui n'étaient pas dupliquées lors de l’échec de la région sont mises à disposition via le flux de conflits.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. Les applications peuvent lire le flux de conflits, résoudre les conflits en fonction de la logique propre à l’application, et réécrire les données mises à jour dans le conteneur Azure Cosmos comme il convient.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.
    • Une fois que la région d’écriture précédemment impactée a récupéré, elle devient automatiquement disponible en tant que région de lecture.Once the previously impacted write region recovers, it becomes automatically available as a read region. Vous pouvez basculer vers la région récupérée en tant que région d’écriture.You can switch back to the recovered region as the write region. Vous pouvez basculer d’une région à l’autre en utilisant l’interface de ligne de commande Azure ou le Portail Microsoft Azure.You can switch the regions by using Azure CLI or Azure portal. Il n'y a aucune perte de données ou de disponibilité avant, pendant ou après le changement de région d'écriture, et votre application continue d’être hautement disponible.There is no data or availability loss before, during or after you switch the write region and your application continues to be highly available.
  • Comptes multirégion avec une seule région d’écriture (panne de région de lecture) :Multi-region accounts with a single-write region (read region outage):

    • pendant une panne de région de lecture, ces comptes restent hautement disponibles pour les lectures et les écritures.During a read region outage, these accounts will remain highly available for reads and writes.
    • La région impactée est automatiquement déconnectée et marquée comme étant hors connexion.The impacted region is automatically disconnected and will be marked offline. Les Kits de développement logiciel (SDK) Azure Cosmos DB redirigent les appels de lecture vers la prochaine région disponible dans la liste des régions préférées.The Azure Cosmos DB SDKs will redirect read calls to the next available region in the preferred region list.
    • Si aucune des régions dans la liste des régions préférées n'est disponible, les appels sont automatiquement acheminés vers la zone d’écriture en cours.If none of the regions in the preferred region list is available, calls automatically fall back to the current write region.
    • Aucune modification n’est nécessaire dans le code de votre application pour gérer la panne de la région de lecture.No changes are required in your application code to handle read region outage. Au final, lorsque la région impactée est de nouveau en ligne, la région de lecture précédemment concernée se synchronise automatiquement avec la région d’écriture active et est à nouveau disponible pour le traitement des requêtes de lecture.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.
    • Les lectures suivantes sont redirigées vers la région récupérée sans modification nécessaire de votre code d’application.Subsequent reads are redirected to the recovered region without requiring any changes to your application code. Pendant le basculement et la réintégration d’une région ayant précédemment échoué, les garanties de cohérence de lecture continuent à être respectées par Cosmos DB.During both failover and rejoining of a previously failed region, read consistency guarantees continue to be honored by Cosmos DB.
  • Même dans un cas rare et malheureux où la région Azure est définitivement irrécupérable, il n’y a aucune perte de données si votre compte Cosmos multirégion est configuré avec une cohérence forte.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. Si une région d’écriture est définitivement irrécupérable et en présence d'un compte Cosmos multirégion configuré avec une cohérence de l’obsolescence limitée, la fenêtre de perte de données potentielle est limitée à la fenêtre d’obsolescence (K ou T) où K = 100 000 mises à jour et T = 5 minutes.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. Pour les niveaux de cohérence session, garantie de préfixe et éventuelle, la fenêtre de perte de données potentielle est limitée à un maximum de 15 minutes.For session, consistent-prefix and eventual consistency levels, the potential data loss window is restricted to a maximum of 15 minutes. Pour plus d'informations sur les cibles RPO et RTO pour Azure Cosmos DB, consultez Niveaux de cohérence et durabilité des donnéesFor more information on RTO and RPO targets for Azure Cosmos DB, see Consistency levels and data durability

Prise en charge des zones de disponibilitéAvailability Zone support

En plus de la résilience inter-région, vous pouvez désormais activer la redondance de zone lorsque vous sélectionnez une région à associer à votre base de données 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.

La prise en charge des zones de disponibilité permet à Azure Cosmos DB de s'assurer que les réplicas sont placés dans plusieurs zones d'une région donnée afin d'offrir haute disponibilité et résilience en cas de défaillances de zones.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. Cette configuration n'implique aucune modification en termes de latence et autres contrats de niveau de service.There are no changes to latency and other SLAs in this configuration. En cas de défaillance d'une seule zone, la redondance de zone assure la durabilité des données avec RPO = 0 et disponibilité avec 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 redondance de zone complète la fonctionnalité de réplication multimaître.Zone redundancy is a supplemental capability to the multi-master replication feature. Seule, la redondance de zone ne suffit pas à offrir une résilience régionale.Zone redundancy alone cannot be relied upon to achieve regional resiliency. Par exemple, en cas de pannes régionales ou d'accès à faible latence dans les régions, il est recommandé de disposer de plusieurs régions d’écriture en plus de la redondance de zone.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.

Lorsque vous configurez des écritures multirégions pour votre compte Azure Cosmos, vous pouvez opter pour la redondance de zone, sans frais supplémentaires.When configuring multi-region writes for your Azure Cosmos account, you can opt into zone redundancy at no extra cost. Sinon, consultez la note ci-dessous relative à la tarification de la redondance de zone.Otherwise, please see the note below regarding the pricing for zone redundancy support. Vous pouvez activer la redondance de zone dans une région existante de votre compte Azure Cosmos en supprimant la région, puis en l'ajoutant à nouveau avec la redondance de zone activée.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.

Cette fonctionnalité est disponible dans les régions Azure suivantes :This feature is available in following Azure regions:

  • Sud du Royaume-UniUK South

  • Asie Sud-EstSoutheast Asia

  • USA EstEast US

  • USA Est 2East US 2

  • USA CentreCentral US

  • Europe OuestWest Europe

  • USA Ouest 2West US 2

Notes

L’activation des zones de disponibilité pour un compte à Azure Cosmos avec une seule région entraîne des frais équivalents à l’ajout d’une région supplémentaire à votre compte.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. Pour plus d’informations sur la tarification, consultez la page de tarification et les articles relatifs au coût multirégion dans Azure Cosmos DB.For details on pricing, see the pricing page and the multi-region cost in Azure Cosmos DB articles.

Le tableau suivant récapitule la fonctionnalité de haute disponibilité des différentes configurations de compte :The following table summarizes the high availability capability of various account configurations:

KPIKPI Région unique sans zones de disponibilité (Non-AZ)Single region without Availability Zones (Non-AZ) Région unique avec zones de disponibilité (AZ)Single region with Availability Zones (AZ) Écritures multirégions avec zones de disponibilité (AZ, 2 régions) - Paramètre recommandéMulti-region writes with Availability Zones (AZ, 2 regions) – Most recommended setting
Contrat SLA de disponibilité en écritureWrite availability SLA 99,99 %99.99% 99,99 %99.99% 99, 999 %99.999%
Contrat SLA de disponibilité en lectureRead availability SLA 99,99 %99.99% 99,99 %99.99% 99, 999 %99.999%
PricePrice Taux de facturation d’une région uniqueSingle region billing rate Taux de facturation de zone de disponibilité d'une région uniqueSingle region Availability Zone billing rate Taux de facturation de plusieurs régionsMulti-region billing rate
Défaillances de zone - Perte de donnéesZone failures – data loss Perte de donnéesData loss Aucune perte de donnéesNo data loss Aucune perte de donnéesNo data loss
Défaillances de zone – DisponibilitéZone failures – availability Perte de disponibilitéAvailability loss Aucune perte de disponibilitéNo availability loss Aucune perte de disponibilitéNo availability loss
Latence de lectureRead latency Inter-régionCross region Inter-régionCross region FaibleLow
Latence d’écritureWrite latency Inter-régionCross region Inter-régionCross region FaibleLow
Panne régionale - Perte de donnéesRegional outage – data loss Perte de donnéesData loss Perte de donnéesData loss Perte de donnéesData loss

Lorsque vous utilisez la cohérence en fonction de l'obsolescence limitée avec multimaître et plusieurs régions, la perte de données est limitée à l’obsolescence configurée sur votre compte.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.

Pour éviter une perte de données en cas de panne régionale, configurez une cohérence forte avec plusieurs régions.Data loss during regional outage can be avoided by configuring strong consistency with multiple regions. Cette option n'est pas sans incidence en termes de disponibilité et de niveau de performance.This option comes with tradeoffs that impact availability and performance.
Panne régionale - DisponibilitéRegional outage – availability Perte de disponibilitéAvailability loss Perte de disponibilitéAvailability loss Aucune perte de disponibilitéNo availability loss
DébitThroughput X RU/s de débit approvisionnéX RU/s provisioned throughput X RU/s de débit approvisionnéX RU/s provisioned throughput 2X RU/s de débit approvisionné2X RU/s provisioned throughput

Ce mode de configuration requiert deux fois plus de débit par rapport à une région unique avec zones de disponibilité car il existe deux régions.This configuration mode requires twice the amount of throughput when compared to a single region with Availability Zones because there are two regions.

Notes

Pour activer la prise en charge des zones de disponibilité pour un compte Azure Cosmos multirégion, les écritures multimaîtres doivent être activées sur le compte.To enable Availability Zone support for a multi region Azure Cosmos account, the account must have multi-master writes enabled.

Vous pouvez activer la redondance de zone lorsque vous ajoutez une région à des comptes Azure Cosmos nouveaux ou existants.You can enable zone redundancy when adding a region to new or existing Azure Cosmos accounts. Pour activer la redondance de zone sur votre compte Azure Cosmos, vous devez définir l'indicateur isZoneRedundant sur true pour un emplacement spécifique.To enable zone redundancy on your Azure Cosmos account, you should set the isZoneRedundant flag to true for a specific location. Vous pouvez définir cet indicateur dans la propriété des emplacements.You can set this flag within the locations property. Par exemple, l’extrait de code PowerShell suivant permet la redondance de zone pour la région « Asie Sud-Est » :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 }
)

La commande suivante montre comment activer la redondance de zone pour les régions « USA Est » et « USA Ouest 2 » :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

Vous pouvez activer des zones de disponibilité à l'aide du portail Azure lorsque vous créez un compte Azure Cosmos.You can enable Availability Zones by using Azure portal when creating an Azure Cosmos account. Lorsque vous créez un compte, activez la géo-redondance, les écritures multirégions, puis choisissez une région où les zones de disponibilité sont prises en charge :When you create an account, make sure to enable the Geo-redundancy, Multi-region Writes, and choose a region where Availability Zones are supported:

Activer les zones de disponibilité à l’aide du portail Azure

Génération d’applications hautement disponiblesBuilding highly available applications

  • Pour garantir une disponibilité élevée en écriture et en lecture, configurez votre compte Cosmos de façon à ce qu’il s’étendre sur au moins deux régions, avec plusieurs régions d’écriture.To ensure high write and read availability, configure your Cosmos account to span at least two regions with multiple-write regions. Cette configuration offre la plus haute disponibilité, la plus faible latence et la meilleure évolutivité pour les lectures et les écritures soutenues par les contrats SLA.This configuration will provide the highest availability, lowest latency, and best scalability for both reads and writes backed by SLAs. Pour en savoir plus, découvrez comment configurer votre compte Cosmos avec plusieurs régions d’écriture.To learn more, see how to configure your Cosmos account with multiple write-regions.

  • Pour les comptes Cosmos multirégion qui sont configurés avec une seule région d’écriture, activez le « basculement automatique » à l’aide d’Azure CLI ou du portail Azure.For multi-region Cosmos accounts that are configured with a single-write region, enable automatic-failover by using Azure CLI or Azure portal. Une fois le basculement automatique activé, Cosmos DB bascule automatiquement votre compte en cas de sinistre régional.After you enable automatic failover, whenever there is a regional disaster, Cosmos DB will automatically failover your account.

  • Même si votre compte Cosmos est hautement disponible, votre application peut ne pas être pas correctement conçue pour rester hautement disponible.Even if your Cosmos account is highly available, your application may not be correctly designed to remain highly available. Pour tester la haute disponibilité de bout en bout de votre application, dans le cadre de procédures de récupération d’urgence ou de test de votre application, désactivez temporairement le basculement automatique du compte, appelez régulièrement le basculement manuel à l’aide d’Azure CLI ou du portail Azure, puis surveillez le basculement de votre application.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. Une fois l’opération terminée, vous pouvez basculer vers la région primaire et restaurer le basculement automatique pour le compte.Once complete, you can fail back over to the primary region and restore automatic-failover for the account.

  • Dans un environnement de base de données globalement distribuée, il existe une relation directe entre le niveau de cohérence et la durabilité des données en situation de panne à l'échelle d'une région.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. Au moment de l'élaboration de votre plan de continuité d'activité, vous devez identifier le délai maximal acceptable nécessaire à la récupération complète de l'application après un événement perturbateur.As you develop your business continuity plan, you need to understand the maximum acceptable time before the application fully recovers after a disruptive event. Ce délai s’appelle l’objectif de délai de récupération (RTO, recovery time objective).The time required for an application to fully recover is known as recovery time objective (RTO). Vous devez également déterminer sur quelle période maximale l'application peut accepter de perdre les mises à jour de données récentes lors de la récupération après l'événement perturbateur.You also need to understand the maximum period of recent data updates the application can tolerate losing when recovering after a disruptive event. Il s’agit de l’objectif de point de récupération (RPO, recovery point objective).The time period of updates that you might afford to lose is known as recovery point objective (RPO). Pour obtenir le RPO et le RTO pour Azure Cosmos DB, consultez Niveaux de cohérence et durabilité des donnéesTo see the RPO and RTO for Azure Cosmos DB, see Consistency levels and data durability

Étapes suivantesNext steps

Vous pouvez ensuite lire les articles suivants :Next you can read the following articles: