Come rimuovere automaticamente un nodo morto dal cluster RabbitMQ


11

Sto progettando di creare il cluster RabbitMQ usando Ansible su AWS VPC con bilanciamento del carico interno Amazon come frontend per puntare le connessioni ad esso.

Qualche suggerimento su come rimuovere un nodo morto dal cluster RabbitMQ in base alla regola di scalabilità automatica in cui i nodi possono andare su e giù o se si utilizzano istanze spot?

Quando un nodo si arresta, RabbitMQ non lo rimuove automaticamente dall'elenco di repliche, posso vedere Node not runningnell'interfaccia utente di gestione.

Sono riuscito a unire automaticamente al cluster un'istanza in scala tramite Ansible e userdata.

Diagramma dell'infrastruttura


@ Pierre.Vriens, sono passato a una sola domanda, grazie.
Berlino,

Merci! Non hai distrutto le altre 4 (o così) domande che spero. Forse tenerli come domanda folowup, nella misura in cui sono ancora rilevanti?
Pierre.Vriens

Sì, le domande sono ancora pertinenti, ma questa è la più importante. In seguito posterò un'altra domanda :) grazie!
Berlino,

1
@Berlino Ho disegnato un diagramma che rappresenta ciò che penso tu stia descrivendo, se volevi dire qualcos'altro, per favore fammi sapere e mi adatterò.
Richard Slater,

1
Ehi @ Pierre.Vriens - Non mi dispiace aver avuto qualche minuto e volevo chiarire il mio presupposto, teoricamente, potrei aggiungerlo alla mia risposta, e potrei farlo.
Richard Slater,

Risposte:


4

Prendi in considerazione l'utilizzo del plugin rabbitmq / rabbitmq-autocluster :

Un plug-in RabbitMQ che raggruppa automaticamente i nodi utilizzando una serie di meccanismi di rilevazione peer:

  • Console ,
  • etcd2
  • Record DNS A.
  • Tag AWS EC2
  • Gruppi di scalabilità automatica AWS

C'è un bel po 'di configurazione da collegare per ottenere questa impostazione, inclusa l'impostazione dei criteri IAM e l'aggiunta di tag EC2 alle istanze che si desidera far parte del cluster.

Se dovessi utilizzare i gruppi di scalabilità automatica AWS, aggiungere quanto segue al tuo rabbitmq.config:

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_autoscaling, true},
    {aws_ec2_region, "us-west-2"}
  ]}
].

Se non stai utilizzando i gruppi di scalabilità automatica AWS, puoi comunque ottenere il risultato desiderato usando i tag sulle tue istanze EC2:

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
    {aws_ec2_region, "us-east-1"},
    {aws_access_key, "..."},
    {aws_secret_key, "..."}
  ]}
].

Detto questo, consiglio vivamente di utilizzare Consul by HashiCorp come meccanismo di individuazione del servizio, a lungo termine, otterrete una flessibilità significativamente maggiore in termini di disaccoppiamento tra le parti del sistema.


grazie per la spiegazione dettagliata e il diagramma, quindi AFAIK rabbitmq/rabbitmq-autocluster pluginsaprà anche rimuovere il nodo dall'elenco di replica una volta che il nodo è inattivo, un'altra cosa se posso chiedere, ho pensato di iniziare con il 2-nodecluster, suggerisci di iniziare con il 3-nodecluster come descrivi nel tuo diagramma con la politica `rabbitmqctl set_policy ha-all" "'{" ha-mode ":" all "," ha-sync-mode ":" automatic "}'`? o dovrei pubblicarlo in un'altra domanda?
Berlino,

1
Forse un'altra domanda in quanto la formattazione nei commenti non è poi così facile da usare. Ho sempre consigliato ai clienti di adottare il cloud di utilizzare un numero maggiore di piccole istanze anziché il contrario. Questo perché si prevede un errore nel cloud, se si dispone di un cluster a 2 nodi e 1 errore si è perso il 50% della capacità, mentre se si dispone di un cluster a 3 nodi e 1 errore si perde solo il 33%.
Richard Slater,

Ho configurato il mio cluster usando rabbitmq/rabbitmq-autocluster plugine funziona abbastanza bene, tuttavia quando il nodo non funziona RabbitMQ non lo rimuove dall'elenco di repliche, hai idea del perché?
Berlino,

1
Hai abilitato l'opzione di configurazione Pulizia cluster?
Richard Slater,

grazie, l' https://github.com/aweber/rabbitmq-autocluster/wiki/General-Settingsho trovato , ci proverò.
Berlino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.