Habilitación de la duplicación

Esta información describe cómo configurar dos clusters Event Streams Enterprise como un par duplicado. Los casos de uso incluyen recuperación tras desastre, copias de seguridad y geo-réplica.

Cuando cree una solución que implique la duplicación en Event Streams, tenga en cuenta cómo su solución abordará los dos escenarios siguientes:

pérdida de datos
La duplicación es asíncrona. Es decir, los mensajes se deben producir correctamente en el clúster de origen antes de duplicarse en el clúster de destino. Si se produce una anomalía en el clúster de origen antes de que se dupliquen dichos mensajes, las aplicaciones tendrán que gestionar la pérdida de dichos mensajes.
Al menos una vez
La duplicación de mensajes puede producirse en el proceso de duplicación. Es posible que los desplazamientos de grupo de consumidores confirmados en el clúster de origen no se conviertan en puntos de comprobación en el clúster de destino. En la migración tras error, es posible que un consumidor tenga que volver a procesar los mensajes ya consumidos y confirmados en el clúster de origen.

El uso de la duplicación con Event Streams conlleva un cargo adicional por cada hora de unidad de capacidad de duplicación. Para obtener más información, vaya al Catálogo y busque Event Streams. A continuación, puede ver los planes de precios.

Actualmente, habilitar la duplicación para una instancia de servicio de Event Streams requiere el uso de la CLI de IBM Cloud.

Para instalar la CLI, consulte Ampliación de IBM Cloud CLI con plug-ins.

La CLI IBM Cloud utiliza el comando service-instance-update para actualizar su recurso de instancia de servicio Event Streams.El ID de usuario de la cuenta utilizada para ejecutar el comando service-instance-update debe tener asignadas las mismas políticas de acceso que se necesitan al crear recursos. Para obtener información sobre los requisitos de acceso, consulte Acceso necesario para crear recursos.

El tiempo necesario para habilitar la duplicación para la instancia de servicio de Event Streams varía, pero en circunstancias normales no supera las 2 horas.

Configuración

Asegúrese de que aprovisiona dos clústeres del plan Enterprise. Ambos clústeres deben tener el mismo rendimiento y capacidad de almacenamiento y tener enlaces de servicio a servicio (consulte el Paso 2 para obtener más información).

Dado que la duplicación es unidireccional, decida qué dirección de duplicación desea. Un clúster es el origen y el otro clúster es el destino.

Decida qué temas del clúster de origen desea duplicar. De forma predeterminada, no se reflejan los temas y puede habilitar la duplicación mediante los controles de usuario después de habilitar la duplicación, como se muestra en el paso 4. Debe especificar la selección como uno o más patrones.

Tenga en cuenta los requisitos de ancho de banda; ¿hay suficiente ancho de banda disponible en el clúster de origen?El clúster de origen debe tener algún margen para ejecutar la duplicación.Consulte Elegir su plan para conocer los límites de ancho de banda del clúster y utilice las métricas de Event Streams para determinar lo ocupado que está su clúster de origen y si tiene margen para la duplicación.

Aunque se permite la duplicación de un clúster de región multizona de Enterprise a un clúster de región de zona única de Enterprise y viceversa, esta configuración no se recomienda a menos que tenga requisitos específicos de residencia y sea consciente de las implicaciones. La política de Acuerdo de Nivel de Servicio (SLA) de un clúster de región multizona Enterprise a un clúster de región de zona única Enterprise podría ser menor o viceversa.

Activar los enlaces entre servicios

Debe configurar un enlace de servicio a servicio entre ambas instancias para permitir que ambas instancias se comuniquen. Para configurar, siga estos pasos:

