kafka集群部署(zk版-kafka_2.13-3.1.0)

环境:
Os:Centos 7
kafka:2.13-3.1.0
IP 服务
192.168.1.134 zookeeper+kafka-broker
192.168.1.135 zookeeper+kafka-broker
192.168.1.136 zookeeper+kafka-broker

 

介质下载地址
https://archive.apache.org/dist/kafka/ 

 

1.安装jdk
每台机器上都需要安装
安装方法可以参考如下链接
https://www.cnblogs.com/hxlasky/p/14775706.html

[root@host135 ~]# java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)

 

2.下载解压Kafka(自带 zookeeper 脚本)
每台机器上都做同样的操作
[root@host134 soft]#cd /soft
[root@host134 soft]#tar -zxvf kafka_2.13-3.1.0.tgz
[root@host134 soft]#mv kafka_2.13-3.1.0 /opt/kafka

 

3.创建 ZK 数据目录、Kafka 日志目录
mkdir -p /opt/kafka/zookeeper_data
mkdir -p /opt/kafka/kafka_logs

 

####################部署Zookeeper集群部署#######################################

1.修改 zookeeper 配置文件
vi /opt/kafka/config/zookeeper.properties

# ZK客户端端口
clientPort=2181
# 数据目录
dataDir=/opt/kafka/zookeeper_data
# 最大客户端连接数
maxClientCnxns=0
# 集群节点列表,三台完全相同,只有leader角色的机器才会有2888端口,3888每个机器都会有
server.1=192.168.1.134:2888:3888
server.2=192.168.1.135:2888:3888
server.3=192.168.1.136:2888:3888

##follower 节点初始化同步允许最大心跳数
initLimit=10
##leader follower 数据同步超时心跳数
syncLimit=5

tickTime=2000

##启用一些验证命令,启用白名单,为安全起见,一般情况下不要开启
##4lw.commands.whitelist=stat,ruok,conf,envi,mntr

 

2.写入 myid(非常关键!每台不一样)
192.168.1.134
echo 1 > /opt/kafka/zookeeper_data/myid

192.168.1.135
echo 2 > /opt/kafka/zookeeper_data/myid

192.168.1.136
echo 3 > /opt/kafka/zookeeper_data/myid

 

3.启动 Zookeeper(三台依次启动)
cd /opt/kafka
# 后台启动
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

 

4.检查ZK进程
[root@localhost zookeeper_data]# jps|grep QuorumPeerMain
27647 QuorumPeerMain


日志目录
/opt/kafka/logs/zookeeper.out
/opt/kafka/logs/server.log

 

5.ZK集群状态验证

/opt/kafka/bin/zookeeper-shell.sh 192.168.1.134:2181
ls /
[zookeeper]

 

[root@host134 config]#yum install nc
[root@host134 config]# echo srvr | nc 192.168.1.134 2181
Zookeeper version: 3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
Latency min/avg/max: 0/0.0/0
Received: 4
Sent: 3
Connections: 1
Outstanding: 0
Zxid: 0x10000000c
Mode: follower
Node count: 5

[root@host135 config]# echo srvr | nc 192.168.1.135 2181
Zookeeper version: 3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x300000000
Mode: follower
Node count: 5

[root@localhost config]# echo srvr | nc 192.168.1.136 2181
Zookeeper version: 3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x300000000
Mode: leader
Node count: 5
Proposal sizes last/min/max: -1/-1/-1

 

 

6.停止命令
# 三台全部停止ZK
/opt/kafka/bin/zookeeper-server-stop.sh

 

7.做成系统服务
7.1 编辑服务文件

vi /etc/systemd/system/zookeeper.service

[Unit]
Description=Apache ZooKeeper Server (Kafka bundled)
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
##PrivateTmp=true
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_361"
[Install]
WantedBy=multi-user.target

 

6.2 重新加载 systemd使其识别新服务文件
systemctl daemon-reload

 

6.3 开机自启
systemctl enable zookeeper

 

6.4 立即启动服务
systemctl start zookeeper

systemctl stop zookeeper

 

###############################配置Kafka Broker(ZK 模式)##################################################

1.修改各节点的配置

192.168.1.134
vi /opt/kafka/config/server.properties

# broker.id 集群唯一,不能重复
broker.id=100
# broker监听地址
listeners=PLAINTEXT://192.168.1.134:9092
# 对外暴露访问地址,客户端连接用
advertised.listeners=PLAINTEXT://192.168.1.134:9092
# kafka消息日志目录
log.dirs=/opt/kafka/kafka_logs

# ZK集群地址列表,三台kafka配置完全一致!
zookeeper.connect=192.168.1.134:2181,192.168.1.135:2181,192.168.1.136:2181
zookeeper.connection.timeout.ms=18000

