Pregunta

Estoy usando LogSTASH y ELASTICSEARCH para construir un sistema de registro. RabbitMQ usó para colar el mensaje de registro entre dos logstashs.

La ruta del mensaje es como a continuación:

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

Pero averigüe que, no importa cuánta máquina agregue a RabbitMQ, solo use un recurso de máquina para procesar mensajes.

Me pareció que un artículo dice que el cluster simplemente aumenta la confiabilidad y la redundancia para evitar el mensaje perdido.

Pero lo que quiero es aumentar el rendimiento completo del clúster de Rabbitmq (dentro y fuera) agregando más máquina.

¿Cómo configuro mi clúster de Rabbitmq para aumentar el rendimiento?

Se aprecian cualquier comentario.

-

ps. Necesito agregar más información aquí.

En mi límite de sistema. La prueba I es, puede recibir mensajes de 7000 / S y enviar mensajes 1700 / s de 7000 / s en un sistema de clúster de 4 máquinas, pero no habilitar HA y simplemente vincular a 1 intercambio a 1 cola y la cola solo se une a 1 nodo. Supongo que 1 cola enlace a 1 nodo es el cuello de botella del rendimiento. Y es difícil cambiar la clave de enrutamiento ahora, por lo que tenemos una clave de enrutamiento y queremos distribuir un mensaje a diferentes nodos para aumentar el rendimiento del sistema completo.

a continuación es mi configuración de índice de logsash-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   }

¿Fue útil?

Solución

Necesitas agregar más colas.Supongo que usas solo una cola.Así, en otra palabra, atado a un proceso de Erlang.Lo que desea es usar colas múltiples:

Aquí hay un ejemplo rápido y sucio Cómo agregar algo de lógica a LogSTASH para enviar un mensaje a una cola diferente:

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"] }
  }
}

luego en su salida:

  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
  }

Actualizado:

Eche un vistazo a los repositorios que este tipo tiene: https://github.com/simonmacmullen

Supongo que estarás interesado en este: https://github.com/simonmacmullen/random-exchange

This exchange type is for load-balancing among consumers.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top