Cuando se crea una vinculación de servicio a servicio, IAM utiliza la terminología "origen" y "destino" de forma opuesta a la de Event Streams. En que la cuenta de origen IAM contiene la instancia de destino de mirroring Event Streams, y viceversa.

  1. Seleccione la cuenta de IBM Cloud que contiene la instancia de servicio de origen de duplicación de Event Streams.
  2. Vaya al panel Autorizaciones en IAM y pulse Crear.
  3. Para la sección Origen:
    • Si está realizando un mirroring a una instancia de destino en una cuenta diferente, seleccione «otra cuenta» en el encabezado de origen y, a continuación, elija la cuenta que contiene la instancia de destino del mirroring. Si realiza una duplicación entre instancias de servicio en la misma cuenta, puede dejar seleccionado el valor predeterminado de "esta cuenta".
    • Seleccione la instancia de destino de duplicación Event Streams como instancia de servicio de origen de IAM.
  4. Para la selección Destino, seleccione la instancia de origen de duplicación Event Streams como instancia de servicio de destino de IAM.
  5. Asigne el rol de Lector y haga clic en Autorizar.

Si su requisito es fallar hacia atrás, también necesita el enlace de servicio a servicio en la dirección opuesta.

El ejemplo siguiente muestra cómo utilizar la línea de mandatos para configurar el enlace de servicio a servicio.

  1. Inicie sesión en la cuenta IBM Cloud® que contiene la instancia Event Streams que desea que actúe como instancia de origen de réplica:

    ibmcloud login -c <account containing mirroring source instance>
    
  2. Establezca una política de autorización, de la siguiente manera:

    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>
    

    Tenga en cuenta que la opción " --source-service-account " puede omitirse si está configurando la duplicación entre dos instancias de " Event Streams " en la misma cuenta de " IBM Cloud ".

Para obtener más información sobre los enlaces entre servicios, consulte el panel Gestionar autorizaciones y Uso de autorizaciones para conceder acceso entre servicios.

Activar reflejo y seleccionar los temas a reflejar

Para habilitar la duplicación, debe ejecutar un service-instance-update comando contra su clúster de destino utilizando la CLI con los siguientes parámetros obligatorios:

Parámetros necesarios para activar la duplicación
Parámetros necesarios Descripción
crn de origen El crn del clúster de origen que se va a duplicar
alias de origen El alias utilizado para el clúster de origen
alias_destino El alias utilizado para el clúster de destino
  • La dirección de correo electrónico ( source_crn ) tiene este formato: crn:v1:bluemix:public:messagehub:us-south:a/aaa:aaaa::
  • source_alias y target_alias son los alias que desea configurar para cada una de las dos instancias de servicio al habilitar la duplicación. Los alias aparecen en los nombres de tema. Elija nombres cortos y descriptivos. Por ejemplo, "us-south" y "us-east".

Mandato de CLI de ejemplo

ibmcloud resource service-instance-update "Event Streams resource instance name" -p '{"mirroring":{"source_crn":"<source_crn>", "source_alias":"<source_alias>", "target_alias":"<target_alias>"}}'

Selecciona los temas que quieres reflejar

Cuando se complete la actualización de la instancia de servicio, debe seleccionar qué temas se reflejarán desde el clúster de origen al de destino. Esto se hace con la CLI utilizando el comando 'ibmcloud es mirroring-topic-selection-set'. Cualquier grupo de consumidores utilizado para consumir a partir de estos temas seleccionados se reflejará desde el clúster de origen hasta el clúster de destino. La selección de temas tiene el formato de un patrón de expresión regular o una lista separada por comas de dichos patrones.

El mandato siguiente selecciona todos los temas que se van a duplicar:

ibmcloud es mirroring-topic-selection-set --select '.*'

Puede seleccionar temas listando los temas que desea duplicar como se indica a continuación:

ibmcloud es mirroring-topic-selection-set --select topic1,topic2,topic3

Para obtener más información sobre cómo realizar la selección, consulte Duplicación de controles de usuario.

Una vez completada la selección de temas, el clúster de destino muestra los temas que se han seleccionado para la duplicación utilizando los controles de usuario de duplicación con el sufijo del alias del clúster de origen.

Paso 3.1:. Especifique cómo se transforman los nombres de los temas y los grupos

Puede especificar reglas de transformación que le permitan reflejar datos en temas con diferentes nombres en el clúster de destino. Los tres escenarios siguientes describen posibles transformaciones y explican los casos de uso de cada una.

