1.下载安装包至安装目录
wget https://mirrors.cnnic.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz
2.tar -zxvf kafka_2.12-2.1.0.tgz 解压安装包
3.备份Kafka、Zookeeper配置文件
cp server.properties server.properties.bak
cp zookeeper.properties zookeeper.properties.bak
4.修改Kafka配置文件server.properties
# broker编号,每个borker保持唯一,可从1开始编号
broker.id=1
# Kafka服务ip:端口
listeners=PLAINTEXT://server1:9092
# 存储日志文件的目录
log.dirs=/data/kafka/logs
# 分区数目,一般情况下等于broker数量
num.partitions=3
# Zookeeper连接地址,将集群中的zookeeper地址配入,以逗号分开
zookeeper.connect=server1:2181,server2:2181,server3:2181
# 开启删除topic的开关
delete.topic.enable=true
# 动态调整topic副本因子,集群一台宕机后仍可继续消费
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
其他配置默认即可。
5.修改Zookeeper配置文件zookeeper.properties
# 存储快照文件snapshot的目录
dataDir=/data/zookeeper/data
# 事务日志输出目录
dataLogDir=/data/zookeeper/logs
# Zookeeper默认端口2181即可
clientPort=2181
# 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
tickTime=2000
# 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 initLimit=10
# 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒 syncLimit=5
# zookeeper集群通信
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
6.创建myid文件,位置在zookeeper.properties下dataDir
#server1
echo "1" > /data/zookeeper/data/myid
#server2
echo "2" > /data/zookeeper/data/myid
#server3
echo "3" > /data/zookeeper/data/myid
7.启动Zookeeper、Kafka (bin路径下)
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
./kafka-server-start.sh -daemon ../config/server.properties
8.测试是否可用
# 创建主题 testtopic
./kafka-topics.sh --create --zookeeper server1:2181 --replication-factor 3 --partitions 3 --topic testtopic
# 查看所创建的topic:1中创建的topic,因为是集群,所以应该在zookeeper2上可以查看到:
./kafka-topics.sh --zookeeper server2:2181 --list
# 创建发布者producer:在zookeeper1上创建一个发布者
./kafka-console-producer.sh --broker-list server1:9092 --topic testtopic
# 创建消费者consumer:在zookeeper2、zookeeper3上分别创建消费者:发布者发到对应topic下的内容会被对应的消费者接收到
./kafka-console-consumer.sh --bootstrap-server server2:9092 --topic testtopic --from-beginning
./kafka-console-consumer.sh --bootstrap-server server3:9092 --topic testtopic --from-beginning
# 先关闭一个节点的kafka再关闭其zookeeper,查看是否正常
./kafka-server-stop.sh
./zookeeper-server-stop.sh
# 查看指定topic信息
./kafka-topics.sh --zookeeper server2:2181 --describe --topic testtopic
9.kafka可视化管理工具kafka tool
下载地址:http://www.kafkatool.com/download.html