一、创建用户组及用户

1.1创建用户及用户组


[root@linux1 ~]# groupadd kafka

[root@linux1 ~]# useradd -g kafka -d /home/kafka kafka

[root@linux1 ~]# passwd kafka


1.2赋予新建用户sudo权限



[root@linux1 ~]# vim /etc/sudoers

Linux 非root用户安装kafka_zookeeper


1.3验证用户sudo权限



[root@linux1 ~]# su - kafka

[kafka@linux1 ~]$ sudo ls /home

Linux 非root用户安装kafka_linux_02


二、创建数据目录规划机器

2.1创建数据目录并赋权



[root@linux1 ~]# mkdir /data

[root@linux1 ~]# chmod 777 /data/


2.2规划机器



IP地址



主机名



用户






192.168.56.128



Linux1



kafka






192.168.56.129



Linux2



kafka






192.168.56.130



Linux3



kafka






三、切换kafka用户安装软件



[root@linux1
~]# su - kafka



首先将各软件程序包上传到/data文件夹目录下

3.1安装jdk

3.1.1解压jdk安装包



[kafka@linux1 ~]# cd /data

[kafka@linux1 data]# tar -zxvf jdk-8u161-linux-x64.tar.gz


3.1.2配置jdk环境变量



[kafka@linux1 data]# vi
~/.bash_profile




#JAVA_HOME

export JAVA_HOME=/data/jdk1.8.0_161

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


3.1.3使环境变量立即生效



[kafka@linux1 data]$ source
~/.bash_profile


3.1.4验证jdk是否正确安装



[kafka@linux1 data]$ java -version

Linux 非root用户安装kafka_kafka_03


3.1.5验证jdk环境变量是否正确配置



[kafka@linux1 data]$ javac


如下图正确配置

Linux 非root用户安装kafka_kafka_04


3.1.6其余其他2台机器同样安装jdk

参考3.1安装

3.2安装zookeeper

3.2.1解压zookeeper的安装包



[kafka@linux1 data]$ tar -zxvf
zookeeper-3.4.6.tar.gz


3.2.2配置zookeeper环境变量



[kafka@linux1 data]$ vi
~/.bash_profile

#ZOOKEEPER_HOME

export ZOOKEEPER_HOME=/data/zookeeper-3.4.6

export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin

Linux 非root用户安装kafka_linux_05


3.2.3使环境变量立即生效



[kafka@linux1 data]$ source
~/.bash_profile


3.2.4验证zookeeper环境变量是否配置成功

在任何目录下运行zkS三个字母然后按tab键就可以提示出zkServer.sh等完整命令,如果可以带出来,就证明已经安装成功



[kafka@linux1 data]$ zkServer.sh


3.2.5其他2台机器同样安装zookeeper

参考3.2.1-3.2.4的安装步骤

3.2.6修改配置文件

进入zookeeper安装目录下的conf文件夹


[kafka@linux1 data]$ cd
/data/zookeeper-3.4.6/conf/

[kafka@linux1 conf]$ ls

Linux 非root用户安装kafka_linux_06

复制zoo_sample.cfg为zoo.cfg,并修改zoo.cfg



[kafka@linux1 conf]$ cp
zoo_sample.cfg zoo.cfg

[kafka@linux1 conf]$ vim zoo.cfg

Linux 非root用户安装kafka_zookeeper_07


dataDir:配置数据文件目录,如果没有则新建


clientPort:

配置ZK监听客户端连接的端口

     
    server:固定写法


          serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)

          host:主机名

          tickpot:心跳通信端口

          electionport:选举端口




[kafka@linux1 conf]$ mkdir
/data/zookeeper-data

[kafka@linux1 conf]$ cd /data/zookeeper-data/

[kafka@linux1 zookeeper-data]$ echo 1 >myid

[kafka@linux1 zookeeper-data]$ more myid

1

[kafka@linux1 zookeeper-data]$


备注:这个1就是server.1.代表集群中的第一台机器的标识。如果第二台服务器是myid内容写2。

同样修改其余机器的zookeeper配置文件。

3.2.7启动zookeeper并验证

启动



zkServer.sh start


查看状态



zkServer.sh status


停止



zkServer.sh stop


三台服务器zookeeper启动之后查看状态,如果三台服务器状态如下,检查一下三台服务器之间的防火墙

Linux 非root用户安装kafka_linux_08

关闭防火墙



# 用root用户操作

systemctl stop firewalld.service


查看zookeeper进程



[kafka@linux1 data]$ jps

Linux 非root用户安装kafka_zookeeper_09

3.3安装kafka

3.3.1解压kafka的安装包



