Question

J'utilise LOGSTASH et ElasticSeSearch pour créer un système de journal. Rabbbitmq utilisé pour faire la queue Message du journal entre deux brapshs.

Le chemin de message est comme ci-dessous:

source log -> logstash -> rabbitMQ -> logstash(parse) -> elasticsearch

Mais je comprends que, peu importe la quantité de machine que j'ai ajoutée à rabbbitmq, il utilise simplement une ressource machine pour traiter les messages.

J'ai trouvé un élément d'article dire que le cluster augmente simplement la fiabilité et la redondance pour empêcher le message perdu.

Mais ce que je veux, c'est d'augmenter le débit de grappe de lapbitmq entier (dans et out) en ajoutant plus de machine.

Comment configurer mon groupe RabbitMQ pour augmenter le débit informatique?

Tous les commentaires sont appréciés.

-

ps. Je dois ajouter plus d'informations ici.

Dans ma limite de mon système I Test est, peut recevoir des messages de 7000 / S et une sortie de 500 / s de sortie 1700 / S dans 4 systèmes de grappes de machine, mais ne permet pas d'activer HA et de simplement lier 1 échange à 1 file d'attente et la file d'attente vient de se lier à 1 noeud. Je suppose qu'une file d'attente 1 liaison à 1 noeud est le goulot d'étranglement du débit. Et c'est difficile à modifier la clé de routage maintenant, nous n'avons donc qu'une seule clé de routage et que vous souhaitez distribuer un message à différents nœuds pour accroître le débit du système complet.

ci-dessous est mon configuration de Logstash-indexer

rabbitmq {
codec       => "json"
auto_delete => false
durable     => true
exchange    => "logstash-exchange"
key         => "logstash-routingKey"
queue       => "logstash-queue"
host        => "VIP-of-rabbitMQ"
user        => "guest"
password    => "guest"

passive     => false
exclusive   => false


threads     => 4
prefetch_count => 512   }

Était-ce utile?

La solution

Vous devez ajouter plus de files d'attente.Je suppose que vous n'utilisez qu'une seule file d'attente.Donc, dans un autre mot, vous avez attaché à un processus Erlang.Ce que vous voulez, utilisez plusieurs files d'attente:

Voici un exemple rapide et sale Comment ajouter une certaine logique à la connexion à la connexion à envoyer un message à une file d'attente différente:

filter {

  # check if path contains source subfolder
  if "foo" in [path] {
    mutate { add_field => [ "source", "foo"] }
  }
  else if "bar" in [path] {
    mutate { add_field => [ "source", "bar"] }
  }
  else {
    mutate { add_field => [ "source", "unknown"] }
  }
}

Puis dans votre sortie:

  rabbitmq {
    debug => true
    durable => true
    exchange_type => "direct"
    host => "your_rabbit_ip"
    key => "%{source}"
    exchange => "my_exchange"
    persistent => true
    port => 5672
    user => "logstash"
    password => "xxxxxxxxxx"
    workers => 12
  }

Mise à jour:

Regardez les référentiels que ce gars a: https://github.com/simonmacmullen

Je suppose que vous allez être intéressé par celui-ci: https://github.com/simonmacmullen/random-exchange

This exchange type is for load-balancing among consumers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top