一、创建用户组及用户
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
1.3验证用户sudo权限
[root@linux1 ~]# su - kafka
[kafka@linux1 ~]$ sudo ls /home
二、创建数据目录规划机器
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
3.1.5验证jdk环境变量是否正确配置
[kafka@linux1 data]$ javac
如下图正确配置
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
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
复制zoo_sample.cfg为zoo.cfg,并修改zoo.cfg
[kafka@linux1 conf]$ cp
zoo_sample.cfg zoo.cfg
[kafka@linux1 conf]$ vim zoo.cfg
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启动之后查看状态,如果三台服务器状态如下,检查一下三台服务器之间的防火墙
关闭防火墙
# 用root用户操作
systemctl stop firewalld.service
查看zookeeper进程
[kafka@linux1 data]$ jps
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
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
修改server.properties文件
[kafka@linux1 config]$ vi server.properties
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)参数
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
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
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
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
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
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
3.3.13验证生产者与消费者
在生产者输入消息
在消费者端查看是否能接收到消息
3.3.14日志查看
如果kafka出现问题,可查看/data/kafka_2.12-0.11.10.1/logs记录的日志判断问题原因。