[kafka@linux1 ~]$ cd /data

[kafka@linux1 data]$ tar -zxvf kafka_2.12-0.11.0.1.tgz


3.3.2配置kafka环境变量



[kafka@linux1 data]$ vi
~/.bash_profile




# KAFKA_HOME

export KAFKA_HOME=/data/kafka_2.12-0.11.0.1

export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin

Linux 非root用户安装kafka_linux_10

3.3.3使环境变量立即生效



[kafka@linux1 data]$ source
~/.bash_profile


3.3.4修改kafka配置文件

进入kafka安装包目录下的config文件夹



[kafka@linux1 data]$ cd
kafka_2.12-0.11.0.1/config/

[kafka@linux1 config]$ ls

Linux 非root用户安装kafka_kafka_11


修改server.properties文件


[kafka@linux1 config]$ vi server.properties


Linux 非root用户安装kafka_kafka_12

Linux 非root用户安装kafka_kafka_13


broker.id=1 
  为在zookeeper配置文件zoo.cfg添加ip对应的server.数字

listeners=PLAINTEXT://后面添加为该kafka节点的ip加9092端口

advertised.listeners=PLAINTEXT://
后面添加为该kafka节点的ip加9092端口

log.dirs=/data/kafka-logs 
  消息存放的目录

zookeeper.connect=后面加上整个集群的所有节点的ip:12181节点之间用“,”分隔

num.network.threads=16 这个是borker进行网络处理的线程数

num.io.threads=16 这个是borker进行I/O处理的线程数

socket.request.max.bytes=2004857600 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小



3.3.5修改kafka启动脚本



[kafka@linux1 bin]$ cd
/data/kafka_2.12-0.11.0.1/bin/

[kafka@linux1 bin]$ vi kafka-server-start.sh


调大启动JVM(-Xmx -Xms默认1G,建议修改成8G)参数

Linux 非root用户安装kafka_kafka_14

3.3.6启动kafka

启动kafka之前需要先启动zookeeper,参考3.2.7

启动kafka



[kafka@linux1
kafka_2.12-0.11.0.1]$ nohup bin/kafka-server-start.sh config/server.properties
&


3.3.7验证kafka

通过jps查看kafka进程



[kafka@linux1
kafka_2.12-0.11.0.1]$ jps

Linux 非root用户安装kafka_linux_15

Linux 非root用户安装kafka_linux_16

Linux 非root用户安装kafka_linux_17

3.3.8创建主题

随便一个节点创建主题执行



[kafka@linux1
kafka_2.12-0.11.0.1]$ bin/kafka-topics.sh --create --zookeeper
192.168.56.128:12181,192.168.56.129:12181,192.168.56.130:12181
--replication-factor 3 --partitions 3 --topic hello

Linux 非root用户安装kafka_linux_18

3.3.9查看topic副本信息



[kafka@linux1
kafka_2.12-0.11.0.1]$ bin/kafka-topics.sh --describe --zookeeper
192.168.56.128:12181,192.168.56.129:12181,192.168.56.130:12181 --topic hello


Linux 非root用户安装kafka_zookeeper_19

Replication-Factor
:备份数量;

PartitionCount:分区数量;

Topic:主题名称;

Leader:现在使用的副节点节点序号;

Replicas:副节点优先级;

Isr:可用的副节点列表。


3.3.10查看已经创建的topic



[kafka@linux1
kafka_2.12-0.11.0.1]$ bin/kafka-topics.sh --list --zookeeper
192.168.56.128:12181,192.168.56.129:12181,192.168.56.130:12181

Linux 非root用户安装kafka_linux_20

3.3.11使用kafka启动生产者

在Linux1上启动producer



[kafka@linux1
kafka_2.12-0.11.0.1]$ bin/kafka-console-producer.sh --broker-list
192.168.56.128:9092,192.168.56.129:9092,192.168.56.130:9092 --topic hello

Linux 非root用户安装kafka_zookeeper_21

3.3.12使用kafka启动消费者

在Linux1上启动consumer



[kafka@linux2
kafka_2.12-0.11.0.1]$ bin/kafka-console-consumer.sh --zookeeper
192.168.56.128:12181,192.168.56.129:12181,192.168.56.130:12181 --from-beginning
--topic hello

Linux 非root用户安装kafka_linux_22

3.3.13验证生产者与消费者

在生产者输入消息

Linux 非root用户安装kafka_kafka_23

在消费者端查看是否能接收到消息

Linux 非root用户安装kafka_kafka_24

3.3.14日志查看

如果kafka出现问题,可查看/data/kafka_2.12-0.11.10.1/logs记录的日志判断问题原因。