Azure Event Hubs - Géorécupération d’urgenceAzure Event Hubs - Geo-disaster recovery

Quand un centre de données ou une région Azure tout entiers (et qu’aucune zone de disponibilité n’est utilisée) connaissent un temps d’arrêt, il est essentiel que le traitement des données continue dans un autre centre de données ou une autre région.When entire Azure regions or datacenters (if no availability zones are used) experience downtime, it's critical for data processing to continue to operate in a different region or datacenter. Pour cette raison, la géorécupération d’urgence et la géoréplication sont des fonctionnalités importantes pour les entreprises.As such, Geo-disaster recovery and Geo-replication are important features for any enterprise. Azure Event Hubs prend en charge la géorécupération d’urgence et la géoréplication au niveau de l’espace de noms.Azure Event Hubs supports both geo-disaster recovery and geo-replication, at the namespace level. 

Notes

La fonctionnalité de géorécupération d’urgence est disponible uniquement pour les références SKU standard et dédiées.The Geo-disaster recovery feature is only available for the standard and dedicated SKUs.

Pannes et sinistresOutages and disasters

Il est important de noter la différence entre « panne » et « sinistre ».It's important to note the distinction between "outages" and "disasters." Une panne se définit comme l’indisponibilité temporaire d’Azure Event Hubs. La panne impacte certains composants du service, comme une banque de messages, ou le centre de données entier.An outage is the temporary unavailability of Azure Event Hubs, and can affect some components of the service, such as a messaging store, or even the entire datacenter. Toutefois, une fois le problème résolu, Event Hubs redevient disponible.However, after the problem is fixed, Event Hubs becomes available again. En règle générale, une panne ne provoque aucune perte de messages ou d’autres données.Typically, an outage doesn't cause the loss of messages or other data. Une coupure de courant dans le centre de données est un exemple de panne.An example of such an outage might be a power failure in the datacenter. Certaines pannes sont uniquement dues à une courte perte de connexion résultant de problèmes de réseau ou d’autres perturbations temporaires.Some outages are only short connection losses because of transient or network issues.

Un sinistre se définit comme une perte définitive ou à long terme d’un cluster Event Hubs, d’une région Azure ou d’un centre de données.A disaster is defined as the permanent, or longer-term loss of an Event Hubs cluster, Azure region, or datacenter. La région ou le centre de données peut redevenir disponible ou pas, et rester arrêté(e) pendant plusieurs heures ou jours.The region or datacenter may or may not become available again, or may be down for hours or days. Les incendies, les inondations ou les tremblements de terre sont des exemples de sinistres.Examples of such disasters are fire, flooding, or earthquake. Un sinistre qui devient permanent peut entraîner la perte de certains messages, événements ou d’autres données.A disaster that becomes permanent might cause the loss of some messages, events, or other data. Toutefois, dans la plupart des cas, il ne doit y avoir aucune perte de données et les messages peuvent être récupérés une fois que le centre de données est sauvegardé.However, in most cases there should be no data loss and messages can be recovered once the data center is back up.

La fonctionnalité de géorécupération d’urgence d’Azure Event Hubs est une solution de récupération d’urgence.The Geo-disaster recovery feature of Azure Event Hubs is a disaster recovery solution. Les concepts et le workflow décrits dans cet article concernent des scénarios de sinistres, pas des pannes temporaires ou transitoires.The concepts and workflow described in this article apply to disaster scenarios, and not to transient, or temporary outages. Pour obtenir une présentation détaillée de la récupération d’urgence dans Microsoft Azure, consultez cet article.For a detailed discussion of disaster recovery in Microsoft Azure, see this article.

Concepts et terminologie de baseBasic concepts and terms

La fonctionnalité de récupération d’urgence implémente la récupération d’urgence des métadonnées, en s’appuyant sur les espaces de noms de récupération d’urgence principal et secondaire.The disaster recovery feature implements metadata disaster recovery, and relies on primary and secondary disaster recovery namespaces.

La fonctionnalité de géorécupération d’urgence est disponible uniquement pour les références SKU standard et dédiées.The Geo-disaster recovery feature is available for the standard and dedicated SKUs only. Vous n’avez pas besoin de modifier de chaîne de connexion, car la connexion est établie à l’aide d’un alias.You don't need to make any connection string changes, as the connection is made via an alias.

