部署kafka集群

大致流程:

  • 先安装JDK
  • 部署Zookeeper集群
  • 部署Kafka集群
  • 部署Kafka-manager

1 部署Kafka集群

1.1 关闭防火墙和 selinux

关闭防火墙

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service

关闭selinux

  1. setenforce 0 (临时生效)
  2. sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config(永久生效)

1.2 检查是否已经安装OpenJDK

  1. rpm -qa|grep jdk #如果安装先卸载jdk

下载jdk:

  1. 官网:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

选择jdk版本上传到服务器解压,这里我用的是jdk1.8.0版本

  1. tar -xvf jdk-8u251-linux-x64.tar.gz
  2. mv jdk1.8.0_251 /usr/local
  3. vim /etc/profile
  4. export JAVA_HOME=/usr/local/jdk1.8.0_251
  5. export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  6. export PATH=$PATH:$JAVA_HOME/bin
  7. source /etc/profile
  8. java -version (检查一下jdk版本查看是否安装成功)

1.3 搭建Zookeeper集群

1.3.1 集群节点选用三台linux主机

下载地址: https://archive.apache.org/dist/zookeeper/
或者: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz

1.3.2 新建一个zookeeper-cluster目录,将安装包上传zookeeper-cluster目录下

  1. cd /usr/local
  2. mkdir zookeeper-cluster

1.3.3 解压安装包

  1. cd zookeeper-cluster
  2. tar zxvf apache-zookeeper-3.5.5-bin.tar.gz

1.3.4 配置zk1(先配一个节点,然后再复制修改相关配置)

  1. 1.修改解压包名称(直观区分)
  2. mv apache-zookeeper-3.5.5-bin zk
  3. 2.新建datalogs 目录来存放数据和日志
  4. cd zk
  5. mkdir data logs
  6. 3.进入conf,将zoo_sample.cfg复制重命名zoo.cfg
  7. cd conf
  8. cp zoo_sample.cfg zoo.cfg
  9. 4.修改confzoo.cfg
  10. vi zoo.cfg
  11. 修改:dataDir=/usr/local/zookeeper-cluster/zk/data
  12. 添加:dataLogDir=/usr/local/zookeeper-cluster/zk/logs
  13. clientPort=2181clientPort是客户端的请求端口】
  14. zoo.cfg文件末尾追加
  15. server.1=10.1.240.150:2888:3888
  16. server.2=10.1.240.151:2888:3888
  17. server.3=10.1.240.152:2888:3888
  18. 5.zkdata目录下创建一个myid文件,内容为1
  19. cd ../data/
  20. echo 1 > myid

1.3.5 其他节点配置 其他节点配置相同,除以下配置

  1. echo 1 >/usr/local/zookeeper-cluster/zk/data/myid # echo 中的值需要唯一,节点1,输出1,节点2,就写2.保证唯一

1.3.6 启动

  1. cd /usr/local/zookeeper-cluster/zk/bin
  2. ./zkServer.sh start

配置zk启动地址
查看集群状态

  1. ./zkServer.sh status

配置zk状态地址
可以看到,一台作为leader,两台作为follower,zookeeper集群搭建成功。

1.4 Kafka集群安装

1.4.1 下载安装包

Kafka官网下载:http://kafka.apache.org/downloads
或者wget,下载 https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.2/kafka_2.12-2.6.2.tgz

1.4.2 新建一个Kafka-cluster目录,将安装Kafka-cluster目录下

  1. cd /usr/local
  2. mkdir kafka-cluster

1.4.3 解压安装包,重命名

  1. tar zxvf kafka_2.12-2.6.2.tgz
  2. mv kafka_2.12-2.6.2 kafka

1.4.4 修改配置文件

  1. cd /usr/local/kafka-cluster/kafka/config/
  2. vi server.properties修改
  3. broker.id=1 #唯一
  4. listeners=PLAINTEXT://172.16.150.154:9092 #修改为本机地址
  5. log.dirs=/Data/kafka-logs #数据目录,kafka-logs会自动采集
  6. zookeeper.connect=172.16.150.154:2181,172.16.150.155:2181,172.16.150.156:2181 #zokeeper集群地址,以","为分割其他的不用改