Puede especificar qué temas o grupos de consumidores se reflejan en cualquier momento una vez que se haya habilitado el reflejo, sin embargo, la transformación de temas o grupos solo es posible en el momento en que se habilita el reflejo. Si la duplicación ya está habilitada, será necesario deshabilitarla antes de realizar una solicitud de habilitación posterior para especificar la transformación de temas o grupos.

Escenario 1: Transformación de temas eliminando el prefijo o sufijo antiguo y añadiendo un prefijo o sufijo nuevo

Configure los cuatro parámetros adicionales siguientes.

| Parámetros requeridos para renombrar temas Descripción | -- | -- | | remove_prefix | El prefijo a eliminar de los nombres de temas en el cluster de origen. | | remove_suffix | El sufijo a eliminar de los nombres de temas en el cluster de origen. | | add_prefix | El prefijo a añadir a los nombres de temas en el cluster de destino. | | add_suffix | El sufijo a añadir a los nombres de temas en el cluster de destino. |

El comando ibmcloud resource service-instance-update debe especificarse a través del argumento de línea de comandos -p. Cuando se especifican estas opciones, solo los temas con los prefijos o sufijos coincidentes serán aptos para la duplicación. Por ejemplo, si tiene un remove_prefix de app1- y especifica una selección de temas de abc.*, solo se reflejarán los temas que empiecen por app1-abc.

Si especifica el tipo de transformación «rename» (cambiar nombre) y no especifica los parámetros para add_prefix o add_suffix, el tema reflejado en el clúster de destino tendrá estos parámetros eliminados. Los patrones de tema se aplican al nombre del tema después de eliminar cualquier prefijo o sufijo de origen y antes de añadir cualquier prefijo o sufijo.

Consulte el siguiente ejemplo de comando CLI:

{
  "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"
        }
      }
    }
  }
}

Escenario 2: Añadir el alias de origen como sufijo a los temas reflejados

Aplica una transformación de nombre de tema con el tipo topic_name_transform establecido en use_alias. Con esta configuración, un tema llamado app1-topic en el clúster de origen se reflejará en un tema llamado app1-topic.source en el clúster de destino, porque el alias de origen especificado en la configuración es source.

Consulte el siguiente ejemplo de comando CLI:

{
  "mirroring": {
    "source_crn": "crn:v1:...",
    "source_alias": "source",
    "target_alias": "target",
    "options": {
        "topic_name_transform": {
            "type": "use_alias"
      }
    }
  }
}

Escenario 3: Los temas se reflejan sin cambiar sus nombres

En este escenario, también aplica el topic_name_transform con el tipo establecido en none. Con esta configuración, un tema llamado app1-topic en el clúster de origen se reflejará en un tema llamado app1-topic en el clúster de destino.

Consulte el siguiente ejemplo de comando CLI:

{
  "mirroring": {
    "source_crn": "crn:v1:...",
    "source_alias": "source",
    "target_alias": "target",
    "options": {
        "topic_name_transform": {
            "type": "none"
      }
    }
  }
}

Paso 3.2:. Transformación de los ID de grupo de consumidores correspondientes

De forma predeterminada, Mirror Maker no modificará los ID de grupo de consumidores al duplicar en el clúster de destino. Sin embargo, Event Streams le permite modificar los datos de los ID de grupo, como se describe en los dos escenarios siguientes. De forma similar a los temas, los patrones de ID de grupo se aplican después de eliminar cualquier prefijo o sufijo de origen y antes de añadir cualquier prefijo o sufijo. Si especifica el tipo de transformación «rename» (cambiar nombre) y no especifica los parámetros para add_prefix o add_suffix, el ID de grupo reflejado en el clúster de destino tendrá estos parámetros eliminados.

El comando ibmcloud resource service-instance-update debe especificarse a través del argumento de línea de comandos -p.

Escenario 1: Transformar el ID de grupo eliminando el prefijo o sufijo antiguo y añadiendo un prefijo o sufijo nuevo

Configure los cuatro parámetros adicionales siguientes.

Parámetros necesarios para renombrar el ID de grupo
Parámetros requeridos para renombrar el ID de grupo Descripción
remove_prefix El prefijo a eliminar del id de grupo en el cluster origen.
remove_suffix El sufijo a eliminar del id de grupo en el cluster de origen.
add_prefix El prefijo a añadir al id de grupo en el cluster destino.
add_suffix El sufijo a añadir al id de grupo en el cluster destino.

