문제

Logstash와 Elasticsearch를 사용하여 로그 시스템을 구축합니다. rabbitmq는 두 개의 logstashs간에 로그 메시지를 대기열에 큐에 사용했습니다.

메시지 경로는 다음과 같습니다 :

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

그러나 RABBITMQ에 얼마나 많은 기계를 추가하는지에 관계없이 하나의 기계 자원을 사용하여 메시지를 처리합니다.

나는 클러스터가 잃어버린 메시지를 예방하기 위해 클러스터가 신뢰성과 중복을 증가시키는 것을 발견했습니다.

그러나 내가 원하는 것은 기계를 더 추가하여 전체 Rabbitmq 클러스터의 처리량 (안팎으로)을 증가시킵니다.

rabbitmq 클러스터를 어떻게 구성하여 IT 처리량을 늘리려면?

모든 의견을 높이 평가합니다.

-

ps. 여기에 더 많은 정보를 추가해야합니다.

내 시스템 제한 사항 I 테스트는 7000 / s 메시지를 수신하고 4 개의 기계 클러스터 시스템에서 1700 / s 메시지를 출력 할 수 있지만 HA를 활성화 할 수 없으며 1 개의 Exchange를 1 대기열로 바인딩하고 큐가 1 노드에 바인딩됩니다. 1 큐 바인딩 1 노드에 대한 큐가 처리량 병목 현상입니다. 그리고 이제 라우팅 키를 변경하기가 어렵 기 때문에 하나의 라우팅 키가 있으므로 전체 시스템 처리량을 늘리기 위해 다른 노드에 메시지를 배포하려고합니다.

아래의 logstash-indexer config

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   }
.

도움이 되었습니까?

해결책

더 많은 대기열을 추가해야합니다.나는 당신이 하나의 대기열 만 사용하는 것 같아요.그래서 다른 단어에서는 하나의 erlang 과정에 묶여 있습니다.원하는 것은 여러 대기열을 사용합니다.

여기에 다른 대기열에 메시지를 보내려면 Logstash에 일부 논리를 추가하는 방법은 빠르고 더러운 예입니다.

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

그런 다음 출력 :

  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
  }
.

업데이트 :

이 사람이 가지고있는 저장소를 살펴보십시오. https://github.com/simonmacmullen

이 일에 관심이있을 것 같아요. https://github.com/simonmacmullen/random-exchange

This exchange type is for load-balancing among consumers.
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top