Activation de la mise en miroir
Ces informations décrivent comment configurer deux clusters Event Streams Enterprise en tant que paire en miroir. Les scénarios d'utilisation couvrent la reprise après incident, les sauvegardes et la géoréplication.
Lorsque vous élaborez une solution impliquant la mise en miroir dans Event Streams, réfléchissez à la façon dont votre solution traitera les deux scénarios suivants :
- perte de données
- La mise en miroir est asynchrone. C'est-à-dire que les messages doivent être produits avec succès sur le cluster source avant d'être mis en miroir sur le cluster cible. Si un incident se produit sur le cluster source avant que ces messages ne soient mis en miroir, les applications doivent gérer la perte de ces messages.
- Au moins une fois
- La duplication de message peut se produire lors du processus de mise en miroir. Les décalages de groupe de consommateurs validés dans le cluster source peuvent ne pas être convertis en points de contrôle dans le cluster cible. Lors de la reprise en ligne, un consommateur peut avoir besoin de retraiter les messages déjà consommés et validés sur le cluster source.
L'utilisation de la mise en miroir avec Event Streams entraîne un coût supplémentaire pour chaque heure d'unité de capacité de mise en miroir. Pour plus d'informations, accédez à Catalogue et
recherchez Event Streams. Vous pouvez ensuite afficher les plans de tarification.
Actuellement, l'activation de la mise en miroir pour une instance de service Event Streams nécessite l'utilisation du CLI IBM Cloud.
Pour installer le CLI, voir Extending IBM Cloud CLI with plug-ins.
Le CLI IBM Cloud utilise la commande service-instance-update pour mettre à jour votre ressource d'instance de service Event Streams.L'ID utilisateur du compte utilisé pour exécuter la commande service-instance-update doit se voir attribuer les mêmes politiques d'accès que celles nécessaires à la création de ressources. Pour plus d'informations sur les exigences d'accès, voir Accès requis pour la création de ressources.
Le temps nécessaire à l'activation de la mise en miroir pour l'instance de service Event Streams varie, mais dans des circonstances normales, il ne dépasse pas 2 heures.
Configuration
Assurez-vous de provisionner deux clusters Enterprise plan. Les deux clusters doivent avoir le même débit et la même capacité de stockage et disposer de liaisons de service à service (voir Etape 2 pour plus d'informations).
La mise en miroir étant unidirectionnelle, vous devez choisir le sens de la mise en miroir que vous souhaitez. L'un des clusters est la source et l'autre est la cible.
Sélectionnez les rubriques de votre cluster source que vous voulez mettre en miroir. Par défaut, aucune rubrique n'est mise en miroir. Vous pouvez activer la mise en miroir en utilisant les contrôles utilisateur après avoir activé la mise en miroir, comme indiqué à l 'étape 4. Vous devez spécifier la sélection sous la forme d'un ou de plusieurs modèles.
Tenez compte de vos besoins en bande passante : la bande passante disponible dans le cluster source est-elle suffisante ?Votre cluster source doit disposer d'un espace de débordement pour effectuer la mise en miroir.Reportez-vous à la section Choisir votre plan pour connaître les limites de la bande passante des clusters et utilisez les métriques de Event Streams pour déterminer le niveau d'activité de votre cluster source et savoir s'il dispose de la marge de manœuvre nécessaire pour la mise en place d'un miroir.
Bien que la mise en miroir d'un cluster multi-zone-région Enterprise vers un cluster mono-zone-région Enterprise et vice versa soit autorisée, cette configuration n'est pas recommandée, sauf si vous avez des exigences spécifiques en matière de résidence et que vous êtes conscient des implications. La politique d'accord de niveau de service (SLA) d'un cluster multi-zone-région Enterprise par rapport à un cluster mono-zone-région Enterprise peut être inférieure ou vice versa.
Activer les liaisons de service à service
Vous devez configurer une liaison de service à service entre les deux instances pour permettre aux deux instances de communiquer. Pour configurer cette liaison, procédez comme suit :
Lorsque vous créez un lien de service à service, IAM utilise la terminologie "source" et "cible" à l'inverse de Event Streams. En effet, le compte source IAM contient l'instance cible de la mise en miroir Event Streams, et vice-versa.
- Sélectionnez le compte IBM Cloud contenant l'instance de service source de mise en miroir Event Streams.
- Accédez au panneau Autorisations dans IAM et cliquez sur Créer.
- Pour la section Source:
- Si vous créez un miroir vers une instance cible dans un compte différent, sélectionnez "autre compte" sous le titre source, puis choisissez le compte contenant l'instance cible du miroir. Si vous effectuez une mise en miroir entre des instances de service dans le même compte, vous pouvez conserver la valeur par défaut "ce compte" sélectionnée.
- Sélectionnez l'instance Event Streams cible de la mise en miroir comme instance de service source IAM.
- Pour la sélection Cible, sélectionnez l'instance de source de mise en miroir Event Streams comme instance de service cible IAM.
- Attribuez le rôle de lecteur et cliquez sur Autoriser.
Si votre exigence est de revenir en arrière, vous avez également besoin d'une liaison service à service dans la direction opposée.
L'exemple suivant montre comment utiliser la ligne de commande pour configurer la liaison de service à service.
-
Connectez-vous au compte IBM Cloud® contenant l'instance Event Streams que vous voulez utiliser comme instance source de mise en miroir :
ibmcloud login -c <account containing mirroring source instance> -
Mettez en place une politique d'autorisation, comme suit :
ibmcloud iam authorization-policy-create messagehub messagehub Reader --source-service-instance-id <instance id of the mirroring target cluster> [--source-service-account <account containing mirroring target instance>] --target-service-instance-id <instance id of the mirroring source cluster>Notez que l'option
--source-service-accountpeut être omise si vous configurez la mise en miroir entre deux instances Event Streams dans le même compte IBM Cloud.
Pour plus d'informations sur les liaisons entre services, voir le panneau Gérer les autorisations et Utiliser les autorisations pour accorder l'accès entre les services.
Activer la mise en miroir et sélectionner les rubriques à mettre en miroir
Pour activer la mise en miroir, vous devez exécuter une commande service-instance-update sur votre cluster cible en utilisant le CLI avec les paramètres requis suivants :
| Paramètres obligatoires | Description |
|---|---|
| Crn source | Crn du cluster source à mettre en miroir |
| alias_source | Alias utilisé pour le cluster source |
| alias_cible | Alias utilisé pour le cluster cible |
- Le site
source_crnse présente sous la forme suivante :crn:v1:bluemix:public:messagehub:us-south:a/aaa:aaaa:: source_aliasettarget_aliassont les alias que vous souhaitez configurer pour chacune des deux instances de service lorsque vous activez la mise en miroir. Les alias apparaissent dans les noms de rubrique. Choisissez des noms courts et descriptifs. Par exemple, « us-south » et « us-east ».
Exemple de commande CLI
ibmcloud resource service-instance-update "Event Streams resource instance name" -p '{"mirroring":{"source_crn":"<source_crn>", "source_alias":"<source_alias>", "target_alias":"<target_alias>"}}'
Sélectionner les sujets à refléter
Lorsque la mise à jour de l'instance de service est terminée, vous devez sélectionner les rubriques qui seront mises en miroir de la source vers le cluster cible. Cette opération s'effectue à l'aide de la commande 'ibmcloud es mirroring-topic-selection-set'. Tous les groupes de consommateurs utilisés pour consommer à partir de ces sujets sélectionnés seront mis en miroir de la source vers le cluster cible. La sélection de rubrique se présente sous la forme d'un modèle d'expression régulière ou d'une liste séparée par des virgules de ces modèles.
La commande suivante sélectionne toutes les rubriques à mettre en miroir:
ibmcloud es mirroring-topic-selection-set --select '.*'
Vous pouvez sélectionner des rubriques en répertoriant les rubriques que vous souhaitez mettre en miroir comme suit:
ibmcloud es mirroring-topic-selection-set --select topic1,topic2,topic3
Pour plus d'informations sur la sélection, voir Mise en miroir des contrôles utilisateur.
Une fois la sélection des rubriques terminée, le cluster cible affiche les rubriques sélectionnées pour la mise en miroir à l'aide des contrôles utilisateur de mise en miroir, précédés de l'alias du cluster source.
Étape 3.1: Spécifier comment les noms de rubriques et de groupes sont transformés
Vous pouvez spécifier des règles de transformation qui vous permettent de mettre en miroir des données dans des rubriques portant des noms différents dans le cluster cible. Les trois scénarios suivants décrivent les transformations possibles et expliquent les cas d'utilisation pour chacun d'entre eux.
Vous pouvez spécifier quels sujets ou groupes de consommateurs sont mis en miroir à tout moment une fois que la mise en miroir a été activée, mais la transformation des sujets ou des groupes n'est possible qu'au moment où la mise en miroir est activée. Si la mise en miroir est déjà activée, elle devra d'abord être désactivée avant qu'une nouvelle demande d'activation ne soit faite pour spécifier la transformation d'un sujet ou d'un groupe.
Scénario 1 : transformation des sujets par la suppression de l'ancien préfixe ou suffixe et l'ajout d'un nouveau préfixe ou suffixe
Configurez les quatre paramètres supplémentaires suivants.
| Paramètres requis pour le changement de nom d'une rubrique | Description |
|---|---|
| Le préfixe à supprimer des noms de sujets dans le cluster source. | |
| Le suffixe à supprimer des noms de rubriques dans le cluster source. | |
| Le préfixe à ajouter aux noms des sujets dans le cluster cible. | |
| Le suffixe à ajouter aux noms des sujets dans le cluster cible. |
La commande ibmcloud resource service-instance-update doit être spécifiée via l'argument de la ligne de commande -p. Lorsque ces options sont spécifiées, seuls les sujets dont les préfixes ou suffixes correspondent
seront éligibles à la mise en miroir. Par exemple, si vous avez un remove_prefix de app1- et que vous spécifiez une sélection de sujets de abc.*, seuls les sujets commençant par app1-abc seront mis en miroir.
Si vous spécifiez le type de transformation "rename" et que vous ne spécifiez pas les paramètres pour add_prefix ou add_suffix, ces paramètres seront supprimés du sujet mis en miroir dans le cluster cible.
Les modèles de sujet sont appliqués au nom du sujet après la suppression de tout préfixe ou suffixe source et avant l'ajout de tout préfixe ou suffixe.
Voir l'exemple de commande CLI suivant :
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "rename",
"rename": {
"add_prefix": "newprefix-",
"remove_prefix": "oldprefix-",
"add_suffix": "-newsuffix",
"remove_suffix": "-oldsuffix"
}
}
}
}
}
Scénario 2 : Ajout de l'alias de la source comme suffixe aux rubriques en miroir
Appliquer une transformation de nom de sujet avec le type topic_name_transform fixé à use_alias Avec cette configuration, un sujet appelé app1-topic dans le cluster source sera mis en miroir avec un sujet appelé app1-topic.source dans le cluster cible, car l'alias source spécifié dans la configuration est source
Voir l'exemple de commande CLI suivant :
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "use_alias"
}
}
}
}
Scénario 3 : les sujets sont mis en miroir sans que leur nom soit modifié
Dans ce scénario, vous appliquez également l'article topic_name_transform avec le type none. Avec cette configuration, un sujet appelé app1-topic dans le cluster source sera mis en miroir avec un sujet
appelé app1-topic dans le cluster cible.
Voir l'exemple de commande CLI suivant :
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "none"
}
}
}
}
Étape 3.2: Transformation des identifiants des groupes de consommateurs correspondants
Par défaut, Mirror Maker ne modifie pas les identifiants des groupes de consommateurs lors de la mise en miroir vers le cluster cible. Cependant, Event Streams vous permet de modifier les données des identifiants de groupe, comme indiqué dans
les deux scénarios suivants. Comme pour les sujets, les modèles d'ID de groupe sont appliqués après la suppression de tout préfixe ou suffixe source et avant l'ajout de tout préfixe ou suffixe. Si vous spécifiez le type de transformation
"rename" et que vous ne spécifiez pas les paramètres pour add_prefix ou add_suffix, l'ID du groupe en miroir dans le cluster cible aura ces paramètres supprimés.
La commande ibmcloud resource service-instance-update doit être spécifiée via l'argument de la ligne de commande -p.
Scénario 1 : Transformer l'identifiant du groupe en supprimant l'ancien préfixe ou suffixe et en ajoutant un nouveau préfixe ou suffixe
Configurez les quatre paramètres supplémentaires suivants.
| Paramètres requis pour le changement de nom de l'ID de groupe | Description |
|---|---|
| Le préfixe à supprimer de l'identifiant du groupe dans le cluster source. | |
| Le suffixe à supprimer de l'identifiant du groupe dans le cluster source. | |
| Le préfixe à ajouter à l'identifiant du groupe dans le cluster cible. | |
| Le suffixe à ajouter à l'identifiant du groupe dans le cluster cible. |
Lorsque ces options sont spécifiées, seuls les ID de groupe avec les préfixes ou suffixes correspondants seront éligibles pour la mise en miroir. Par exemple, si vous avez un remove_prefix de aaa et un add_prefix de bbb, les groupes de consommateurs qui commencent par aaa-group-id dans le cluster source seront mis en miroir vers bbb-group-id dans le cluster cible.
Voir l'exemple de commande CLI suivant :
{
"group_id_transform": {
"type": "rename",
"rename": {
"add_prefix": "newprefix-",
"remove_prefix": "oldprefix-",
"add_suffix": "-newsuffix",
"remove_suffix": "-oldsuffix"
}
}
}
Scénario 2 : les identifiants des groupes de consommateurs sont dupliqués sans que leur nom soit modifié
Dans ce scénario, vous appliquez également l'article topic_name_transform avec le type none. Avec cette configuration, un sujet appelé aaa-group-id dans le cluster source sera mis en miroir avec un sujet
appelé aaa-group-id dans le cluster cible.
Voir l'exemple de commande CLI suivant :
"group_id_transform": {
"type": "none"
}
Approches de la migration des schémas en Event Streams
Event Streams propose deux approches de la migration des schémas, chacune utilisant une stratégie différente.
-
Outil d'importation/exportation de schémas en masse : Cette méthode permet de conserver les identifiants de schéma tels qu'ils existent dans le cluster source. Utilisez cette approche lorsqu'aucune transformation n'a lieu entre les clusters source et cible ou pour des scénarios de transfert direct où la compatibilité des schémas doit être maintenue d'un bout à l'autre du processus. Pour plus d'informations, voir Importation de données à partir d'autres registres de schémas.
-
Synchronisation des schémas via la mise en miroir avec transformation des identifiants. Cette méthode, décrite ci-dessous, transforme les identifiants de schéma lors de la migration du cluster source vers le cluster cible. Utilisez cette approche pour les migrations par étapes ou lorsque des transformations sont nécessaires. Cette méthode garantit que les schémas sont synchronisés entre les groupes de registres, ce qui signifie que les consommateurs du groupe cible peuvent lire les messages immédiatement. Il permet également d'enregistrer de nouveaux schémas sans risque de collision d'identifiants avec des schémas susceptibles d'être migrés ultérieurement.
Synchronisation des schémas via la mise en miroir avec transformation des identifiants
La synchronisation des schémas via la mise en miroir consiste à transférer les demandes de registre de schémas d'une instance à l'autre. Cela permet aux utilisateurs de lire et d'écrire dans une instance source par l'intermédiaire de l'instance cible, car le registre de schémas cible fonctionne dans un "mode miroir" spécial, en transmettant de manière transparente les demandes liées aux schémas au registre source et en appliquant les transformations d'identifiants nécessaires. Cette approche simplifie l'accès aux données entre les instances et permet une synchronisation transparente des schémas entre les environnements.
Précautions
Avant de synchroniser des schémas à l'aide d'un miroir, prenez connaissance des précautions suivantes :
- Une fenêtre de maintenance est nécessaire pendant que les schémas sont exportés/importés en masse entre les deux registres - cela devrait être de l'ordre de quelques heures ou moins.
- Pour que le renommage des sujets fonctionne, les schémas doivent utiliser Confluent Avro Serdes, afin que le sujet puisse être dérivé du nom du sujet. Confluent Avro Serdes parce que le sujet associé à un schéma peut être dérivé du nom du sujet (par exemple, pour les stratégies de dénomination du sujet et du sujet/enregistrement).
- La mise en miroir de l'autorisation S2S doit être ininterrompue; la désactivation de l'autorisation s2s ou de la mise en miroir empêchera la transmission des demandes de registre des schémas.
- Si une transformation est nécessaire, le registre des schémas de l'instance cible doit être configuré avec des règles de renommage des rubriques avant toute migration.
- Les règles de renommage ne peuvent pas être modifiées tant que la migration n'est pas terminée. Les modifications apportées au cours de la migration entraîneront des incohérences entre les registres.
Instructions
Les instructions suivantes expliquent comment utiliser la mise en miroir du registre des schémas pour déplacer des schémas entre deux instances.
Un utilitaire d'exportation n'a pas encore été ajouté à la CLI.
Valeurs de schéma autorisées
| Valeur de l'indicateur de l'état de santé | -- | -- | | Les demandes sont transmises de l'instance cible à l'instance source. | | Les demandes nécessitant le rôle IAM de lecteur sont autorisées. Tous les autres sont rejetés (403). | | inactive/omitted | Request forwarding is disabled. Il s'agit de la valeur par défaut. |
Exemple de demande
Voir l'exemple de commande CLI suivant :
ibmcloud resource service-instance-update \
"trgt-instance-name" \
-p '{
"mirroring": {
"source_crn": "<src instance crn>",
"source_alias": "source",
"target_alias": "target",
"schemas": "proxied"
}
}'
Transformation du nom du sujet
Les noms des sujets peuvent être transformés pendant le transfert. Par exemple, avec les bonnes règles,old-my-topic pourrait devenir new-my-topic. Lorsqu'elle est activée, l'instance source ne reconnaît que le nom
original, tandis que l'instance cible ne reconnaît que le nouveau nom du sujet (transformé). Tous les résultats renvoyés sont transformés en conséquence.
Si aucune règle de transformation n'est fournie, c'est use_alias qui est utilisé, conformément au comportement de miroir existant dans Event Streams. Pour faire suivre sans changer les noms des sujets, utilisez topic_name_transform type none.
La transformation est configurée à l'aide des champs de transformation CLI existants.
Flux migratoires
Lors de la migration entre deux instances Event Streams, la procédure suivante est suggérée.
- Activer la mise en miroir entre deux instances, en spécifiant
schemas: proxied. - Mettez à jour vos applications pour utiliser le registre des schémas cibles.
- Bloquer toute écriture dans le registre cible en passant à
schemas: read-only. Avant d'effectuer cette modification, il faut désactiver momentanément la mise en miroir. - Exporter tous les schémas de l'instance source.
- Importer tous les schémas exportés de l'instance source dans l'instance cible. Cette opération peut être effectuée à l'aide du CLI IBM Cloud®:
ibmcloud [...]. - Désactiver la mise en miroir.
Exportation de schémas
Pour plus d'informations, voir la documentation de Confluent.
L'interface de programmation Event Streams exige que les importations de schémas aient une valeur v1 exportVersion.
-
Téléchargez la dernière version du code source de
v2.x.x, par exemple, https://github.com/Apicurio/apicurio-registry/archive/refs/tags/2.6.13.Final.zip. -
Construire le client d'exportation :
mvn -pl utils/exportConfluent -am -DskipTests -Pprod package. -
Exécutez l'exportateur (enregistre la sortie sur confluent-schema-registry-export.zip ):
java -jar utils/exportConfluent/target/apicurio-registry-utils-exportConfluent-2.6.13.Final.jar \ "https://token:<password>@<my-event-streams-instance.com>/confluent" \ --client-props basic.auth.credentials.source=URL
Importation de schémas
Les schémas peuvent être importés à l'aide du CLI Event Streams.
-
Assurez-vous que le plugin
event-streams[es]est installé :ibmcloud plugin list. -
Connectez-vous à IBM Cloud®:
ibmcloud login [...]. -
Initialiser l'instance Event Streams dans laquelle vous souhaitez importer :
ibmcloud es init. -
Importer le schéma :
ibmcloud es schema-import \ -f confluent-schema-registry-export.zip
Validation
Vous pouvez obtenir les informations sur l'instance de service actuelle en exécutant la commande suivante :
ibmcloud resource service-instance "Event Streams resource instance name" --output=json
Examinez la section de la dernière opération du résultat.Les informations sont mises à jour en permanence au fur et à mesure de l'avancement de la mise à jour. Lorsque le processus d'activation de la mise en miroir est terminé, les informations relatives à la dernière opération indiquent si la mise à jour a réussi ou si la synchronisation a réussi.
"last_operation": {
"type": "update",
"state": "in progress",
"description": "Update in progress.",
"updated_at": null,
"cancelable": false
}
Exécutez à nouveau la commande jusqu'à ce que vous obteniez le résultat suivant :
"last_operation": {
"type": "update",
"state": "succeeded",
"description": "Update succeeded.",
"updated_at": null,
"cancelable": false
}
Le tableau de bord IBM Cloud Monitoring Event Streams Mirroring indique l'état de la mise en miroir.