web-dev-qa-db-fra.com

Fonctionnement de l'équilibreur de charge dans RabbitMQ

Je suis nouveau sur RabbitMQ, alors veuillez m'excuser pour des questions triviales:

1) En cas de clustering dans RabbitMQ, si un nœud échoue, chargez le décalage vers un autre nœud (sans arrêter les autres nœuds). De même, nous pouvons également ajouter de nouveaux nœuds au cluster existant sans arrêter les nœuds existants dans le cluster. Est-ce exact?

2) Supposons que nous commençons avec un seul nœud rabbitMQ et que nous créons 100 files d'attente dessus. Maintenant, les producteurs ont commencé à envoyer des messages à un rythme plus rapide. Pour gérer cette charge, nous ajoutons plus de nœuds et créons un cluster. Mais les files d'attente existent uniquement sur le premier nœud. Comment la charge est-elle équilibrée entre les nœuds maintenant? Et si nous devons ajouter plus de files d'attente, sur quel nœud devrions-nous les ajouter? Ou pouvons-nous les ajouter à l'aide de l'équilibreur de charge.

Merci d'avance

17
Pragmatic

1) En cas de clustering dans RabbitMQ, si un nœud échoue, chargez le décalage vers un autre nœud (sans arrêter les autres nœuds). De même, nous pouvons également ajouter de nouveaux nœuds frais au cluster existant sans arrêter les nœuds existants dans le cluster. Est-ce exact?

Si un nœud sur lequel la file d'attente a été créée échoue, rabbitmq élira un nouveau maître pour cette file d'attente dans le cluster tant que la mise en miroir de la file d'attente est activée. Le clustering fournit une haute disponibilité basée sur une stratégie que vous pouvez définir.

2) Supposons que nous commençons avec un seul nœud rabbitMQ et que nous créons 100 files d'attente dessus. Maintenant, les producteurs ont commencé à envoyer des messages à un rythme plus rapide. Pour gérer cette charge, nous ajoutons plus de nœuds et créons un cluster. Mais les files d'attente existent uniquement sur le premier nœud. Comment la charge est-elle équilibrée entre les nœuds maintenant?

La charge n'est pas équilibrée. Le cluster distribué fournit HA et non l'équilibrage de charge. Vos demandes seront redirigées vers le nœud du cluster sur lequel réside la file d'attente.

Et si nous devons ajouter plus de files d'attente, sur quel nœud devrions-nous les ajouter? Ou pouvons-nous les ajouter à l'aide de l'équilibreur de charge.

Cela dépend de votre cas d'utilisation. Certaines personnes utilisent un tournoi à la ronde et créent des files d'attente sur des nœuds distincts.

En résumé

  • Pour HA, utilisez mise en miroir dans le cluster.
  • Pour équilibrer la charge entre les nœuds, utilisez un LB pour répartir entre les files d'attente .
  • Si vous souhaitez équilibrer la charge de la file d'attente, jetez un œil à Federated Queues . Ils vous permettent de récupérer des messages dans une file d'attente en aval à partir d'une file d'attente en amont.
19
Deepak Bala