需要三台linux服务器,此安装手册以centos7为例,假设这三台服务器主机ip为10.20.31.116,10.20.31.117,10.20.31.137:

1.     系统需求

   JDK版本:jdk1.8

   Zookeeper版本:zookeeper-3.5.8

   Kafka版本:kafka_2.13-2.4.1

   注意:防火墙端口开放

2.     集群搭建

2.1   集群jdk1.8.x环境搭建(集群所有节点都需要配置)

2.1.1         官方下载jdk,并上传到服务器/opt目录下,此文档下载文件为jdk1.8.0_101.tar

2.1.2         解压jdk压缩文件

cd /opt/ && tar -zxvf jdk1.8.0_101.tar.gz

2.1.3         配置系统环境变量

vi /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH

编辑后保存并退出   :wq

2.1.4         使配置文件生效

source  /etc/profile

2.1.5         查看java版本

java -version

centos7安装部署kafka_2.13-2.4.1集群_kafka

2.2   zookeeper集群环境搭建(集群所有节点都需要配置)

2.2.1         下载并解压

官方地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

下载版本3.5.8 :

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

解压 cd /opt/ && tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

2.2.2         创建data、log存储目录

mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/log

2.2.3         新增zoo.cfg配置文件

cd apache-zookeeper-3.5.8-bin./conf/ && vi zoo.cfg

# 基本事件单元,单位毫秒。
tickTime=2000
initLimit=10
syncLimit=5
# 存储内存中数据库快照的位置,默认是/tmp/zookeeper
dataDir=/data/zookeeper/data
# 日志路径,也就是事务日志。
dataLogDir=/data/zookeeper/log
# 监听客户端连接的端口
clientPort=2181
server.1=10.20.31.116:2888:3888
server.2=10.20.31.117:2888:3888
server.3=10.20.31.137:2888:3888

2.2.4         新增myid文件

myid文件内容是当前服务器的编号。

10.20.31.116:
   echo '1' > /data/zookeeper/data/myid
10.20.31.117:
   echo '2' > /data/zookeeper/data/myid
10.20.31.137:
   echo '3' > /data/zookeeper/data/myid

2.2.5         启动Zookeeper集群

10.20.31.116:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start

centos7安装部署kafka_2.13-2.4.1集群_apache_02

10.20.31.117:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start

centos7安装部署kafka_2.13-2.4.1集群_zookeeper_03

10.20.31.137:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh start

centos7安装部署kafka_2.13-2.4.1集群_apache_04

2.2.6         查看Zookeeper集群状态

10.20.31.116:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status

centos7安装部署kafka_2.13-2.4.1集群_apache_05

10.20.31.117:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status

centos7安装部署kafka_2.13-2.4.1集群_zookeeper_06

10.20.31.137:/opt/apache-zookeeper-3.5.8-bin/bin/zkServer.sh status

centos7安装部署kafka_2.13-2.4.1集群_zookeeper_07

2.3   kafka集群环境搭建(集群所有节点都需要配置)

2.3.1         下载并解压

下载版本2.4.1:

http://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.13-2.4.1.tgz

解压:cd /opt/ && tar -zxvf kafka_2.13-2.4.1.tgz

2.3.2         编辑配置文件:

10.20.31.116:

vi kafka_2.13-2.4.1/config/server.properties

#修改以下配置
#为方便,直接将broker.id设置为了ip的最后一段,当集群中有多个Kafka时,他们的这个值必须不一样
broker.id=116
#可选配置项,将日志输出到指定的位置
log.dirs=/tmp/kafka-logs
#必须配置自己的zookeepe
zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181
#在配置集群的时候,必须设置
listeners = PLAINTEXT://10.20.31.116:9092

10.20.31.117:

    vi kafka_2.13-2.4.1/config/server.properties

#修改以下配置
#为方便,直接将broker.id设置为了ip的最后一段,当集群中有多个Kafka时,他们的这个值必须不一样
broker.id=117
#可选配置项,将日志输出到指定的位置
log.dirs=/tmp/kafka-logs
#必须配置自己的zookeepe
zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181
#在配置集群的时候,必须设置
listeners = PLAINTEXT://10.20.31.117:9092

10.20.31.137:

    vi kafka_2.13-2.4.1/config/server.properties

#修改以下配置
#为方便,直接将broker.id设置为了ip的最后一段,当集群中有多个Kafka时,他们的这个值必须不一样
broker.id=137
#可选配置项,将日志输出到指定的位置
log.dirs=/tmp/kafka-logs
#必须配置自己的zookeepe
zookeeper.connect=10.20.31.116:2181,10.20.31.117:2181,10.20.31.137:2181
#在配置集群的时候,必须设置
listeners = PLAINTEXT://10.20.31.137:9092

注意:如果是配置集群,下面信息必须修改:

(1)、broker.id:同一个集群中,每台机器均不能一样

(2)、zookeeper.connect:因为我有3台zookeeper服务器,所以在这里zookeeper.connect设置为3台,必须全部加进去

(3)、listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误

2.3.3         集群各节点启动kafka服务

/opt/kafka_2.13-2.4.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.13-2.4.1/config/server.properties

2.3.4         查看集群中各个节点的服务的启动状态

 

centos7安装部署kafka_2.13-2.4.1集群_apache_08

2.3.5         操作kafka

/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --create --zookeeper 10.20.31.116:2181 --replication-factor 1 --partitions 1 --topic test

说明: 
--zookeeper:为zk服务器地址,已逗号分割配置多个 
--replication-factor:分区leader副本数,1代表没有副本即分区本身,建议为2 
--partitions:分区数 
--topic:topic名称

2.3.6         查看topic

/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --list --zookeeper 10.20.31.137:2181

2.3.7         查看test topic消息

/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --describe --zookeeper 10.20.31.117:2181 --topic test

 

centos7安装部署kafka_2.13-2.4.1集群_kafka_09

说明: 

leader:负责处理消息的读和写,leader是从所有节点中随机选择的.

Replicas:列出了所有的副本节点,不管节点是否在服务中.

Lsr:是正在服务中的节点.

2.3.8         发布消息

/opt/kafka_2.13-2.4.1/bin/kafka-console-producer.sh --broker-list 10.20.31.117:9092 --topic test

 

centos7安装部署kafka_2.13-2.4.1集群_apache_10

2.3.9         消费消息

/opt/kafka_2.13-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server 10.20.31.137:9092 --topic test --from-beginning

 

centos7安装部署kafka_2.13-2.4.1集群_apache_11

说明: 

from-beginning:每次从头开始消费

2.3.10     删除topic

/opt/kafka_2.13-2.4.1/bin/kafka-topics.sh --delete --zookeeper 10.20.31.137:2181 --topic test

2.4   集群可视化管理

2.4.1