Linux部署kafka集群(亲测有效)
原创 陈肖萧晓 若愚Linux 2022-11-23 08:00 发表于山东 收录于合集 #linux7个 #kafka1个 #集群1个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