# 集群副本默认参数(3节点推荐)
##default.replication.factor=3 ##手工添加到最后面,不需要
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2

num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1

 

将配置文件拷贝到另外的服务器
scp /opt/kafka/config/server.properties root@192.168.1.135:/opt/kafka/config/
scp /opt/kafka/config/server.properties root@192.168.1.136:/opt/kafka/config/

 

修改的地方

192.168.1.135机器
broker.id=200
listeners=PLAINTEXT://192.168.1.135:9092
advertised.listeners=PLAINTEXT://192.168.1.135:9092


192.168.1.136机器
broker.id=300
listeners=PLAINTEXT://192.168.1.136:9092
advertised.listeners=PLAINTEXT://192.168.1.136:9092

 

2.启动
每个节点都执行
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-stop.sh

 

3.验证

3.1 ZK-Shell 查看 Broker 是否注册成功

[root@host134 milvus]# /opt/kafka/bin/zookeeper-shell.sh 192.168.1.134:2181
Connecting to 192.168.1.134:2181
Welcome to ZooKeeper!
JLine support is disabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
ls /brokers/ids
[100, 200, 300]

get /brokers/ids/100
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.1.134:9092"],"jmx_port":-1,"port":9092,"host":"192.168.1.134","version":5,"timestamp":"1788169904319"}
get /brokers/ids/200
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.1.135:9092"],"jmx_port":-1,"port":9092,"host":"192.168.1.135","version":5,"timestamp":"1788171023207"}
get /brokers/ids/300
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.1.136:9092"],"jmx_port":-1,"port":9092,"host":"192.168.1.136","version":5,"timestamp":"1788169900473"}

 

3.2 列出所有的broker

[root@host134 milvus]# /opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092
192.168.1.134:9092 (id: 100 rack: null) -> (
        Produce(0): 0 to 9 [usable: 9],
        Fetch(1): 0 to 13 [usable: 13],
        ListOffsets(2): 0 to 7 [usable: 7],
        ...
)
192.168.1.135:9092 (id: 200 rack: null) -> (
        Produce(0): 0 to 9 [usable: 9],
        Fetch(1): 0 to 13 [usable: 13],
        ListOffsets(2): 0 to 7 [usable: 7],
        ...
)
192.168.1.136:9092 (id: 300 rack: null) -> (
        Produce(0): 0 to 9 [usable: 9],
        Fetch(1): 0 to 13 [usable: 13],
        ListOffsets(2): 0 to 7 [usable: 7],
        ...
)

 

3.3 创建测试 Topic

/opt/kafka/bin/kafka-topics.sh --create --topic hxl_test_cluster_01 --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092

查看topic hxl_test_cluster_01

[root@host134 config]# /opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092 --describe --topic hxl_test_cluster_01
Topic: hxl_test_cluster_01      TopicId: ktjpNvTsTO-MIcjyS9x_-A PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: hxl_test_cluster_01      Partition: 0    Leader: 100     Replicas: 100   Isr: 100

默认的分区和副本数都是1

 

##设置分区数和副本数
/opt/kafka/bin/kafka-topics.sh --create --topic hxl_test_cluster_02 --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092 --partitions 3 --replication-factor 3

 

3.4 消费组

创建消费组接收消息
/opt/kafka/bin/kafka-console-consumer.sh --topic hxl_test_cluster_01 --group hxl-consumer-group-01 --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092
这个进程一直挂着不会结束

 

产生消息
[root@host134 soft]# /opt/kafka/bin/kafka-console-producer.sh --topic hxl_test_cluster_01 --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092
>fddggf
>ggrrer

上面的窗口会输消息
[root@host134 config]# /opt/kafka/bin/kafka-console-consumer.sh --topic hxl_test_cluster_01 --group hxl-consumer-group-01 --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092
fddggf
ggrrer

需要使用Ctrl+C中断进程

 

查看消费组
列出消费组
[root@host134 config]# /opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092 --list
hxl-consumer-group-01

 

查看消费组消费情况

[root@host134 config]# /opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.134:9092,192.168.1.135:9092,192.168.1.136:9092 --describe --group hxl-consumer-group-01

Consumer group 'hxl-consumer-group-01' has no active members.

GROUP                 TOPIC               PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
hxl-consumer-group-01 hxl_test_cluster_01 0          5               5               0               -               -               -

 

3.集群停止顺序(先停Kafka,再停ZK)

# 脚本方式
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/zookeeper-server-stop.sh

 

4.将kafka启停做成服务方式

 

posted @ 2026-09-01 11:38  slnngk  阅读(15)  评论(0)    收藏  举报