1.环境
centos 7,jdk 1.8,kafka_2.11-2.0.0
2.单节点搭建
在kafka官网下载对应版本的安装包,解压
tar -zvxf kafka_2.11-2.0.0.tgz -C /opt/
cd /opt
ln -s kafka_2.11-2.0.0/ kafka
kafka需要在zookeeper上注册自己的节点信息,故需要先启动一个zookeeper,这里不再阐述zk的安装,详见zookeeper集群搭建。
笔者之前已经搭建好一个三个节点的zk集群,首先启动zk集群,然后可直接启动单节点的kafka
cd /opt/kafka/bin
./kafka-server-start
.sh ../config
/server
.properties
(提示:zk的默认端口是2181,如果修改了端口,需要在server.properties中将zookeeper.connect值修改为对应的ip:port)
至此,单节点搭建完成
3.集群搭建
官网介绍的集群搭建方法,是在同一台机器部署多个实例,但笔者需要在同一局域网不同机器上部署。理论上来说方法应该是一样的。
首先,修改master节点的kafka配置文件server.properties
为保证集群正常运行,先只修改4个配置项,master节点配置:
broker.id=0
listeners=PLAINTEXT://master:9092
log.dirs=/data/kafka/log
zookeeper.connect=master:2181,slave1:2181,slave2:2181
将kafka文件拷贝到slave1和slave2节点上,分别修改配置,
slave1配置:
broker.id=1
listeners=PLAINTEXT://slave1:9092
log.dirs=/data/kafka/log
zookeeper.connect=master:2181,slave1:2181,slave2:2181
slave2配置:
broker.id=2
listeners=PLAINTEXT://slave2:9092
log.dirs=/data/kafka/log
zookeeper.connect=master:2181,slave1:2181,slave2:2181
broker.id:kafka broker的唯一标识
listeners:监听的url列表
log.dirs:日志路径
zookeeper.connect:zk访问路径集合,可根据实际情况配置
配置完成后,启动kafka集群,为方便一次性启动集群,编写脚本执行
usage="Usage: $0 (start|stop)"
if [ $# -lt 1 ]; then
echo $usage
exit 1
fi
behave=$1
echo "$behave kafka cluster..."
#主机名称
for i in master slave1 slave2
do
#使用ssh进行启动
script=""
if [ $1 == 'start' ];then
script="kafka-server-start.sh /opt/kafka/config/server.properties 1>/data/kafka/log/kafka.out 2>&1 &"
fi
if [ $1 == 'stop' ];then
script="kafka-server-stop.sh"
fi
ssh root@$i "/opt/kafka/bin/$script"
done
exit 0
1>/data/kafka/log/kafka.out 2>&1 &表示后台启动,将标准输出和错误输出到kafka.out文件
启动成功后,创建一个测试topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
然后查看topic
kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
可以看到,该topic有一个分片,3个冗余备份,broker1被选举为leader,备份在0,1,2三个节点