Cet article emploie les termes suivants :The following terms are used in this article:

  • Alias : nom d’une configuration de récupération d’urgence que vous avez configurée.Alias: The name for a disaster recovery configuration that you set up. L’alias fournit une chaîne de connexion de nom de domaine complet (FQDN) stable.The alias provides a single stable Fully Qualified Domain Name (FQDN) connection string. Les applications utilisent cet alias de chaîne de connexion pour se connecter à un espace de noms.Applications use this alias connection string to connect to a namespace.

  • Espace de noms principal/secondaire : espaces de noms qui correspondent à l’alias.Primary/secondary namespace: The namespaces that correspond to the alias. L’espace de noms principal est « actif » et reçoit des messages (il peut s’agir d’un espace de noms existant ou nouveau).The primary namespace is "active" and receives messages (can be an existing or new namespace). L’espace de noms secondaire est « passif » et ne reçoit pas de messages.The secondary namespace is "passive" and doesn't receive messages. Les métadonnées sont synchronisées entre ces deux espaces de noms, qui peuvent ainsi accepter facilement les messages sans aucune modification du code d’application ou de la chaîne de connexion.The metadata between both is in sync, so both can seamlessly accept messages without any application code or connection string changes. Pour vous assurer que seul l’espace de noms actif reçoit des messages, vous devez utiliser l’alias.To ensure that only the active namespace receives messages, you must use the alias.

  • Métadonnées : entités telles que des concentrateurs d’événements et des groupes de consommateurs ; incluent également leurs propriétés sur le service associé à l’espace de noms.Metadata: Entities such as event hubs and consumer groups; and their properties of the service that are associated with the namespace. Seules les entités et leurs paramètres sont automatiquement répliqués.Only entities and their settings are replicated automatically. Les messages et les événements ne sont pas répliqués.Messages and events aren't replicated.

  • Basculement : processus d’activation de l’espace de noms secondaire.Failover: The process of activating the secondary namespace.

Paires d’espaces de noms prises en chargeSupported namespace pairs

Les combinaisons suivantes d’espaces de noms principaux et secondaires sont prises en charge :The following combinations of primary and secondary namespaces are supported:

Espace de noms principalPrimary namespace Espace de noms secondaireSecondary namespace Prise en chargeSupported
standardStandard standardStandard OuiYes
standardStandard DédiéDedicated OuiYes
DédiéDedicated DédiéDedicated OuiYes
DédiéDedicated standardStandard NonNo

Notes

Vous ne pouvez pas associer des espaces de noms qui se trouvent dans le même cluster dédié.You can't pair namespaces that are in the same dedicated cluster. Vous pouvez associer des espaces de noms qui se trouvent dans des cluster distincts.You can pair namespaces that are in separate clusters.

Flux de configuration et de basculementSetup and failover flow

La section suivante présente une vue d’ensemble du processus de basculement et explique comment configurer le basculement initial.The following section is an overview of the failover process, and explains how to set up the initial failover.

1

Programme d’installationSetup

Tout d’abord, vous créez ou utilisez un espace de noms principal existant et un espace de noms secondaire, avant d’associer les deux.You first create or use an existing primary namespace, and a new secondary namespace, then pair the two. Cette association crée un alias qui vous servira à vous connecter.This pairing gives you an alias that you can use to connect. Étant donné que vous utilisez un alias, vous n’avez pas besoin de modifier les chaînes de connexion existantes.Because you use an alias, you don't have to change connection strings. Vous pouvez uniquement ajouter de nouveaux espaces de noms à votre association de basculement.Only new namespaces can be added to your failover pairing. Enfin, vous devez ajouter un système de surveillance afin de détecter si un basculement est nécessaire.Finally, you should add some monitoring to detect if a failover is necessary. Dans la plupart des cas, le service fait partie d’un écosystème de grande taille. C’est pourquoi des basculements automatiques sont rarement possibles, dans la mesure où, souvent, les basculements doivent être synchronisés avec le reste de l’infrastructure ou du sous-système.In most cases, the service is one part of a large ecosystem, thus automatic failovers are rarely possible, as often failovers must be performed in sync with the remaining subsystem or infrastructure.

ExempleExample

Dans un exemple de ce scénario, imaginez une solution de Point de vente (PDV) qui émet des messages ou des événements.In one example of this scenario, consider a Point of Sale (POS) solution that emits either messages or events. Event Hubs transmet ces événements à une solution de mappage ou de reformatage, qui envoie ensuite les données mappées à un autre système pour traitement.Event Hubs passes those events to some mapping or reformatting solution, which then forwards mapped data to another system for further processing. À ce stade, tous ces systèmes peuvent être hébergés dans la même région Azure.At that point, all of these systems might be hosted in the same Azure region. Le choix du moment du basculement et des éléments à basculer varie selon le flux de données dans votre infrastructure.The decision on when and what part to fail over depends on the flow of data in your infrastructure.

