2010-08-05 20 views
10

RabbitMQ admite clústeres de forma predeterminada, pero las colas no se replican y están vinculadas al nodo en el que se crearon. Ahora estoy buscando formas de hacer RabbitMQ altamente disponible que no sea la solución DRBD que han documentado, porque parece una pérdida de recursos reservar un servidor completo que no hace más que esperar a que el servidor activo se apague.¿Cómo hacer que las colas RabbitMQ conmuten por error?

Estoy pensando en una configuración en la que hay dos colas. Cuando se publica un mensaje, quiero que el clúster RabbitMQ envíe el mensaje a cualquiera de las dos colas, cualquiera que esté arriba. Sé que el editor obtendrá un error si intenta publicar en una cola inactiva y que el editor puede volver a intentarlo con la otra cola, pero me pregunto si esto se puede hacer automáticamente en el nivel del clúster para que yo no pueda No tiene que escribir el código del cliente para manejarlo. Se puede hacer esto?

Respuesta

5

Eche un vistazo a Alternate Exchanges.

Básicamente es lo que pediste, pero con intercambios en lugar de colas. La idea sería publicar en un intercambio con un intercambio alternativo especificado (puede hacerlo con cualquiera de los clientes de RabbitMQ). Si el mensaje se puede entregar al primero, lo hará. Si no (porque no se puede alcanzar o porque no hay colas vinculadas), se usa la alternativa.

11

Recientemente, RabbitMQ agregó compatibilidad nativa activa/activa. http://www.rabbitmq.com/ha.html

+0

¿Cómo sería esto mejor que un intercambio alternativo? – guiomie

+0

@guiomie, en Exchange alternativo, si el nodo maestro falla, todos los mensajes desaparecen. La configuración activa/activa copiará cada mensaje en el servidor de repuesto cuando se envía al maestro. –

4

La alta disponibilidad también conocida como "reflejados" es el estándar de oro para Rabbit HA.

Cuestiones relacionadas