我一直在尝试分布式流媒体平台 Apache Kafka,但我在它的“分布式”方面遇到了困难。
我正在使用here的示例,当所有内容都在同一台计算机上时,该示例可以正常工作。但我想将它作为具有 2 个或更多虚拟机的集群来运行
到目前为止我所做的:
通过将以下内容添加到/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
会得到 1 个 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')
我想做的事:
以允许我在不同虚拟机上运行 2 个或更多代理作为集群的方式配置我的 Kafka。
我的设置:
我花了一些时间才找到解决方案,因为大多数教程都没有涉及集群部分或在一台机器而不是多台机器上展示它:
需要做的就是将此行添加到
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
我使用 vagrant box 进行集群设置。 其中有 3 台使用 Zookeeper 以 quorom 模式安装的机器。 其中有 3 个 kafka 代理,一台机器带有 kafka 管理器,另一台机器带有 kafka 注册表。
您所要做的就是下载并执行
vagrant up
。
https://github.com/rajcspsg/VBoxes/blob/master/kafka-platform-centos/Vagrantfile
在此链接中参考设置 kafka 集群:https://github.com/arliputraa/kafka-cluster-configuration