zookeeper&&kafka单机伪集群搭建
版本说明
使用 kafka 3.2.0 自带的zookeeper,
zookeeper.version=3.6.3
一 zookeeper单机伪集群搭建
1.下载
使用清华镜像,比官网快
https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.2.0/
2.配置
#安装目录为 /usr/local/kafka/kafka_2.13-3.2.0
cd /usr/local
mkdir kafka
cd kafka
tar -zxf kafka_2.12-3.2.0.tgz
#进入配置文件目录
cd /kafka_2.12-3.2.0/config
# 先编辑一份配置文件,复制两份配置文件,共三份三个节点
vim zookeeper.properties
mv zookeeper.properties zookeeper1.properties
cp zookeeper1.properties zookeeper2.properties
cp zookeeper1.properties zookeeper3.properties
#节点1配置文件
clientPort=2181
tickTime=2000
initLimit=10
syncLimit=5
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389
dataDir=/usr/local/kafka/zk1/data
dataLogDir=/usr/local/kafka/zk1/logs
#2287,2288,2289为zookeeper节点之间的通信端口,3387,3388,3389为用来选举leader的端口
#clientPort=2181 才是往kafka中配置的端口,我踩坑了很久
#节点2配置文件
clientPort=2182
tickTime=2000
initLimit=10
syncLimit=5
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389
dataDir=/usr/local/kafka/zk2/data
dataLogDir=/usr/local/kafka/zk2/logs
#节点3配置文件
clientPort=2183
tickTime=2000
initLimit=10
syncLimit=5
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389
dataDir=/usr/local/kafka/zk3/data
dataLogDir=/usr/local/kafka/zk3/logs
#为节点配置不同的数据目录
cd /usr/local/kafka
#节点1
mkdir zk1
cd zk1
mkdir data
cd data
echo 1 > myid
#节点2
mkdir zk2
cd zk2
mkdir data
cd data
echo 2 > myid
#节点3
mkdir zk3
cd zk3
mkdir data
cd data
echo 3 > myid
2.启动
#回到目录
cd /usr/local/kafka/kafka_2.13-3.2.0
#启动命令
#启动节点1
nohup ./bin/zookeeper-server-start.sh ./config/zookeeper1.properties > ../zk1/zk.log 2>&1 &
#间隔几秒后 启动节点2
nohup ./bin/zookeeper-server-start.sh ./config/zookeeper2.properties > ../zk2/zk.log 2>&1 &
#间隔几秒后 启动节点3
nohup ./bin/zookeeper-server-start.sh ./config/zookeeper3.properties > ../zk3/zk.log 2>&1 &
#通过查看 zk.log 查看启动日志
cat ../zk1/zk.log
cat ../zk2/zk.log
cat ../zk3/zk.log
二 zookeeper单机伪集群搭建
1.配置
#进入配置文件目录
cd /usr/local/kafka/kafka_2.13-3.2.0/config
# 先编辑一份配置文件,复制两份配置文件,共三份三个节点
vim server.properties
mv server.properties server1.properties
cp server1.properties server2.properties
cp server1.properties server3.properties
#节点1配置文件
# broker 的全局唯一编号,不能重复,只能是数字。
broker.id=1
# kafka监听的ip,端口
listeners=PLAINTEXT://127.0.0.1:8880
# 处理网络请求的线程数量
num.network.threads=3
# 用来处理磁盘 IO 的线程数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
############################# Log Basics #############################
# kafka 数据存放的路径,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/usr/local/kafka/kafka_logs/broker1_8880
# topic在当前broker上的分区个数
num.partitions=1
# 用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
# 每个topic创建时的副本数,默认是1个副本
offsets.topic.replication.factor=1
############################# Log Retention Policy #############################
# segment文件保留的最长时间,超时将被删除
log.retention.hours=168
# 每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#自动创建topic
auto.create.topics.enable=true
#允许永久删除topic
delete.topic.enable=true
############################# Zookeeper #############################
#配置连接 Zookeeper 集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/kafka
#节点2配置文件
# broker 的全局唯一编号,不能重复,只能是数字。
broker.id=2
# kafka监听的ip,端口
listeners=PLAINTEXT://127.0.0.1:8881
# 处理网络请求的线程数量
num.network.threads=3
# 用来处理磁盘 IO 的线程数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
############################# Log Basics #############################
# kafka 数据存放的路径,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/usr/local/kafka/kafka_logs/broker2_8881
# topic在当前broker上的分区个数
num.partitions=1
# 用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
# 每个topic创建时的副本数,默认是1个副本
offsets.topic.replication.factor=1
############################# Log Retention Policy #############################
# segment文件保留的最长时间,超时将被删除
log.retention.hours=168
# 每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#自动创建topic
auto.create.topics.enable=true
#允许永久删除topic
delete.topic.enable=true
############################# Zookeeper #############################
#配置连接 Zookeeper 集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/kafka
#节点3配置文件
# broker 的全局唯一编号,不能重复,只能是数字。
broker.id=3
# kafka监听的ip,端口
listeners=PLAINTEXT://127.0.0.1:8882
# 处理网络请求的线程数量
num.network.threads=3
# 用来处理磁盘 IO 的线程数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
############################# Log Basics #############################
# kafka 数据存放的路径,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/usr/local/kafka/kafka_logs/broker3_8882
# topic在当前broker上的分区个数
num.partitions=1
# 用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
# 每个topic创建时的副本数,默认是1个副本
offsets.topic.replication.factor=1
############################# Log Retention Policy #############################
# segment文件保留的最长时间,超时将被删除
log.retention.hours=168
# 每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#自动创建topic
auto.create.topics.enable=true
#允许永久删除topic
delete.topic.enable=true
############################# Zookeeper #############################
#配置连接 Zookeeper 集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/kafka
2.启动
cd /usr/local/kafka/kafka_2.13-3.2.0/
#启动kafka集群
nohup ./bin/kafka-server-start.sh ./config/server1.properties > kafka1.log 2>&1 &
#间隔几秒后 启动节点2
nohup ./bin/kafka-server-start.sh ./config/server2.properties > kafka2.log 2>&1 &
#间隔几秒后 启动节点3
nohup ./bin/kafka-server-start.sh ./config/server3.properties > kafka3.log 2>&1 &
#查看启动日志
cat kafka1.log
cat kafka2.log
cat kafka3.log
2.测试
#新建topic,可以更换为集群中任意IP
sh bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 127.0.0.1:8880
#开启生产者端,输入进行生产
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 127.0.0.1:8880
#另外打开一个终端,开启监听端,观察是否输入了生产端的消息
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 127.0.0.1:8880