Blog de Amazon Web Services (AWS)

Presentamos la replicación de datos entre regiones de Amazon MQ para agentes de ActiveMQ

Dominic Gagné, ingeniero sénior de desarrollo de software, y Vinodh Kannan Sadayamuthu, arquitecto sénior de soluciones. 

Traducido al español por: Michael Estiven Guerrero Acevedo arquitecto sénior de soluciones. 

AmazonMQ ahora admite la replicación de datos entre regiones para los agentes de ActiveMQ. Esta función le permite crear aplicaciones de mensajería resilientes a nivel regional y facilita la configuración de la replicación de mensajes entre regiones entre los agentes(brokers) de ActiveMQ en Amazon MQ. Esta entrada de blog explica cómo funciona la replicación de datos entre regiones en Amazon MQ, cómo configurar los agentes de réplicas entre regiones para ActiveMQ y cómo probar la promoción de un agente de réplicas.

Amazon MQ es un servicio gestionado de intermediación de mensajes para Apache ActiveMQ y RabbitMQ que simplifica la configuración y el funcionamiento de los agentes de mensajería en AWS.

La replicación entre regiones mejora la resiliencia y las capacidades de recuperación ante desastres de sus sistemas. Esta nueva función de Amazon MQ facilita el aumento de la resiliencia de los sistemas de mensajería ActiveMQ en todas las regiones de AWS.

Cómo funciona la replicación de datos entre regiones en Amazon MQ para ActiveMQ

La función de replicación de datos entre regiones de Amazon MQ para ActiveMQ replica el estado del agente desde el agente principal(primary broker) de una región de AWS hasta el agente de réplicas(replica broker) de otra región. El estado del agente consiste en los mensajes que un productor de mensajes ha enviado a un agente. Además, se replican las confirmaciones y transacciones de los mensajes. Los mensajes programados y la configuración XML del agente no se replican del agente principal al agente de réplicas.

La replicación de estados se produce de forma asíncrona y se ejecuta en segundo plano. Cuando se envía un mensaje a un agente con capacidad de replicación de datos entre regiones, los datos se conservan tanto en el almacén de datos principal como en una cola que se utiliza para replicar los datos. El agente de réplicas actúa como cliente de esta cola y consume los datos del agente principal que representan el estado del agente.

En un momento dado, solo el agente principal está disponible para las conexiones con los clientes. El agente de réplicas es un intermediario activo y replica de forma pasiva el estado del agente principal. Sin embargo, no acepta conexiones de clientes. El siguiente diagrama muestra una versión simplificada de un par de agentes de replicación de datos entre regiones. Todo el tráfico de replicación se cifra mediante TLS y permanece dentro de la red troncal privada de AWS.

Configuración de agentes de réplicas entre regiones para Amazon MQ para ActiveMQ

Para configurar un agente de réplicas entre regiones, su agente principal de Amazon MQ para ActiveMQ debe cumplir los siguientes criterios de aptitud:

  • ActiveMQ versión 5.17.6 o superior
  • Tamaño de instancia m5.large o superior
  • Se ha habilitado el despliegue de agente activo/ en espera
  • Estar en estado de ejecución

Si no tiene un agente ActiveMQ que cumpla estos criterios, consulte Creación y configuración de un agente ActiveMQ  para obtener instrucciones sobre cómo crear un agente principal.

Para configurar la replicación entre regiones

  1. Navegue hasta la consola de Amazon MQ y elija Crear agente de réplicas.
  2. Seleccione un agente principal de la lista de agentes principales elegibles y elija Siguiente.
  3. En Detalles del agente de réplicas, seleccione la región de su agente de réplicas e introduzca el nombre del agente de réplicas.Amazon MQ console configure replica broker
  4. En el panel de usuario para el agente de réplicas de la consola ActiveMQ, introduzca un nombre de usuario y una contraseña para el acceso del agente.Amazon MQ console user for replica broker
  5. En el panel Usuario de replicación de datos para conectar el acceso entre agentes, introduzca el nombre de usuario y la contraseña del usuario de replicación.
  6. En el panel de ajustes adicionales, mantenga los valores predeterminados y seleccione Siguiente.
  7. Revise la configuración y seleccione Crear agente de réplicas.Amazon MQ console create replica broker setting summary
    Nota: El tipo de acceso del agente se establece automáticamente en función del tipo de acceso del agente principal.
  8. El proceso de creación tarda hasta 25 minutos. Una vez finalizada la creación del agente de réplicas, inicie la replicación entre el agente principal y el agente de réplicas reiniciando el agente principal.
  9. Una vez que se haya reiniciado el agente principal y su estado sea En ejecución, podrá ver los detalles de la réplica en el panel de replicación de datos del agente principal. Amazon MQ console broker replication details

Ambos agentes ahora se sincronizan entre sí para establecer una red y una conexión interregional a través de las cuales se replica el estado del agente. Una vez que ambos agentes estén en el estado En ejecución, el agente principal acepta las conexiones con los clientes y transfiere todos los cambios de estado del agente (mensajes, confirmaciones, transacciones, etc.) al agente de réplicas.

El agente de réplicas ahora refleja de forma asíncrona el estado del agente principal. Sin embargo, no estará disponible para las conexiones de los clientes hasta que se promueva mediante una conmutación o una conmutación por error. Estas operaciones se describen en la siguiente sección.

Probar la replicación de datos y promoción del agente de réplicas

Hay dos formas de promocionar un agente de réplicas: iniciar una conmutación(switchover) o una conmutación por error(failover).

Conmutación Conmutación por error
  • Prioriza la consistencia sobre la disponibilidad.
  • Prioriza la disponibilidad sobre la consistencia.
  • Se garantiza que los agentes tienen estados idénticos.
  • No se garantiza que los agentes estén en estados idénticos.
  • Es posible que los agentes no estén disponibles de inmediato para atender el tráfico de clientes.
  • El agente de réplicas está disponible de inmediato para atender el tráfico de clientes.