Cuando se especifican estas opciones, solo los ID de grupo con los prefijos o sufijos coincidentes serán elegibles para la duplicación. Por ejemplo, si tiene un remove_prefix de aaa y add_prefix de bbb, los grupos de consumidores que comiencen con aaa-group-id en el clúster de origen se reflejarán en bbb-group-id en el clúster de destino.

Consulte el siguiente ejemplo de comando CLI:

{
  "group_id_transform": {
    "type": "rename",
    "rename": {
       "add_prefix": "newprefix-",
       "remove_prefix": "oldprefix-",
       "add_suffix": "-newsuffix",
       "remove_suffix": "-oldsuffix"
    }
  }
}

Escenario 2: Los ID de los grupos de consumidores se duplican sin modificar sus nombres

En este escenario, también aplica el topic_name_transform con el tipo establecido en none. Con esta configuración, un tema llamado aaa-group-id en el clúster de origen se reflejará en un tema llamado aaa-group-id en el clúster de destino.

Consulte el siguiente ejemplo de comando CLI:

"group_id_transform": {
  "type": "none"
}

Enfoques de migración de esquemas en Event Streams

Event Streams ofrece dos enfoques para la migración de esquemas, cada uno de los cuales utiliza una estrategia diferente.

  1. Herramienta de importación/exportación masiva de esquemas: Este método conserva los ID de esquema exactamente como existen en el clúster de origen. Utilice este enfoque cuando no se produzcan transformaciones entre los clústeres de origen y de destino, o para situaciones directas de elevación y desplazamiento en las que deba mantenerse la compatibilidad de esquemas de extremo a extremo. Para más información, consulte Importar datos de otros registros de esquemas.

  2. Sincronización de esquemas mediante mirroring con transformación de ID. Este método, que se describe a continuación, transforma los ID de esquema durante la migración del clúster de origen al de destino. Utilice este enfoque para las migraciones por fases o cuando sea necesario realizar transformaciones. Este método garantiza que los esquemas estén sincronizados entre los clústeres de registro, lo que significa que los consumidores del clúster de destino pueden leer los mensajes inmediatamente. También permite registrar nuevos esquemas sin riesgo de colisiones de ID con esquemas que puedan migrarse posteriormente.

Sincronización de esquemas mediante mirroring con transformación de ID

La sincronización de esquemas mediante mirroring funciona reenviando las peticiones de registro de esquemas de una instancia a otra. Esto permite a los usuarios leer y escribir en una instancia de origen a través de la instancia de destino, ya que el registro de esquemas de destino funciona en un "modo de réplica" especial, enviando de forma transparente las solicitudes relacionadas con esquemas al registro de origen y aplicando transformaciones de ID según sea necesario. Este enfoque simplifica el acceso a los datos entre instancias y permite una sincronización perfecta de los esquemas entre entornos.

Precauciones

Antes de sincronizar esquemas mediante mirroring, revise las siguientes precauciones:

  1. Se necesita un periodo de mantenimiento mientras se exportan/importan los esquemas de forma masiva entre los dos registros (unas horas o menos).
  2. Para que el renombramiento de temas funcione, los esquemas deben utilizar Confluent Avro Serdes, de modo que el tema pueda derivarse del nombre del tema. Confluent Avro Serdes porque el tema asociado a un esquema puede derivarse del nombre del tema (por ejemplo, para las estrategias de denominación de temas y temas/temas de registro).
  3. La duplicación de la autorización de S2S debe ser ininterrumpida; la desactivación de la autorización de s2s o la duplicación impedirá que se reenvíen las solicitudes de registro de esquemas.
  4. Si se requiere una transformación, el registro de esquemas de la instancia de destino debe configurarse con reglas de renombrado de temas antes de que tenga lugar cualquier migración.
  5. Las reglas de renombrado no pueden modificarse hasta que la migración haya finalizado. Realizar cambios durante la migración provocará incoherencias entre los registros.

Instrucciones

