kafka搭建kraft集群模式

本文介绍如何搭建基于Kafka 3.0.0的无Zookeeper集群,包括配置文件修改、集群初始化及启动步骤,并演示了创建主题及分区领导者的动态选举过程。

kafka2.8之后不适用zookeeper进行leader选举,使用自己的controller进行选举

1.准备工作

准备三台服务器 192.168.3.110 192.168.3.111 192.168.3.112,三台服务器都要先安装好jdk1.8,配置好环境变量, 下载好kafka3.0.0二进制压缩包
解压后进入conf/kraft目录下,修改server.properties文件
在这里插入图片描述

2.修改配置文件

先修改110节点,主要修改下面的几个参数 node.id要唯一,跟leader选举有关系
在这里插入图片描述
数据存储位置也要改一下
在这里插入图片描述
其他111和112服务器也按照改一下,把node.id改一下,ip也要改成对应的ip

3.初始化集群
在其中一台服务器上执行下面命令生成一个uuid

sh kafka3.0.0/bin/kafka-storage.sh random-uuid

在这里插入图片描述
用该uuid格式化kafka存储目录,三台服务器都要执行以下命令

sh kafka3.0.0/bin/kafka-storage.sh format -t 5Wr3UWh9SPGFUfX1WQlzAA -c kafka3.0.0/config/kraft/server.properties

在这里插入图片描述
三台服务器都启动kafka

sh kafka3.0.0/bin/kafka-server-start.sh -daemon kafka3.0.0/config/kraft/server.properties

在这里插入图片描述
集群启动之后,创还能一个tipic测试,在哪一台服务器上创建都行

sh kafka3.0.0/bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic kafka --partitions 3 --replication-factor 3

在这里插入图片描述
查看tipoc分区情况

sh kafka3.0.0/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe kafka

在这里插入图片描述
这时候把111节点kafka关掉,会重新选举,从ar里面第一个,并且在isr中存活的副本成为leader,112成为分区2的leader
在这里插入图片描述

要使用 Docker Compose 搭建 Kafka KRaft 集群,可参考以下步骤及示例: ### 前提条件 若之前安装过旧版本的 Docker,可使用以下命令卸载: ```bash sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce ``` [^3] ### 部署 KafkaKRaft 模式 KafkaKRaft 模式不用依赖 Zookeeper。完成搭建后,可进行消费 Kafka 主题的操作: 在新终端进入容器,执行命令: ```bash docker exec -it --user root kafka bash kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning ``` 切换到之前的终端,输入如 `a b c d` ,若能成功消费,则部署完成 [^1]。 ### 编写 Docker Compose 文件 以下是一个简单的 Kafka 集群的 Docker Compose 示例: ```yaml kafka1: restart: always image: wurstmeister/kafka:2.13_2.8.1 container_name: kafka1 hostname: kafka1 ports: - '9092:9092' environment: - KAFKA_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2182,zookeeper3:2183/kafka - KAFKA_BROKER_ID=1 - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://182.92.152.225:9092 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3 - KAFKA_NUM_PARTITIONS=1 volumes: - /etc/localtime:/etc/localtime - /home/sumengnan/apache/kafka/kafka1/data:/kafka/kafka-logs-kafka1 - /home/sumengnan/apache/kafka/kafka1/logs:/opt/kafka/logs networks: - net ``` 需注意,此示例是普通 Kafka 集群配置,对于 KRaft 模式,要根据 KRaft 的特性修改环境变量等配置,如移除 `KAFKA_ZOOKEEPER_CONNECT`,添加 KRaft 相关配置,如 `KAFKA_PROCESS_ROLES`、`KAFKA_CONTROLLER_QUORUM_VOTERS` 等 [^2]。 ### 启动集群 在 Docker Compose 文件所在目录,使用以下命令启动 Kafka 集群: ```bash docker-compose up -d ``` ### 验证集群 可通过 Kafka 客户端工具(如 `kafka-topics.sh`、`kafka-console-producer.sh`、`kafka-console-consumer.sh`)验证集群是否正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值