你的位置:首页 > 数据库

[数据库]Kafka 集群部署


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

 

kafka安装包解压

$ tar xf kafka_2.10-0.9.0.1.tgz$ mv kafka_2.10-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=0# 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:2181,node2:2181,node3:2181

 

规划有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/kafkaPATH=$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:2181,node2:2181,node3:2181 --topic test --replication-factor 2 --partitions 3 --create$ kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --list$ kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --describe --topic test

 

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

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

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

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

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

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

返回数据是无序的。