选举依赖于zookeeper,所以前提需要安装了zookeeper。参考文档 zookeeper集群的安装
一:下载安装包
本文以 kafka_2.12-1.0.2.tgz 为例
解压安装到各个节点上
本文是以在一个节点 (node121)安装配置后,使用rsync命令道其他节点
tar -zxvf kafka_2.12-1.0.2.tgz -C /opt/cluster/server
二:配置环境变量
vi /etc/profile
将kafka的安装路径配置到path变量里
export KAFKA_HOME=/opt/cluster/server/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA_HOME/bin
三: 编辑server端的配置文件
在 kafka_2.12-1.0.2/config里面的 server.config,配置
broker.id=1 # broker在集群的唯一标志,类似身份证。可以是任意integer值,但必须唯一
zookeeper.connect=node121:2181,node122:2181,node123:2181 #依赖的zookeeper集群地址
listeners=PLAINTEXT://192.168.186.123:9092 # broker节点的ip地址,以及对外服务端口.PLAINTEXT在这里既是变量名,也是通讯协议名
log.dir=/opt/cluster/data/kafka-log # kafka的数据存储路径
############## 上面是必须配置的 ######## 下面的配置是实现内外网隔离,较少用到。#########
# 监听器名称和安全协议的映射配置。
# ⽐如,可以将内外⽹隔离,即使它们都使⽤SSL。
listener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL # 这么配置的意思是INTERNAL和EXTERNAL都使用了SSL协议,也可以定义其他的协议。
inter.broker.listener.name=EXTERNAL # 内部broker间的通信使用的监听器,EXTERNAL在上面是定义了SSL协议
advertised.listeners=://192.168.186.123:9092 # 暴露给外网的服务地址,如果没有配置,则用上面的listeners配置值
四: 将安装目录复制到其他节点
scp -r /opt/cluster/server/kafka_2.12-1.0.2 node122:/opt/
scp -r /opt/cluster/server/kafka_2.12-1.0.2 node123:/opt/
scp /etc/profile node122:/etc/
scp /etc/profile node123:/etc/
五: 在另外的节点上更改下 server.config的broker_id值,确保唯一
这里是 node121: 1
node122: 3
node123: 3
六: 启动验证
1- 启动zookeeper
在各个节点上启动zookeeper,执行
zkServer.sh start
2- 启动kafka
在各个节点上执行
kafka-server-start.sh -daemon /opt/cluster/server/kafka_2.12-1.0.2/config/server.properties
3- 查看后台进程
ps aux | grep kafka
4- 执行kafka命令
例如:创建topic
sh kafka-topics.sh --zookeeper node121:2181,node122:2181,node123:2181 --create --topic test1 --partitions 3 replication-factor 1
查看topic列表
sh kafka-topics.sh --zookeeper node121:2181,node122:2181,node123:2181 --list