Vous pouvez automatiser le basculement à l’aide de systèmes de surveillance ou à l’aide de solutions de surveillance personnalisées.You can automate failover either with monitoring systems, or with custom-built monitoring solutions. Toutefois, cette automatisation nécessite des tâches de planification et du travail supplémentaires, qui ne seront pas abordés dans cet article.However, such automation takes extra planning and work, which is out of the scope of this article.

Flux de basculementFailover flow

Si vous lancez le basculement, deux étapes sont requises :If you initiate the failover, two steps are required:

  1. Vous voulez être sûr de pouvoir refaire un basculement en cas de nouvelle panne.If another outage occurs, you want to be able to fail over again. Pour cela, configurez un autre espace de noms passif et mettez à jour l’association.Therefore, set up another passive namespace and update the pairing.

  2. Extrayez des messages de l’ancien espace de noms principal dès qu’il est de nouveau disponible.Pull messages from the former primary namespace once it's available again. Après cela, utilisez cet espace de noms pour les messages réguliers en dehors de votre configuration de géorécupération ou supprimez l’ancien espace de noms principal.After that, use that namespace for regular messaging outside of your geo-recovery setup, or delete the old primary namespace.

Notes

Seule la sémantique de transfert du basculement est prise en charge.Only fail forward semantics are supported. Dans ce scénario, vous basculez puis effectuez un nouveau couplage avec un nouvel espace de noms.In this scenario, you fail over and then re-pair with a new namespace. La restauration automatique n’est pas prise en charge ; par exemple, dans un cluster SQL.Failing back is not supported; for example, in a SQL cluster.

2

GestionManagement

Si vous avez fait une erreur (par exemple, vous avez associé les mauvaises régions lors de la configuration initiale), vous pouvez rompre le couplage des deux espaces de noms à tout moment.If you made a mistake; for example, you paired the wrong regions during the initial setup, you can break the pairing of the two namespaces at any time. Si vous souhaitez utiliser les espaces de noms couplés comme des espaces de noms standard, supprimez l’alias.If you want to use the paired namespaces as regular namespaces, delete the alias.

ExemplesSamples

L’exemple sur GitHub montre comment configurer et lancer un basculement.The sample on GitHub shows how to set up and initiate a failover. Cet exemple illustre les concepts suivants :This sample demonstrates the following concepts:

  • Paramètres requis dans Azure Active Directory pour utiliser Azure Resource Manager avec Event Hubs.Settings required in Azure Active Directory to use Azure Resource Manager with Event Hubs.
  • Étapes requises pour exécuter l’exemple de code.Steps required to execute the sample code.
  • Envoi et réception à partir de l’espace de noms principal actuel.Send and receive from the current primary namespace.

ConsidérationsConsiderations

Notez les points suivants pour cette version :Note the following considerations to keep in mind with this release:

  1. De par sa conception, la géo-reprise d'activité après sinistre Event Hubs ne réplique pas les données, et vous ne pouvez donc pas réutiliser l'ancienne valeur de décalage de votre hub d'événements principal sur votre hub d'événements secondaire.By design, Event Hubs geo-disaster recovery does not replicate data, and therefore you cannot reuse the old offset value of your primary event hub on your secondary event hub. Nous vous recommandons de redémarrer votre récepteur d’événements avec l’une des méthodes suivantes :We recommend restarting your event receiver with one of the following methods:
  • EventPosition.FromStart()  : pour lire toutes les données sur votre hub d'événements secondaire.EventPosition.FromStart() - If you wish read all data on your secondary event hub.
  • EventPosition.FromEnd()  : pour lire toutes les nouvelles données à partir de la connexion à votre hub d'événements secondaire.EventPosition.FromEnd() - If you wish to read all new data from the time of connection to your secondary event hub.
  • EventPosition.FromEnqueuedTime(dateTime)  : pour lire toutes les données reçues dans votre hub d'événements secondaire depuis une date et une heure précises.EventPosition.FromEnqueuedTime(dateTime) - If you wish to read all data received in your secondary event hub starting from a given date and time.
  1. Dans votre planification de basculement, vous devez également tenir compte du facteur temps.In your failover planning, you should also consider the time factor. Par exemple, si vous perdez la connectivité pendant plus de 15 à 20 minutes, vous pouvez décider de lancer le basculement.For example, if you lose connectivity for longer than 15 to 20 minutes, you might decide to initiate the failover.

  2. Le fait qu’aucune donnée ne soit répliquée signifie que les sessions actuellement actives ne sont pas répliquées.The fact that no data is replicated means that currently active sessions aren't replicated. En outre, la détection des doublons et les messages planifiés peuvent ne pas fonctionner.Additionally, duplicate detection and scheduled messages may not work. Les nouvelles sessions, les messages planifiés et les nouveaux doublons fonctionneront.New sessions, scheduled messages, and new duplicates will work.

  3. Le basculement d’une infrastructure distribuée complexe doit être répétée au moins une fois.Failing over a complex distributed infrastructure should be rehearsed at least once.

  4. La synchronisation des entités peut prendre un certain temps, à raison d’environ 50 à 100 entités par minute.Synchronizing entities can take some time, approximately 50-100 entities per minute.

