前言
本教程是在同一台Linux服务器上搭建三个节点Kafka集群,Zookeeper是使用单独安装的(安装教程),同学们也可以使用Kafka中自带的Zookeeper(可网上查询)。
一.下载
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz
二.解压并复制到指定目录(通常放在/usr/local),并重命名为kafka0
tar -zvxf kafka_2.12-2.7.0.tgz -C /usr/local/ cd /usr/local mv kafka_2.12-2.7.0 kafka0
三.配置
kafka配置文件:/usr/local/kafka0/config/server.properties
vim /usr/local/kafka0/config/server.properties
broker.id是kafka broker的编号,集群里每个broker的id需不同,默认为0,如果使用集群,递增该编号即可。
如果允许外网访问,需要配置 advertised.listeners=PLAINTEXT://<公网IP>:9092
listeners=PLAINTEXT://<内网IP>:9092
注意:外网访问
listeners=PLAINTEXT://<内网IP>:9092 advertised.listeners=PLAINTEXT://<公网IP>:9092
设置Zookeeper地址,如果Zookeeper采用了集群模式,多个地址间使用英文逗号隔开
num.partitions 为新建Topic的默认Partition(分区)数量,默认为1,partition数量提升,一定程度上可以提升并发性
日志存放位置,如果kafka集群分布在不同机器上,日志存在位置可以保持默认,如果同一机器,需要配置成不同的目录
若目录不存在,则创建相应的目录
cd /usr/local/kafka0 mkdir logs
内部topic配置,为保证消息的高可用,建议副本集大于1(副本集数要<=broker数(集群),本案例是三节点,故设置为3)
default.replication.factor为kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务,是在自动创建topic时的默认副本数
四.其余两个节点安装配置
根据kafka0复制两份,分别命名为kafka1,kafka2,并对配置文件做相应修改, 尤其是brokerid、IP地址和日志目录。
五.启动及停止(以kafka0为例,其余节点相似)
1.启动:
cd /usr/local/kafka0 bin/kafka-server-start.sh -daemon config/server.properties
判断是否启动成功:
方法一:
查看启动日志,如有started字样说明启动成功:
cat logs/kafkaServer.out
如果机器内存不够,会报内存不足。
可以编辑
bin/kafka-server-start.sh
修改 export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
为 export KAFKA_HEAP_OPTS="-Xmx512M -Xms256M"
方法二:使用jps命令,如有kafka字样,说明启动成功。
2.停止
bin/kafka-server-stop.sh -daemon config/server.properties
六.测试(以下测试是在只有一个broker环境下进行,机器配置太低了,起不了三个broker)
1. 创建topic,名为test
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2.查看主题列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
3.查看特定主题
bin/kafka-topics.sh --zookeeper localhost:2181 --describe test
4.发消息
bin/kafka-console-producer.sh --broker-list 101.132.236.198:9092 --topic test
5.接收消息
kafka0]# bin/kafka-console-consumer.sh --bootstrap-server 101.132.236.198:9092 --topic test --from-beginning
6.删除主题
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test