6

Ciao a creare tre server RabbitMQ in esecuzione nel cluster su EC2Come caricare la distribuzione nel cluster RabbitMQ?

Voglio scalare fuori RabbitMQ base di cluster su utilizzo della CPU, ma quando pubblico un messaggio solo un server utilizza CPU e altri RabbitMQ-server non utilizzano CPU

così come posso distribuire il carico attraverso il cluster RabbitMQ

risposta

9

I cluster RabbitMQ sono progettati per migliorare la scalabilità, ma il sistema non è completamente automatico.

Quando si dichiara una coda su un nodo in un cluster, la coda viene creata solo su tale nodo. Pertanto, se si dispone di una coda, indipendentemente dal nodo che si pubblica, il messaggio si troverà sul nodo in cui si trova la coda.

Per utilizzare correttamente cluster RabbitMQ, è necessario assicurarsi di fare le seguenti cose:

  • sono più code distribuiti tra i nodi, in modo tale che il lavoro è distribuito un po 'in modo uniforme,
  • collegare i vostri clienti a nodi diversi (altrimenti, si potrebbe finire per incanalare tutti i messaggi attraverso un nodo), e
  • se possibile, provare ad avere utenti/consumatori che si connettono al nodo che detiene la coda che stanno utilizzando (per ridurre al minimo i trasferimenti di messaggi) all'interno del cluster).

In alternativa, dare un'occhiata a High Availability Queues. Sono come le normali code, ma i contenuti delle code sono specchiati su diversi nodi. Quindi, nel tuo caso, tu pubblicheresti su un nodo, RabbitMQ replicherà le pubblicazioni sull'altro nodo e i consumatori potranno connettersi a entrambi i nodi senza preoccuparsi di impantanare il cluster con i trasferimenti interni.

+0

Ciao, scvalex. per "avere più code distribuite sui nodi, in modo tale che il lavoro sia distribuito in modo uniforme", è necessario aggiungere un server linux per eseguire il programma di bilanciamento del carico per risolvere il programma? O è necessario modificare il codice sorgente dell'applicazione per aggiungere "rabbitmq" a tutti i nodi con le informazioni sul nome da programmare per il bilanciamento del carico? –

+1

Direi "modificare il codice sorgente dell'applicazione per aggiungere" rabbitmq "a tutti i nodi, le informazioni sul nome da programmare per il bilanciamento del carico", ma ci sono alcune persone che hanno utilizzato i bilanciatori del carico con successo. – scvalex

+0

Prima di trovare il tuo post, penso che rabbitmq sia molto potente. Ma dopo, penso che non sia automatico come hai detto tu. Non è facile da usare. –