Las siguientes instrucciones describen cómo puede utilizar la duplicación del registro de esquemas para mover esquemas entre dos instancias.

Todavía no se ha añadido una utilidad de exportación a la CLI.

Valores de esquema permitidos

| Valor Descripción | -- | -- | | Las solicitudes se reenvían desde la instancia de destino a la instancia de origen. | | Sólo lectura Se permiten solicitudes que requieran el rol IAM de Lector. Todos los demás son rechazados (403). | | inactivo/omitido | El reenvío de solicitudes está desactivado. Este es el valor por defecto. |

Solicitud de ejemplo

Consulte el siguiente ejemplo de comando CLI:

ibmcloud resource service-instance-update \
"trgt-instance-name" \
-p '{
"mirroring": {
"source_crn": "<src instance crn>",
"source_alias": "source",
"target_alias": "target",
"schemas": "proxied"
}
}'

Transformación del nombre del tema

Los nombres de los temas pueden transformarse durante el reenvío. Por ejemplo, con las reglas adecuadas,old-my-topic podría convertirse en new-my-topic. Cuando está activada, la instancia de origen sólo reconoce el nombre original, mientras que la instancia de destino sólo reconoce el nuevo nombre de tema (transformado). Todos los resultados devueltos se transforman en consecuencia.

Si no se proporcionan reglas de transformación, se utiliza use_alias, en línea con el comportamiento de duplicación existente en Event Streams. Para reenviar sin cambiar los nombres de los temas, utilice topic_name_transform tipo none. La transformación se configura utilizando los campos de transformación existentes en la CLI.

Flujo migratorio

Al migrar entre dos instancias de Event Streams, se sugiere el siguiente flujo.

  1. Active la duplicación entre dos instancias, especificando schemas: proxied.
  2. Actualice sus aplicaciones para que utilicen el registro del esquema de destino.
  3. Bloquee cualquier escritura en el registro de destino cambiando a schemas: read-only. Antes de realizar este cambio, la duplicación debe desactivarse momentáneamente.
  4. Exporta todos los esquemas de la instancia de origen.
  5. Importa todos los esquemas exportados desde la instancia de origen a la de destino. Esto puede hacerse utilizando la CLI IBM Cloud®: ibmcloud [...].
  6. Desactiva la duplicación.

Exportación de esquemas

Para obtener información más detallada, consulte la documentación de Confluent.

La CLI Event Streams requiere que las importaciones de esquemas tengan un valor v1 exportVersion.

  1. Descargue el último código fuente de v2.x.x, por ejemplo, https://github.com/Apicurio/apicurio-registry/archive/refs/tags/2.6.13.Final.zip.

  2. Cree el cliente de exportación: mvn -pl utils/exportConfluent -am -DskipTests -Pprod package.

  3. Ejecute el exportador (guarda la salida en 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
    

Importación de esquemas

Los esquemas pueden importarse utilizando la CLI Event Streams.

  1. Asegúrese de tener instalado el plugin event-streams[es]: ibmcloud plugin list.

  2. Conéctese a IBM Cloud®: ibmcloud login [...].

  3. Inicialice la instancia Event Streams a la que desea importar: ibmcloud es init.

  4. Importe el esquema:

    ibmcloud es schema-import \
    -f confluent-schema-registry-export.zip
    

Validación

Puede obtener la información de la instancia de servicio actual ejecutando el siguiente comando :

ibmcloud resource service-instance "Event Streams resource instance name" --output=json

Revise la sección de la última operación de la salida.La información se actualiza continuamente a medida que avanza la actualización. Cuando el proceso de habilitación de duplicación se haya completado, la información de la última operación indicará si la actualización o la sincronización se han realizado correctamente.

"last_operation": {
  "type": "update",
  "state": "in progress",
  "description": "Update in progress.",
  "updated_at": null,
  "cancelable": false
}

Ejecute el comando de nuevo hasta que se indique el éxito de la siguiente manera:

"last_operation": {
  "type": "update",
  "state": "succeeded",
  "description": "Update succeeded.",
  "updated_at": null,
  "cancelable": false
}

El panel IBM Cloud Monitoring Event Streams Mirroring muestra el estado de la duplicación.