1.4.5 其他节点配置

其他节点配置相同,除以下内容:

  1. broker.id=1 #唯一 (确定id值是唯一)
  2. listeners=PLAINTEXT://172.16.150.154:9092 #修改为本机地址

1.4.6 启动

  1. cd /usr/local/kafka-cluster/kafka/bin
  2. ./kafka-server-start.sh ../config/server.properties
  3. 可以发现在窗口启动之后是一个阻塞进程,会阻塞当前窗口,我们可以重新打开一个窗口进行接下来的操作,或者在启动kafka的时候使用 -daemon 参数将它声明为守护进程后台运行。
  4. ./kafka-server-start.sh -daemon ../config/server.properties

到这一步kafka+zk已经是部署完成了

1.4.7 使用JMX监控Kafka

  1. vim /usr/local/kafka-cluster/kafka/bin/kafka-server-start.sh
  2. 在这个字段加入export JMX_PORT="9999"

配置监控kafka地址

1.4.8 服务设置开机自启,使用systemctl工具管理(在配置时,请先把原本服务关闭)

  1. 先设置zookeeper开机启动
  2. cd /lib/systemd/system/
  3. vim zookeeper.service 在当中输入一下内容
  4. [Unit]
  5. Description=zookeeper
  6. After=network.target remote-fs.target nss-lookup.target
  7. [Service]
  8. Type=forking
  9. ExecStart=/usr/local/zookeeper-cluster/zk/bin/zkServer.sh start
  10. ExecReload=/usr/local/zookeeper-cluster/zk/bin/zkServer.sh restart
  11. ExecStop=/usr/local/zookeeper-cluster/zk/bin/zkServer.sh stop
  12. [Install]
  13. WantedBy=multi-user.target

然后保存退出

echo $PATH 找到我们的jdk安装路径

配置jdk路径地址

  1. cd /usr/local/zookeeper-cluster/zk/bin
  2. vim zkEnv.sh

配置zk环境地址

找到我们第一行的变量,把我们之前部署的java环境添加刷新一下进去在后面插入
export JAVA_HOME=/usr/local/jdk1.8.0_251,保存退出,然后刷新一下命令

  1. systemctl daemon-reload
  2. systemctl start zookeeper #启动服务
  3. systemctl enable zookeeper #加入开机自启
  4. systemctl status zookeeper #检查服务状态

状态如下就是正确

配置zk状态正确地址

1.4.9 Kafka自启动设置

  1. cd /lib/systemd/system/
  2. vim kafka.service
  3. 添加一下内容:
  4. [Unit]
  5. Description=kafka
  6. After=network.target zookeeper.service
  7. [Service]
  8. Type=simple
  9. Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_251/bin"
  10. User=root
  11. Group=root
  12. ExecStart=/usr/local/kafka-cluster/kafka/bin/kafka-server-start.sh /usr/local/kafka-cluster/kafka/config/server.properties
  13. ExecStop=/usr/local/kafka-cluster/kafka/bin/kafka-server-stop.sh
  14. PrivateTmp=on-failure
  15. [Install]
  16. WantedBy=multi-user.target

保存退出,刷新一下

  1. systemctl daemon-reload
  2. systemctl start kafka
  3. systemctl enable kafka
  4. systemctl status kafka

配置kafka状态地址

1.4.10 建议启动Kafka时先重新启动一下Zookeeper,有时间可能会起不来。启动Kafka前必须先要启动Zookeeper。

2 部署kafka-manager

可以在任意一台Kafka设备部署,Kafka可视化,yaml如下(需要提前安装好Docker环境和docker-compose环境,并下载好images)

  1. version: '2'
  2. services:
  3. kafka-manager:
  4. image: sheepkiller/kafka-manager:latest
  5. restart: always
  6. container_name: kafka-manager
  7. hostname: kafka-manager
  8. ports:
  9. - 9000:9000
  10. environment:
  11. ZK_HOSTS: 10.1.240.154:2181,10.1.240.155:2181,10.1.240.156:2181 #修改为依据部署好的kafka集群
  12. KM_ARGS: -Djava.net.preferIPv4Stack=true
  13. networks:
  14. - kafka-manager
  15. networks:
  16. kafka-manager: