Linux部署kafka集群

Linux部署kafka集群(亲测有效)

Linux部署kafka(亲测有效)

网上有太多太多抄来抄去的教程,要不就是少各种环境的说明,要不就是各种配置根本就是错误的,要不就是只说一部分,要不就是防火墙网络环境不说,导致很多同学按照各大博客网站的教程,根本搭建不起来kafka集群。

我自己按照网上的教程几乎没有成功过,都是遇到问题各种搜索,很多教程都没有java、zookeeper、防火墙等设置。

现在我把亲自在服务器上搭建的全部过程写成文章供大家参考。

环境准备

操作系统版本:centos 7.9.2009

服务器列表:(需修改为自己的ip地址)

  • • 192.168.229.227 server01

  • • 192.168.229.228 server02

  • • 192.168.229.229 server02

java安装包:jdk-8u351-linux-x64.tar.gz

zooker安装包:zookeeper-3.4.10.tar.gz

kafka安装包:kafka_2.11-0.11.0.1.tgz

#安装包存放目录
mkdir /root/software

#zookeeper、kafka数据存放目录
mkdir -p /data/zookeeper/{data,logs}
mkdir -p /data/kafka/data

#软件安装目录为
/opt

#/etc/hosts添加主机信息
vim /etc/hosts

192.168.229.227 server01
192.168.229.228 server02
192.168.229.229 server02

#验证主机信息是否添加成功
ping server01
ping server02
ping server03

图片

一、软件下载

关注公众号若愚Linux回复:kafka集群进行下载

将下载好的软件放到/root/software

二、安装java环境(所有服务器)

cd /root/software
#解压java压缩包
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /opt
mv /opt/jdk1.8.0_351 /opt/jdk1.8

#配置环境变量
vim /etc/profile

#在文件尾部追加以下内容
export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#让环境变量生效
source /etc/profile

#检查是否安装成功
java -version

图片

三、部署zookeeper集群(所有服务器)

1、安装zookeeper

cd /root/software

#解压zookeeper压缩包
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt
mv /opt/zookeeper-3.4.10 /opt/zookeeper

#配置环境变量
vim /etc/profile

#在文件尾部追加以下内容
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#让环境变量生效
source /etc/profile

2、配置zookeeper配置文件

#拷贝zookeeper配置文件
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
maxClientCnxns=60
dataLogDir=/data/zookeeper/logs
server.1=server01:2888:3888
server.2=server02:2888:3888
server.3=server03:2888:3888

3、开启防火墙端口

firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent
firewall-cmd --reload

4、节点创建myid文件,节点对应id

#设置myid文件是为了和zoo.cfg文件中的server.1、server.2、server.3对应

#server01服务器
cd /data/zookeeper/data
echo "1" > myid

#server02服务器
cd /data/zookeeper/data
echo "2" > myid

#server03服务器
cd /data/zookeeper/data
echo "3" > myid

5、启动zookeeper集群

#启动zookeeper集群
zkServer.sh start

#查看是否启动成功
netstat -tnlp|grep 2181

图片

四、安装kafka集群(所有服务器)

1、安装kafka集群

cd /root/software

#解压kafka压缩包
tar -zxvf kafka_2.11-0.11.0.1.tgz -C /opt
mv /opt/kafka_2.11-0.11.0.1 /opt/kafka

#配置环境变量
vim /etc/profile

#在文件尾部追加以下内容
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

#让环境变量生效
source /etc/profile

2、修改配置文件(每台服务器分别配置)

集群服务器中的配置文件只有broker.id=编号这一行不同

为了防止有的同学忘记修改、忘记修改、忘记修改,这里把三台服务器的配置文件都写出来了。

server01服务器

#broker 的全局唯一编号,不能重复
broker.id=0
#开启删除 topic 功能
delete.topic.enable=true
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径(实际是kafka的topic数据)
log.dirs=/data/kafka/data
#topic 在当前 broker 上的分区个数
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置连接 Zookeeper 集群地址
zookeeper.connect=server01:2181,server02:2181,server03:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

server02服务器

#broker 的全局唯一编号,不能重复
broker.id=1
#开启删除 topic 功能
delete.topic.enable=true
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径(实际是kafka的topic数据)
log.dirs=/data/kafka/data
#topic 在当前 broker 上的分区个数
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置连接 Zookeeper 集群地址
zookeeper.connect=server01:2181,server02:2181,server03:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

server03服务器

#broker 的全局唯一编号,不能重复
broker.id=2
#开启删除 topic 功能
delete.topic.enable=true
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径(实际是kafka的topic数据)
log.dirs=/data/kafka/data
#topic 在当前 broker 上的分区个数
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置连接 Zookeeper 集群地址
zookeeper.connect=server01:2181,server02:2181,server03:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

3、开启防火墙端口

firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload

4、启动集群

依次在 server01、server02、server03 节点上启动 kafka

cd /opt/kafka
kafka-server-start.sh -daemon config/server.properties

netstat -tnlp|grep 9092

 

5、关闭集群

kafka-server-stop

五、kafka命令行操作

1、创建topic

选项说明: 

--topic 定义 topic 名 

--replication-factor 定义副本数 

--partitions 定义分区数,一般有几台服务器写几,比如有3台服务器就写3

kafka-topics.sh  --zookeeper server01:2181 --create --replication-factor 2 --partitions 3 --topic test

2、查看当前服务器中的所有 topic

kafka-topics.sh --zookeeper server01:2181 --list

图片

3、删除 topic

kafka-topics.sh  --zookeeper server01:2181 --delete  --topic test

4、发送消息

kafka-console-producer.sh --broker-list server01:9092 --topic test

图片

5、消费消息

kafka-console-consumer.sh --zookeeper server01:2181 --topic test

图片

posted @ 2022-11-25 15:09  往事已成昨天  阅读(507)  评论(0编辑  收藏  举报