3服务器Kafka群集写入3个Logstash实例

时间:2017-03-16 14:13:16

标签: apache-kafka logstash

我目前有一个由3台服务器组成的kafka集群:

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

我在server1上的cmd行中发布了此命令,并确认该主题正在运行。 我有一个使用此配置在每个服务器上运行的logstash实例

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实例似乎正在写入syslog。其他两个人坐在那里闲聊。

有没有办法强制每个logstash行动?我的分区/消费者线程数#是否正确?

谢谢, 卡兰

1 个答案:

答案 0 :(得分:2)

Kafka一次只允许一个消费者从任何给定的分区读取。您只使用一个分区创建了主题,因此能够从该主题(对于消费者组)读取的最大消费者数量是一个 - 这就是您所看到的。

如果您杀死正在写入数据的Logstash,您应该看到其他两个中的一个拾取和处理数据。

要让所有三个人获得公平分享的数据,您需要将主题更改为至少有三个分区。