Kafka 集群部署

时间:2021-04-02 21:15:38

kafka是一个分布式消息队列,需要依赖ZooKeeper,请先安装好zk集群

kafka安装包解压

$ tar xf kafka_2.-0.9.0.1.tgz
$ mv kafka_2.-0.9.0.1 /usr/kafka
$ cd /usr/kafka

配置文件

server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id= # Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=node1:,node2:,node3:

规划有3个节点,broker的id应该不同
node1为broker.id=0
node2为broker.id=1
node3为broker.id=2

node1上复制kafka目录到其他节点

$ scp -r /usr/kafka node2:/usr/
$ scp -r /usr/kafka node3:/usr/

node2、node3上替换broker.id

$ sed -i -e 's/broker.id=.*/broker.id=1/' /usr/kafka/config/server.properties
$ sed -i -e 's/broker.id=.*/broker.id=2/' /usr/kafka/config/server.properties

可以配置环境变量,可选

export KAFKA_HOME=/usr/kafka
PATH=$PATH:$KAFKA_HOME/bin

启动kafka
1、在3个节点启动ZooKeeper
2、在3个节点启动kafka

$ bin/kafka-server-start.sh config/server.properties

测试
创建话题,使用kafka-topics.sh

$ kafka-topics.sh --zookeeper node1:,node2:,node3: --topic test --replication-factor  --partitions  --create
$ kafka-topics.sh --zookeeper node1:,node2:,node3: --list
$ kafka-topics.sh --zookeeper node1:,node2:,node3: --describe --topic test

创建生成者和消费者
在任意节点上开启生成者

$ bin/kafka-console-producer.sh --broker-list node1:,node2:,node3: --topic test

可以在多个节点上开启多个消费者

$ bin/kafka-console-consumer.sh --zookeeper node1:,node2:,node3: --from-beginning --topic test 

--from-beginning 表示从最早开始获取队列的数据
消费几条数据后,执行下面的语句,看看是否从头开始,以及不同partition返回数据无序性

$ bin/kafka-console-consumer.sh --zookeeper node1:,node2:,node3: --topic test

返回数据是无序的。