从零开始搭建Kafka集群遇到的问题

Posted lolxxs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始搭建Kafka集群遇到的问题相关的知识,希望对你有一定的参考价值。

文章目录

安装kafka

下载kafka_2.12-3.1.0.tgz

链接:https://pan.baidu.com/s/1TWROqaFLmqaXPcEYzUUQuQ
提取码:kx2o

下载得到kafka_2.11-0.11.0.0.tgz文件

使用Xshell将文件传入虚拟机

使用sftp协议,主机ip是在命令行输入ifconfig中ens33中的ip地址,第一次需要输入虚拟机登录账户root和密码

解压

tar -xzvf kafka_2.11-0.11.0.0.tgz
mv kafka_2.11-0.11.0.0 /opt/kafka

启动kafka

使用kakfa自带的zookeeper

根据zookeeper.properties配置文件启动zookeeper

cd /opt/kafka
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties

修改kafka配置

vi /opt/kafka/config/server.properties

只有listeners和default.replication.factor需要配置,其他的都有默认配置

broker.id=0 #kafka broker的编号,集群里每个broker的id需不同
listeners=PLAINTEXT://localhost:9092 #listeners是监听地址
log.dirs=/tmp/kafka-logs #日志目录
num.partitions=1 # 新建Topic的默认Partition数量
default.replication.factor=3 #kafka保存消息的副本数

启动kafka

再开一个终端terminal,用于启动kafka,因为没有使用后台启动,如果zookeeper和kafka需要后台启动加个-daemon参数即可如,/opt/kafka/bin/zookeeper-server-start.sh -deamon /opt/kafka/config/zookeeper.properties

/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

出现如下情况则启动成功

使用kafka

再创建一个终端用于使用kafka

创建主题

/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytopic

查看主题

/opt/kafka/bin/kafka-topics.sh --list --zookeeper  localhost:2181

生产消息

运行后即可在命令行输入字符串,即要发送的消息

/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic

消费消息

需要再开一个终端用于接收消息

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --from-beginning

搭建kafka集群

由于只使用一个虚拟机,所以需要搭建伪集群,所以先将文件复制两次,即得到三个kafka文件夹

cp -a /opt/kafka  /opt/kafka1
cp -a /opt/kafka  /opt/kafka2

搭建zookeeper集群

要搭建kafka集群之前必须搭建zookeeper集群,先修改zookeeper.properties配置文件

修改配置

/opt/kafka/zookeeper.properties

vi /opt/kafka/config/zookeeper.properties

修改clientPort,并在末尾添加server.1、server.2、server.3

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2281
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

/opt/kafka1/zookeeper.properties

vi /opt/kafka1/config/zookeeper.properties
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper1
clientPort=2281
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

/opt/kafka2/zookeeper.properties

vi /opt/kafka2/config/zookeeper.properties

修改clientPort,并在末尾添加server.1、server.2、server.3

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper2
clientPort=2381
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

修改完配置还需要创建myid文件,对应server.1、server.2、server.3配置,myid文件在必须dataDir配置的目录下

mkdir  /tmp/zookeeper
mkdir  /tmp/zookeeper1
mkdir  /tmp/zookeeper2

touch /tmp/zookeeper/myid
touch /tmp/zookeeper1/myid
touch /tmp/zookeeper2/myid

然后将myid文件内容分别改为1、2、3

vi /tmp/zookeeper/myid
vi /tmp/zookeeper1/myid
vi /tmp/zookeeper2/myid

使用netstat检查要开启的九个端口有没有被占用,如果被占用了则需要修改配置

netstat -anp | grep 2181
netstat -anp | grep 2281
netstat -anp | grep 2381
netstat -anp | grep 2886
netstat -anp | grep 3886
netstat -anp | grep 2888
netstat -anp | grep 3888
netstat -anp | grep 2889 
netstat -anp | grep 3889

启动zookeeper集群

创建三个端口,启动之前需要进入管理员权限,或者普通用户被授予可执行权限

/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
/opt/kafka1/bin/zookeeper-server-start.sh /opt/kafka1/config/zookeeper.properties
/opt/kafka2/bin/zookeeper-server-start.sh /opt/kafka2/config/zookeeper.properties

如果出现如下信息,且无报错,则启动集群成功,一般启动一个是会报错的,必须要全部启动,集群才不会报错

搭建kafka集群

修改配置

/opt/kafka/config/server.properties

vi /opt/kafka/config/server.properties

修改配置为如下,其他配置不要改动

broker.id=0
listeners=PLAINTEXT://localhost:9092
log.dirs=/tmp/kafka0-logs
zookeeper.connect=localhost:2181,localhost:2281,localhost:2381

需要自己创建/tmp/kafka0-logs文件夹

mkdir /tmp/kafka0-logs

/opt/kafka1/config/server.properties

vi /opt/kafka1/config/server.properties

修改配置为如下,其他配置不要改动

broker.id=1
listeners=PLAINTEXT://localhost:9093
log.dirs=/tmp/kafka1-logs
zookeeper.connect=localhost:2181,localhost:2281,localhost:2381

需要自己创建/tmp/kafka1-logs文件夹

mkdir /tmp/kafka1-logs

/opt/kafka2/config/server.properties

vi /opt/kafka2/config/server.properties

修改配置为如下,其他配置不要改动

broker.id=2
listeners=PLAINTEXT://localhost:9094
log.dirs=/tmp/kafka2-logs
zookeeper.connect=localhost:2181,localhost:2281,localhost:2381

需要自己创建/tmp/kafka2-logs文件夹

mkdir /tmp/kafka2-logs

启动kafka集群

创建三个终端,启动集群,也是需要权限

/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
/opt/kafka1/bin/kafka-server-start.sh /opt/kafka1/config/server.properties
/opt/kafka2/bin/kafka-server-start.sh /opt/kafka2/config/server.properties

出现如下情况,说明我们启动的三个服务器kafaka集群的id分别是0、1、2,且已经启动成功


使用kafka集群

生产消息

运行后即可在命令行输入字符串,即要发送的消息

/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic

消费消息

需要再开一个终端用于接收消息,可以看到,发送消息的端口是9092,但是消费消息的端口是9093,9094,也仍然可以消费消息

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic mytopic --from-beginning
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9094 --topic mytopic --from-beginning

以上是关于从零开始搭建Kafka集群遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务

(十三)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的zookeeper版kafka集群服务

从零开始搭建RabbitMQ集群遇到的问题

kafka系列二:多节点分布式集群搭建

大数据课后作业:从零搭建canal实时采集数据

踩坑笔记linux搭建kafka集群,详细到复制命令就能成功