我一直在尝试使用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: leader
和Mode: 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个或更多代理。
我的设置:
答案 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