1. 本文Linux版本,kafka版本
Linux -- CentOS-7-x86_64-Minimal-1810
kafka -- kafka_2.12-2.2.0.tgz
安装方式:tar 解压缩
安装kafka前,应先安装zookeeper,详见之前的文章
Linux环境下,ZK(zookeeper)单机,集群安装配置
本文使用zk集群(3台服务器)(192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181)。使用的虚拟机,kafka安装的机器同zk的一致。
2. 安装 kafka 步骤
2.1 安装包准备
wget http://mirror.bit.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
2.2 移动到/usr/local目录下
mv kafka_2.12-2.2.0.tgz /usr/local
2.3 解压缩
tar zxvf kafka_2.12-2.2.0.tgz
2.4 创建日志目录
mkdir -p /data/kafka-logs
3. 单机配置(以虚拟机192.xxx.xxx.1为例)
修改配置文件 server.properties
cd /usr/local/kafka_2.12-2.2.0/config
vi server.properties
修改以下内容
listeners=PLAINTEXT://192.xxx.xxx.1:9092 #本机ip,不要用localhost和127.0.0.1
num.io.threads=8 #io线程数
log.dirs=/data/kafka-logs #kafka消息数据存放目录
auto.create.topics.enable=false #不能自动创建主题
zookeeper.connect=192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181 #zk集群信息
启动服务,应先启动配置的zk集群的所有服务
切换到kafka安装目录
cd /usr/local/kafka_2.12-2.2.0
执行以下命令
bin/kafka-server-start.sh config/server.properties &
4. 集群搭建
使用zk安装的3台虚拟机192.xxx.xxx.1,192.xxx.xxx.2,192.xxx.xxx.3搭建集群,按照单机安装步骤(除配置文件不同外)安装kafka。
集群配置,每台机器分别修改server.properties,以192.xxx.xxx.1为例,修改以下内容
broker.id=1 #整数,不要与集群中其他broker.id重复,可以用ip最后一个字段
listeners=PLAINTEXT://192.xxx.xxx.1:9092 #本机ip,不要用localhost和127.0.0.1
num.io.threads=8 #io线程数
log.dirs=/data/kafka-logs #kafka消息数据存放目录
num.partitions=6 #每个topic的默认log划分数,一般为节点数乘以2
log.retention.hours=168 #日志保留时长,一般为7天
auto.create.topics.enable=true
delete.topic.enable=true
default.replication.factor=2
zookeeper.connect=192.xxx.xxx.1:2181,192.xxx.xxx.2:2181,192.xxx.xxx.3:2181 #zk集群信息
分别修改另外2台机器的kafka,区别在于 broker.id 和 listeners的ip配置。
启动服务,按照单机中的启动服务方法,分别启动3台机器上的kafka。
5. 验证集群
5.1 创建主题与查看主题
在 192.xxx.xxx.1 上创建topic,到 kafka 安装 bin 目录下
cd /usr/local/kafka_2.12-2.2.0/bin
创建名为 TEST_TOPIC 的主题
./kafka-topics.sh --create --zookeeper 192.xxx.xxx.1:2181 --replication-factor 2 --partitions 3 --topic TEST_TOPIC
可在 192.xxx.xxx.2 上查看主题
cd /usr/local/kafka_2.12-2.2.0/bin
./kafka-topics.sh --describe --zookeeper 192.xxx.xxx.1:2181 --topic TEST_TOPIC
5.2 发送消息与接收消息
在 192.xxx.xxx.1 上发送消息,将消息发送到集群
./kafka-console-producer.sh --broker-list 192.xxx.xxxx.1:9092,192.xxx.xxxx.2:9092,192.xxx.xxxx.3:9092 --topic TEST_TOPIC
在 192.xxx.xxx.2 上接收来自 192.xxx.xxx.1 的主题为 TEST_TOPIC 的消息
./kafka-console-consumer.sh --bootstrap-server 192.xxx.xxxx.1:9092 --topic TEST_TOPIC --from-beginning
6. 结束kafka
bin/kafka-server-stop.sh