设置Apache Kafka群集

时间:2018-11-06 21:41:57

标签: apache-kafka apache-zookeeper

我一直在尝试使用Apache Kafka(分布式流媒体平台),但是在它的“分布式”方面却遇到了困难。

我正在使用示例here,当所有内容都在同一台计算机上时,它可以很好地工作。但我想将其作为具有2个或更多VM的集群来运行

到目前为止,我设法做到了:

  • 使用仅主机适配器正确设置虚拟机。
  • 通过将以下内容添加到/etc/zookeeper/conf/zoo.fcg中来设置Zookeeper群集(Rajkumar Natarajan指出的仲裁模式):

    server.1=192.168.56.101:2888:3888
    server.2=192.168.56.102:2888:3888
    

    ,并确保myid中的/var/lib/zookeeper对于每个服务器都是唯一的。运行bin/zkServer.sh status会给其余一个Mode: leaderMode: follower

  • 通过更改config/server.properties中的以下内容来设置Kafka集群:

    broker.id=0 # 1 for the second server
    zookeeper.connect=192.168.56.101:2181,192.168.56.102:2181
    
  • 在Python中设置Sonsumer:

    from kafka import KafkaConsumer
    consumer = KafkaConsumer(
        topic, 
        bootstrap_servers=['192.168.56.101:9092','192.168.56.102:9092'])
    
  • 在Python中设置生产者:

    from kafka import KafkaProducer
    producer = KafkaProducer(bootstrap_servers='192.168.56.101:9092,192.168.56.102:9092')
    

我想做什么:

配置Kafka的方式允许我在不同的VM上作为群集运行2个或更多代理。

我的设置:

  • 主机:带有VirtualBox 5.2.20的Windows 10(1803)
  • 客人:Ubuntu 18.04,Kafka 2.0.0

2 个答案:

答案 0 :(得分:0)

我有使用游民专用框的集群设置。 它有3台使用quorom模式安装的zookeeper的机器。 其中有3个kafka经纪人,一台带有kafka管理器的计算机,另一台带有kafka注册表的计算机。

您所要做的全部下载并执行vagrant up

https://github.com/rajcspsg/VBoxes/blob/master/kafka-platform-centos/Vagrantfile

也请提供您的评论。

答案 1 :(得分:0)

我花了一些时间来找到解决方案,因为大多数教程都没有介绍集群部分,或者将其展示在一台机器上而不是几台机器上。

所有需要做的就是将此行添加到config/server.properties

listeners=PLAINTEXT://192.168.56.101:9092 # for broker.id=0
listeners=PLAINTEXT://192.168.56.102:9092 # for broker.id=1