Para iniciar una conmutación por error o una conmutación

  1. Vaya a la consola de Amazon MQ, elija su agente principal e inicie sesión en la consola web ActiveMQ mediante las direcciones URL que se encuentran en el panel de conexiones.
  2. En el menú superior, selecciona Colas. Debería poder ver cuatro colas de ActiveMQ. Plugin.Replication utilizadas por la función de replicación. Replicated message from primary broker in TestQueue
  3. Para probar la replicación de mensajes del agente principal a un agente de réplicas, cree una cola y envíe los mensajes. Para crear la cola:
    • En Nombre de cola, escriba TestQueue.
    • Elija Crear.
  4. En Operaciones de TestQueue, seleccione Enviar a y lleve a cabo los siguientes pasos:
    • En Número de mensajes que se van a enviar, introduzca 10 y mantenga los demás valores predeterminados.
    • En Cuerpo del mensaje, introduzca un mensaje de prueba.
    • Seleccione Enviar. ActiveMQ console send test message
  5. Para promocionar el agente de réplicas, vaya a la consola de Amazon MQ y cambie la región a la región de AWS en la que se encuentra el agente de réplicas.
  6. Seleccione el agente de réplicas (en este ejemplo, llamado Secondarybroker) y elija Promocionar réplica.Amazon MQ console promote broker
  7. En la ventana emergente Promocionar réplica agente:
    • Seleccione Conmutación(Switchover) o Conmutación por error(Failover).
    • Introduzca confirmar en el cuadro de texto.
    • Seleccione Confirmar. Amazon MQ console confirm broker promotion
  8. Mientras se promociona un agente de réplicas, su estado de replicación cambia a Promoción en curso. El estado de replicación del agente principal correspondiente cambia a Degradación en curso.

Réplica del estado de Secondarybroker: promoción en curso:

Replica Secondarybroker status - Promotion in progress

Estado del agente principal: Degradación en curso:

Primary broker status - Demotion in progress

Estado de Secondarybroker: ascendido a nuevo agente principal:

Secondarybroker status – Promoted to new primary broker

  1. Cuando el estado de Secondarybroker sea En ejecución, inicie sesión en la consola web ActiveMQ desde las direcciones URL que se encuentran en el panel de conexiones. Puede ver los mensajes replicados enviados desde el agente principal anterior en el paso 4 en TestQueue:Replicated message from primary broker in TestQueue

Monitoreo de la replicación de datos entre regiones

Para monitorear el progreso de la replicación de datos entre regiones, puede usar las métricas de Amazon CloudWatch TotalReplicationLag y ReplicationLag. Amazon CloudWatch metrics TotalReplicationLag and ReplicationLag

Puede utilizar estas dos métricas para monitorear el progreso de una conmutación. Cuando su valor llegue a cero, la conmutación se completará porque los estados del agente se han sincronizado y el agente de réplicas comienza a aceptar conexiones de clientes. Si la conmutación no avanza lo suficientemente rápido o si necesita que el agente de réplicas esté disponible de inmediato para atender el tráfico de clientes, puede solicitar una conmutación por error en cualquier momento.

Nota: Una conmutación por error puede interrumpir una conmutación en curso. Sin embargo, una conmutación no puede interrumpir una conmutación por error en curso.

Al emitir una solicitud de conmutación por error, el agente de réplicas pasa a estar disponible de forma inmediata, pero no garantiza qué datos se han replicado en el agente de réplicas. Esto significa que una conmutación por error puede hacer que el seguimiento y la reconciliación de datos sean más difíciles para la aplicación de su cliente que una conmutación.

Por este motivo, recomendamos empezar siempre con una conmutación e interrumpirla con una conmutación por error si es necesario. Para interrumpir una conmutación en curso, siga los mismos pasos que para promocionar un agente de réplicas, seleccione la opción de conmutación por error y confirme.

Nota: Si se devuelve al agente principal original, los mensajes que no se repliquen del agente principal al agente de réplicas durante la conmutación por error seguirán existiendo en el agente principal. Por lo tanto, los consumidores deben gestionar estos mensajes. Recomendamos hacer un seguimiento de los ID de los mensajes procesados en un almacén de datos, como las tablas globales de Amazon DynamoDB, y comparar el mensaje con los ID de los mensajes procesados.

Si ya no necesita replicar los datos de los agentes entre regiones o si necesita eliminar un agente principal o de réplicas, debe desvincular el agente de réplicas y reiniciar el agente principal. Puede desvincular el agente de réplicas en la consola de Amazon MQ siguiendo el procedimiento Eliminar un agente de CRDR.

Para desvincular el agente mediante la interfaz de línea de comandos de AWS (CLI de AWS), ejecute el siguiente comando y sustituya el --broker-id por el ID de su agente principal:

aws mq update-broker --broker-id <primary broker ID> \
--data-replication-mode "NONE" \
--region us-east-1

Conclusión

El uso de la función de replicación de datos entre regiones de Amazon MQ para ActiveMQ proporciona una forma sencilla de implementar la replicación entre regiones para mejorar la resiliencia de su arquitectura y cumplir con sus requisitos de continuidad empresarial y recuperación ante desastres. En esta publicación, se explica cómo funciona la replicación de datos entre regiones en Amazon MQ, cómo configurar un agente de réplicas entre regiones y cómo probar y promocionar el agente de réplicas.

Para obtener más información, consulte la documentación de Amazon MQ.

Para obtener más recursos de aprendizaje sin servidor, visite Serverless Land.

Blog original: Introducing Amazon MQ cross-Region data replication for ActiveMQ brokers