一、安装

kafka可以通过官网下载:https://kafka.apache.org/downloads

kafka根据Scala版本不同,又分为多个版本,我不需要使用Scala,所以就下载官方推荐版本kafka_2.12-2.4.0.tgz。

使用tar -xzvf kafka_2.12-2.4.0.tgz 解压

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data

 为了使用方便,可以创建软链接kafka0

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_02

二、Zookeeper配置

当前下载的kafka程序里自带Zookeeper,可以直接使用其自带的Zookeeper建立集群,也可以单独使用Zookeeper安装文件建立集群。

1. 单独使用Zookeeper安装文件建立集群

Zookeeper的安装及配置可以参考另一篇博客,里面有详细介绍

zookeeper安装和配置过程

2. 直接使用其自带的Zookeeper建立集群

kafka自带的Zookeeper程序脚本与配置文件名与原生Zookeeper稍有不同。

kafka自带的Zookeeper程序使用bin/zookeeper-server-start.sh,以及bin/zookeeper-server-stop.sh来启动和停止Zookeeper。

而Zookeeper的配制文件是config/zookeeper.properties,可以修改其中的参数

(1) 启动Zookeeper

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_03


bin/zookeeper-server-start.sh -daemon config/zookeeper.properties


加-daemon参数,可以在后台启动Zookeeper,输出的信息在保存在执行目录的logs/zookeeper.out文件中。

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_zookeeper_04

对于小内存的服务器,启动时有可能会出现如下错误

os::commit_memory(0x00000000e0000000, 536870912, 0) failed; error='Not enough space' (errno=12)

    

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_配置文件_05

 可以通过修改bin/zookeeper-server-start.sh中的参数,来减少内存的使用,将下图中的-Xmx512M -Xms512M改小。

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_06

(2)关闭Zookeeper


bin/zookeeper-server-stop.sh -daemon config/zookeeper.properties


三、kafka配置

kafka的配置文件在config/server.properties文件中,主要修改参数如下,更具体的参数说明以后再整理下。

broker.id是kafka broker的编号,集群里每个broker的id需不同。我是从0开始。

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_07

listeners是监听地址,需要提供外网服务的话,要设置本地的IP地址

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_zookeeper_08

log.dirs是日志目录,需要设置

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_zookeeper_09

设置Zookeeper集群地址,我是在同一个服务器上搭建了kafka和Zookeeper,所以填的本地地址

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_10

num.partitions 为新建Topic的默认Partition数量,partition数量提升,一定程度上可以提升并发性

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_11

内部topic配置

内部__consumer_offsets和__transaction_state两个topic,分组元数据的复制因子,为了保证可用性,在生产上建议设置大于1。

default.replication.factor为kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务,是在自动创建topic时的默认副本数,可以设置为3

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_12

因为要创建kafka集群,所以kafka的所有文件都复制两份,配置文件做相应的修改,尤其是brokerid、IP地址和日志目录。分别创建软链接kafka1和kafka2。

四、启动及停止kafka

1. 启动kafka

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_配置文件_13


bin/kafka-server-start.sh -daemon config/server.properties


 -daemon 参数会将任务转入后台运行,输出日志信息将写入日志文件,日志文件在执行命令的目录下的logs目录中kafkaServer.out,结尾输同started说明启动成功。

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_kafka_14

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_15

 也可以用jps命令,看有没有kafka的进程

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_zookeeper_16

2. 停止kafka

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_17


bin/kafka-server-stop.sh config/server.properties


五、测试

kafka和Zookeeper已启动完成

1. 创建topic

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_18


bin/kafka-topics.sh --create --zookeeper 192.168.202.128:2181 --replication-factor 3 --partitions 3 --topic test


2. 查看主题

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_配置文件_19

3. 发送消息

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_zookeeper_20


bin/kafka-console-producer.sh --broker-list 192.168.202.128:9094 --topic test


kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_21

  4. 接收消息

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_22

5. 查看特定主题的详细信息

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_kafka_23

6. 删除主题

kubesphere 基于zookeeper的 kafka kafka zookeeper配置_big data_24