2017-03-16 78 views
0
的3个实例

我现在有3台服务器与此卡夫卡集群设置:3服务器卡夫卡集群写入Logstash

bin/kafka-topics.sh --create --zookeeper server1.com:2181, 
server2.com:2181,server3.com:2181 --replication-factor 3 --partitions 1 --topic kafkatest3 

我张贴在Server1上的CMD线这个命令并得到确认的话题是运行。 我必须在每台服务器上运行这一配置

input { 
      kafka 
      { 
        bootstrap_servers => "server1.com:2181,server2.com:2181,server3.com:2181" 
        topics => "kafkatest3" 
        consumer_threads => 3 
        #group_id => "logstash" 
      } 
    } 
    output 
    { 
      syslog 
      { 
        host => ["syslogserver.com"] 
        port => 514 
      } 
    } 

我把什么与此配置不断看到logstash的一个实例是,只有一个logstash实例似乎书面方式到系统日志。另外两个人无所事事地坐在那里。

有没有办法来强制每个logstash付诸行动?我的#个分区/客户线程数是否正确?

感谢, 卡兰

回答

1

卡夫卡只允许一次一个消费者从任何给定的分区读取。您仅使用一个分区创建了主题,因此可以从该主题(针对消费者群体)读取的最大消费者数量为一个 - 这就是您所看到的。

如果你杀了那个被写入数据的Logstash你应该看到另外两个中的一个拿起和处理数据。

要获得全部三个得到你需要改变你的主题,至少有三个分区中的数据的公平份额。

+0

所以,如果我有3个分区,我需要对每个logstash比如3,消费者线程或只是各1个?我还需要声明组“logstash”以避免输出端出现重复?谢谢。 – ScipioAfricanus

+0

我不知道是什么Logstash内部做,但我相信它使用每一个Logstash消费对象,然后分享跨工作者线程。如果这个假设是正确的,你可以拥有尽可能多的工作线程。但是3个分区可以支持同一个消费群的消费者总数为3,消费者将闲置。 组默认为logstash,这就是为什么这应该工作开箱即用,但我推荐设置到,告诉你一些事情,以避免混淆明确的价值。 –

+0

感谢您的回复。负载平衡工作得很好。谢谢。 – ScipioAfricanus