Zones de disponibilitéAvailability Zones

La référence SKU Event Hubs Standard prend en charge les zones de disponibilité, fournissant ainsi des emplacements isolés des défaillances au sein d'une région Azure.The Event Hubs Standard SKU supports Availability Zones, providing fault-isolated locations within an Azure region.

Notes

Pour Azure Event Hubs Standard, la prise en charge des zones de disponibilité s'applique uniquement aux régions Azure où des zones de disponibilité sont déjà présentes.The Availability Zones support for Azure Event Hubs Standard is only available in Azure regions where availability zones are present.

Vous pouvez activer les Zones de disponibilité sur les nouveaux espaces de noms uniquement, à l’aide du portail Azure.You can enable Availability Zones on new namespaces only, using the Azure portal. Event Hubs ne prend pas en charge la migration des espaces de noms existants.Event Hubs doesn't support migration of existing namespaces. Vous ne pouvez pas désactiver la redondance de zone après l’avoir activée sur votre espace de noms.You can't disable zone redundancy after enabling it on your namespace.

3

Instances Private EndpointPrivate endpoints

Cette section fournit des informations supplémentaires concernant l’utilisation de la géo-reprise d’activité après sinistre avec des espaces de noms qui utilisent des points de terminaison privés.This section provides additional considerations when using Geo-disaster recovery with namespaces that use private endpoints. Pour en savoir plus sur l’utilisation de points de terminaison privés avec Event Hubs en général, consultez Configurer des points de terminaison privés.To learn about using private endpoints with Event Hubs in general, see Configure private endpoints.

Nouveaux pairagesNew pairings

Si vous tentez de créer un pairage entre un espace de noms principal avec un point de terminaison privé et un espace de noms secondaire sans point de terminaison privé, le pairage échoue.If you try to create a pairing between a primary namespace with a private endpoint and a secondary namespace without a private endpoint, the pairing will fail. Le pairage ne fonctionnera que si les espaces de noms principal et secondaire ont des points de terminaison privés.The pairing will succeed only if both primary and secondary namespaces have private endpoints. Nous vous recommandons d’utiliser les mêmes configurations sur les espaces de noms principal et secondaire, ainsi que sur les réseaux virtuels dans lesquels des points de terminaison privés sont créés.We recommend that you use same configurations on the primary and secondary namespaces and on virtual networks in which private endpoints are created.

Notes

Lorsque vous tentez de pairer l’espace de noms principal avec un point de terminaison privé et un espace de noms secondaire, le processus de validation vérifie uniquement s’il existe un point de terminaison privé sur l’espace de noms secondaire.When you try to pair the primary namespace with private endpoint and a secondary namespace, the validation process only checks whether a private endpoint exists on the secondary namespace. Il ne vérifie pas si le point de terminaison fonctionne ou fonctionnera après le basculement.It doesn't check whether the endpoint works or will work after failover. Il vous incombe de vous assurer que l’espace de noms secondaire avec un point de terminaison privé fonctionnera comme prévu après le basculement.It's your responsibility to ensure that the secondary namespace with private endpoint will work as expected after failover.

Pour vérifier que les configurations de point de terminaison privé sont identiques sur les espaces de noms principal et secondaire, envoyez une demande de lecture (par exemple, Get Event Hub) à l’espace de noms secondaire à partir de l’extérieur du réseau virtuel, et vérifiez que vous recevez un message d’erreur du service.To test that the private endpoint configurations are same on primary and secondary namespaces, send a read request (for example: Get Event Hub) to the secondary namespace from outside the virtual network, and verify that you receive an error message from the service.

