前言:
按照kafka的文档,搭建一个三个host的集群。当然和kafka的文档还是有区别的:
1). 未使用kafka自带的zookeeper
2). kafka文档是一个host的三个进程, 这里是使用三个host(vm),每个host运行一个kafka
准备:
三个vm,分别为node1, node2, node3。 centos 7.3 (之前在弄docker,所以就用了7.3的版本)
/etc/hosts(三个vm)
192.168.1.121 node1 192.168.1.122 node2 192.168.1.123 node3
Let‘s GO!
一. 搭建ZooKeeper集群
zookeeper集群相对简单,要准备两个文件:
conf/zoo.cfg, myid(所在目录由conf/zoo.cfg里的dataDir来指定)
conf/zoo.cfg
dataDir=/data/zookeeper ... server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888
node1: /data/zookeeper/myid
1
node2: /data/zookeeper/myid
2
node3: /data/zookeeper/myid
3
启动(三台vm都启动)
# bin/zkServer.sh start
查看zookeeper是leader还是follower
# bin/zkServer.sh status
# Mode: leader( or follower)
关闭
# bin/zkServer.sh stop
二.搭建kafka集群
解压,
# tar zvxf kafka.....tar.gz
三台vm都创建目录 /data/kafka-log:
# mkdir /data/kafka-log
配置文件 config/server.properties
node1:
broker.id=1 listeners=PLAINTEXT://node1:9092 log.dir=/data/kafka-log zookeeper.connect=node1:2181,node2:2181,node3:2181
node2:
broker.id=2 listeners=PLAINTEXT://node2:9092 log.dir=/data/kafka-log zookeeper.connect=node1:2181,node2:2181,node3:2181
node3:
broker.id=3 listeners=PLAINTEXT://node3:9092 log.dir=/data/kafka-log zookeeper.connect=node1:2181,node2:2181,node3:2181
启动kafka不需要指定zookeeper, 三台vm
bin/kafka-server-start.sh config/server.property &
因为vm内存1G, kafka-server-start.sh默认为1G, 所以启动显示内存不足,改 bin/kafka-server-start.sh:
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" fi
这样三台vm就启动了。
建topic
bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic Created topic "my-replicated-topic".
看了一下zookeeper, topic保存在zookeeper的 /brokers节点
向topic输入数据:
bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic my-replicated-topic > my test message 1 > my test messsage 2 > this is a test message
ctrl + c 退出
消费者取出数据:
bin/kafka-console-consumer.sh --bootstrap-server node3:9092 --from-beginning --topic my-replicated-topic ... my test message 1 my test messsage 2 this is a test message
流水帐似的记录,只为忘了的时候,看一眼,提个醒。