CentOS安装Kafka
本文主要讲CentOS7下安装Kafka集群
安装vim
输入命令
1 | rpm -qa |grep vim |
如果未出现以下安装包
vim-common-7.4.629-8.el7_9.x86_64
vim-filesystem-7.4.629-8.el7_9.x86_64
vim-enhanced-7.4.629-8.el7_9.x86_64
vim-minimal-7.4.629-7.el7.x86_64
则使用命令,安装缺少的
1 | yum -y install vim-minimal |
如果都没有则使用命令
1 | yum -y install vim-enhanced |
JDK安装
安装openjdk
查看服务器上是否已经安装过jdk
1
2[root@Centos7 ~]# java -version
-bash: java: 未找到命令如果没有则搜索jdk 的yum源,执行yum安装jdk
1
2yum search java | grep jdk
yum install java-1.8.0-openjdk-devel.x86_64查看版本
1
2
3
4[root@Centos7 ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
卸载openjdk
检查系统jdk版本
1
2
3
4[root@Centos7 ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)检测jdk安装包
1
2
3
4
5
6[root@Centos7 ~]# rpm -qa | grep java
javapackages-tools-3.4.1-11.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2019c-1.el7.noarch
java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64卸载openjdk
1
2
3
4[root@Centos7 ~]# rpm -qa | grep java
[root@Centos7 ~]# rpm -e --nodeps tzdata-java-2019c-1.el7.noarch
[root@Centos7 ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
[root@Centos7 ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64或者
1
yum remove *openjdk*
查看卸载情况
1
2
3[root@Centos7 ~]# rpm -qa | grep java
javapackages-tools-3.4.1-11.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
重装jdk
下载并解压
1
[root@Centos7 download]# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/local/java
配置环境变量
1
vim /etc/profile
配置参数
1
2
3
4export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH执行profile文件,检查安装版本
1
2
3
4
5[root@Centos7 jdk1.8.0_201]# source /etc/profile
[root@Centos7 jdk1.8.0_201]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
zookeeper集群
创建文件夹
1
2
3mkdir /opt/zookeeper
mkdir /opt/zookeeper/zkdata
mkdir /opt/zookeeper/zkdatalog在opt/zookeeper目录下下载zookeeper
1
2
3
4
5
6
7
8
9
10wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
#未找到wget,执行一下
yum -y install wget
#解压文件
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
#进入zookeeper的conf目录下,复制一份配置文件
cd /conf
cp zoo_sample.cfg zoo.cfg
或者
cp conf/zoo_sample.cfg conf/zoo.cfgzookeeper默认读取zoo.cfg配置文件,因此需重命名zoo_sample.cfg为zoo.cfg
编辑zoo.cfg
1
vim zoo.cfg
配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#心跳间隔
tickTime=2000
#其他服务器连接到Leader时,最长能忍受的心跳间隔数:10*2000 = 20秒
initLimit=10
#发送消息时,多长忍受心跳间隔数:5*2000 = 10秒
syncLimit=5
#快照日志;数据保存路径
dataDir=/opt/zookeeper/zkdata
#事务日志;日志输出路径
dataLogDir=/opt/zookeeper/zkdatalog
#zookeeper服务器的端口
clientPort=2181
#==================多台机器==========================
#对应的server.x=0.0.0.0:2888:3888,其他两个ip为另外两台机器,克隆虚拟机时需要记得修改成0.0.0.0
server.1=0.0.0.0:2888:3888 或者192.168.211.138
server.2=192.168.211.139:2888:3888
server.3=192.168.211.140:2888:3888
#==================多台机器==========================克隆虚拟机,如果你已经有多台机器,可跳过此步
快照目录
zkdata
下,创建myid文件,对应配置文件里的server.1、server.2、server.3进入zookeeper目录执行
1
2
3
4
5
6#server1
echo "1" > myid
#server2
echo "2" > myid
#server3
echo "3" > myid进入zookeeper的bin目录,启动zookeeper,如果有多台都启动
1
2
3
4
5
6./zkServer.sh start
#显示
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED查看状态
1
2
3
4
5
6
7./zkServer.sh status
#显示
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone停止执行
1
2
3
4
5
6
7./zkServer.sh stop
#显示
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
Stopping zookeeper ... ./zkServer.sh: 第 213 行:kill: (6096) - 没有那个进程
STOPPED重启restart
如果报错,查看日志,在bin目录的zookeeper.out文件
1
tail -f 100 zookeeper-xx.out
zookeeper启动会占用三个端口,分别的作用是
1
2
32181:对cline端提供服务
3888:选举leader使用
2888:集群内机器通讯使用(Leader监听此端口)记得使用命令开启防火墙端口,并重启防火墙
1
2
3
4firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --reload检查防火墙状态
systemctl status firewalld
开启防火墙
systemctl start firewalld
关闭防火墙
systemctl stop firewalld.service
检查端口
netstat -antp | grep 2181
kafka集群
Kafka安装
创建文件夹
1
mkdir /opt/kafka
在/opt/kafka下载
1
wget https://mirror.bit.edu.cn/apache/kafka/2.7.0/kafka_2.13-2.7.0.tgz
解压
1
tar -zxvf kafka_2.13-2.7.0.tgz
修改配置文件
1
vim /kafka_2.13-2.7.0/config/server.properties
配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14#分别对应每台虚拟机1,2,3
broker.id=1
#所在虚拟机ip
listeners=PLAINTEXT://192.168.211.137:9092
#所在虚拟机ip
advertised.listeners=PLAINTEXT://192.168.211.137:9092
# kafka日志输出路径
# log.dirs=/tmp/kafka-logs
# kafka分区数量
# num.partitions=1
#zookeeper集群地址
zookeeper.connect=192.168.211.137:2181,192.168.211.139:2181,192.168.211.140:2181
# kafka连接zookeeper超时时间
zookeeper.connection.timeout.ms=6000kafka操作相关
启动kafka
1
2
3
4./bin/kafka-server-start.sh -daemon ./config/server.properties
或者
cd /opt/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties./kafka-server-stop.sh -daemon ../config/server.properties
查看当前是否有kafka进程
1
jps -l
如果-bash: jps: 未找到命令
注:安装open-jdk后发现jps不能用,需要安装另外一个包才能使用java-1.8.0-openjdk-devel.x86_64
1
yum install java-1.8.0-openjdk-devel.x86_64
如果没有启动或者报错,可以查看日志文件
1
tail -fn 100 logs/server.log
停止kafka
1
./bin/kafka-server-stop.sh
创建topic名为kafka1,如果创建成功,则kafka搭建成功
1
2./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181,192.168.211.139:2181,
192.168.211.140:2181 --replication-factor 3 --partitions 3 --topic kafka1参数解析
1
2
3replication-factor 3 复制3份
partitions 3 创建3个分区
topic 主题名为kafka1查看所有topic
1
bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --list
查看topic信息
1
bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --describe --topic kafka1
删除kafka的topic
1
bin/kafka-topics.sh --delete --zookeeper 192.168.211.137:2181 --topic kafka1
生产消息与消费消息
生产消息
单机
1
bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092 --topic kafka1
集群
1
2bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092,192.168.211.139:9092,\
192.168.211.140:9092 --topic kafka1消费消息
单机
1
bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092 --from-beginning --topic kafka1
集群,其中 –from-beginning 从第一个消息开始消费
1
2bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092,192.168.211.139:9092,\
192.168.211.140:9092 --topic kafka1 --from-beginning
Kafka可视化客户端工具
点击下载安装地址 选择相关的版本安装即可
配置连接信息
- 新建连接
- 输入Cluster name、Kafka Cluster Version、Zookeeper Host 和 Port
- 输入Advanced ip 和端口 如broker.1:9092; broker.2:9092
连接成功之后即可