Pairages existantsExisting pairings

Si un pairage entre les espaces de noms principal et secondaire existe déjà, la création de point de terminaison privé sur l’espace de noms principal échoue.If pairing between primary and secondary namespace already exists, private endpoint creation on the primary namespace will fail. Pour résoudre ce problème, commencez par créer un point de terminaison privé sur l’espace de noms secondaire, puis créez-en un pour l’espace de noms principal.To resolve, create a private endpoint on the secondary namespace first and then create one for the primary namespace.

Notes

Bien que nous autorisions un accès en lecture seule à l’espace de noms secondaire, les mises à jour des configurations de points de terminaison privés sont autorisées.While we allow read-only access to the secondary namespace, updates to the private endpoint configurations are permitted.

Lorsque vous créez une configuration de récupération d’urgence pour votre application et des espaces de noms Event Hubs, vous devez créer des points de terminaison privés pour les espaces de noms Event Hubs principal et secondaire sur les réseaux virtuels hébergeant des instances principales et secondaires de votre application.When creating a disaster recovery configuration for your application and Event Hubs namespaces, you must create private endpoints for both primary and secondary Event Hubs namespaces against virtual networks hosting both primary and secondary instances of your application.

Supposons que vous disposiez de deux réseaux virtuels (VNET-1 et VNET-2) et d’espaces de noms principal et secondaire (EventHubs-EspaceNoms1-Principal et EventHubs-EspaceNoms2-Secondaire).Let's say you have two virtual networks: VNET-1, VNET-2 and these primary and secondary namespaces: EventHubs-Namespace1-Primary, EventHubs-Namespace2-Secondary. Vous devez procéder comme suit :You need to do the following steps:

  • Sur EventHubs-EspaceNoms1-Principal, créez deux points de terminaison privés qui utilisent des sous-réseaux de VNET-1 et VNET-2.On EventHubs-Namespace1-Primary, create two private endpoints that use subnets from VNET-1 and VNET-2
  • Sur EventHubs-EspaceNoms2-Secondaire, créez deux points de terminaison privés qui utilisent les mêmes sous-réseaux de VNET-1 et VNET-2.On EventHubs-Namespace2-Secondary, create two private endpoints that use the same subnets from VNET-1 and VNET-2

Points de terminaison privés et réseaux virtuels

L’avantage de cette approche est que le basculement peut se produire au niveau de la couche Application, indépendamment de l’espace de noms Event Hubs.Advantage of this approach is that failover can happen at the application layer independent of Event Hubs namespace. Examinez les scénarios suivants :Consider the following scenarios:

Basculement uniquement d’application : Ici, l’application n’existera pas dans le VNET-1, mais passera à VNET-2.Application-only failover: Here, the application won't exist in VNET-1 but will move to VNET-2. Comme les deux points de terminaison privés sont configurés sur VNET-1 et VNET-2 pour les espaces de noms principal et secondaire, l’application fonctionnera normalement.As both private endpoints are configured on both VNET-1 and VNET-2 for both primary and secondary namespaces, the application will just work.

Basculement uniquement d’espace de noms Event Hubs : Ici encore, étant donné que les deux points de terminaison privés sont configurés sur les deux réseaux virtuels pour les espaces de noms principal et secondaire, l’application fonctionnera normalement.Event Hubs namespace-only failover: Here again, since both private endpoints are configured on both virtual networks for both primary and secondary namespaces, the application will just work.

Notes

Pour obtenir des conseils en matière de géo-reprise d’activité après sinistre d’un réseau virtuel, voir Réseau virtuel – Continuité des activités.For guidance on geo-disaster recovery of a virtual network, see Virtual Network - Business Continuity.

Étapes suivantesNext steps

  • L’exemple sur GitHub décrit un flux de travail simple qui crée un géocouplage et déclenche un basculement pour un scénario de récupération d’urgence.The sample on GitHub walks through a simple workflow that creates a geo-pairing and initiates a failover for a disaster recovery scenario.
  • La référence d’API REST décrit les API nécessaires pour effectuer la configuration de la géorécupération.The REST API reference describes APIs for performing the Geo-disaster recovery configuration.

Pour plus d’informations sur les concentrateurs d’événements, accédez aux liens suivants :For more information about Event Hubs, visit the following links: