Opciones de implementación de Amazon MQ para agentes de RabbitMQ
Los agentes de RabbitMQ se pueden crear como agentes de una sola instancia o en una implementación de clúster. Para ambos modos de implementación, Amazon MQ proporciona un alto nivel de durabilidad, ya que almacenan sus datos de forma redundante.
Para acceder a sus agentes de RabbitMQ, utilice cualquier lenguaje de programación compatible con RabbitMQ
Temas
Opción 1: Agente de una sola instancia de Amazon MQ para RabbitMQ
Un agente de una sola instancia está compuesto por un agente en una zona de disponibilidad situada detrás de un balanceador de carga de red (NLB). El agente se comunica con su aplicación y con un volumen de almacenamiento de Amazon EBS. Amazon EBS proporciona almacenamiento a nivel de bloque optimizado para baja latencia y alto rendimiento.
El uso de un balanceador de carga de red garantiza que el punto de enlace del agente de Amazon MQ para RabbitMQ permanezca sin cambios en el caso de que se reemplace la instancia del agente durante un periodo de mantenimiento o debido a errores de hardware subyacentes de Amazon EC2. Un balanceador de carga de red permite que las aplicaciones y los usuarios continúen utilizando el mismo punto de enlace para conectarse con el agente.
El siguiente diagrama ilustra un agente de una sola instancia de Amazon MQ para RabbitMQ.
Opción 2: Implementación de un clúster de Amazon MQ para RabbitMQ
Una implementación de clúster es una agrupación lógica de tres nodos de agente de RabbitMQ situados detrás de un balanceador de carga de red, cada uno de los cuales comparte usuarios, colas y un estado distribuido entre varias zonas de disponibilidad (AZ).
En una implementación de clúster, Amazon MQ administra automáticamente las políticas de agente para habilitar la replicación clásica en todos los nodos, lo que garantiza una alta disponibilidad. Cada cola replicada consta de un nodo principal y uno o más espejos. Cada cola tiene su propio nodo principal. Todas las operaciones de una cola en particular se aplican primero en el nodo principal de la cola y, a continuación, se propagan a los espejos. Amazon MQ crea una política predeterminada del sistema que configura ha-mode
en all
y ha-sync-mode
en automatic
. Esto garantiza que los datos se repliquen en todos los nodos del clúster a través de diferentes zonas de disponibilidad para lograr mayor durabilidad.
nota
Durante un periodo de mantenimiento, todo el mantenimiento de un clúster se realiza de a un nodo por vez, con dos nodos como mínimo en funcionamiento en todo momento. Cada vez que se desactiva un nodo, las conexiones de cliente a ese nodo se cortan y deben restablecerse. Debe asegurarse de que el diseño del código de cliente le permita volver a conectarse automáticamente al clúster. Para obtener más información acerca de la recuperación de la conexión, consulte Recuperación automática de fallas de red.
Dado que Amazon MQ configura ha-sync-mode: automatic
durante un periodo de mantenimiento, las colas se sincronizarán cuando cada nodo vuelva a conectarse al clúster. La sincronización de colas bloquea a todas las demás operaciones de cola. Para mitigar el impacto de la sincronización de colas durante los periodos de mantenimiento, puede mantener las colas cortas.
No se debe eliminarse la política predeterminada. Si se elimina, Amazon MQ volverá a crearla automáticamente. Además, Amazon MQ garantizará que las propiedades de alta disponibilidad se apliquen a todas las demás políticas que cree en un agente agrupado. Si agrega una política sin las propiedades de alta disponibilidad, Amazon MQ las agregará por usted. Si agrega una política con diferentes propiedades de alta disponibilidad, Amazon MQ las reemplazará. Para obtener más información acerca de la replicación clásica, consulte el tema sobre colas replicadas clásicas
El siguiente diagrama ilustra un agente de RabbitMQ con implementación de clúster con tres nodos en tres zonas de disponibilidad (AZ), cada uno con su propio volumen de Amazon EBS y un estado compartido. Amazon EBS proporciona almacenamiento a nivel de bloque optimizado para baja latencia y alto rendimiento.