不依赖zookeeper的Kafka集群

一、环境准备

本地安装测试:三台主机:192.168.10.110,192.168.10.120,192.168.10.130

1、下载安装包

这里使用的是3.7.1版本的Kafka安装包,以及jdk-17的环境配置

kafka安装包:https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz

jdk-17安装包:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

2、安装jdk-17 

这里定义的Kafka以及jdk的安装位置统一为 /root/chen

创建路径并解压缩安装包,所有节点相同操作。

tar -xf jdk-17_linux-x64_bin.tar.gz -C chen

配置环境,使其生效

vim .bash_profile

JAVA_HOME=/root/chen/jdk-17.0.12
PATH=$PATH:$JAVA_HOME/bin:$HOME/.local/bin:$HOME/bin
export PATH

运行并验证

source .bash_profile

java -version

3、调整系统参数

vim /etc/sysctl.conf
设置为系统支持的最大容量
vm.max_map_count=655360

启动生效

sysctl -p

二、安装Kafka集群

kraft模式中,controller角色替代了zookeeper的功能。正常是使用多台主机作为controller角色,这里方便测验,使用一台节点。

1、安装controller节点

(1)解压安装包到指定的位置

tar -xf kafka_2.13-3.7.1.tgz -C chen/

(2)创建目录

创建数据文件目录

mkdir -p chen/kafka-data

创建日志目录

mkdir -p chen/kafka-logs

(3)修改配置文件部署

#controller节点,修改controller.properties配置文件,broker节点,修改broker.properties文件

vim chen/kafka_2.13-3.7.1/config/kraft/controller.properties

修改以下配置项

#controller节点,broker节点,修改为broker

process.roles=controller

#集群id号,同一个集群中,不同机器的id号不同

node.id=1

#contrler节点的IP+端口

controller.quorum.voters=1@192.168.10.130:9093

controller.listener.names=CONTROLLER

#处理服务进出网络通信的线程数,一般设置为CPU的一半

num.network.threads=3

num.io.threads=8

log.dirs=/root/chen/kafka-data

#分片为2,一般依据broker节点数据进行设计的

num.partitions=2

#日志恢复线程数量,broker启动或者分片重新分片时,需要对存储的日志进行恢复以确保数据的一致性。这个过程可能包括检查日志文件、重建索引等操作。

num.recovery.threads.per.data.dir=2

#设置为1意味着这个主题只有一个副本。这会提高写入性能,因为不需要等待其他副本确认,但同时也会降低容错性,如果唯一的副本丢失,那么所有消费者的偏移量信息也将丢失。

offsets.topic.replication.factor=1

#禁止了自动领导者的再平衡过程。
auto.leader.rebalance.enable=false

#不允许非干净的领导人选举,避免在某些极端情况下出现数据丢失的情况。但是,这也可能导致在没有合适候选者的情况下分区变得不可用。
unclean.leader.election.enable=false

#允许通过命令行工具或API删除主题。
delete.topic.enable=true

#允许Kafka自动创建主题。
auto.create.topics.enable=true

#日志数据存储时间(小时)

log.retention.hours=168
 

(4)修改JVM参数

vim chen/kafka_2.13-3.7.1/bin/kafka-server-start.sh

# 定位到 KAFKA_HEAP_OPTS,添加if中的两行,依据服务性能进行设置相应的JVM参数
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
   export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
   export JMX_PORT="9999"
fi

(5)修改Kafka日志目录

vim chen/kafka_2.13-3.7.1/bin/kafka-run-class.sh

# 定位到LOG_DIR,添加一行配置 第187行添加

LOG_DIR=/root/chen/kafka-logs

# 修改日志级别,都设置为WARN

vim chen/kafka_2.13-3.7.1/config/log4j.properties

log4j.rootLogger=WARN, stdout, kafkaAppender

(5)生成UUID

只需要在一台机器上执行就可以了

cd chen/kafka_2.13-3.7.1/bin/

./kafka-storage.sh random-uuid

(6)格式化存储路径(所有节点)

#controller节点

./kafka-storage.sh format -t tr36QtmQQySGKnA9HDRbDA -c ../config/kraft/controller.properties

#broker节点

./kafka-storage.sh format -t tr36QtmQQySGKnA9HDRbDA -c ../config/kraft/broker.properties

(7)服务启动

#controller节点

./kafka-server-start.sh -daemon ../config/kraft/controller.properties

#broker节点

./kafka-server-start.sh -daemon ../config/kraft/broker.properties

(8)查看集群信息

在controller节点上进行查看

./kafka-metadata-quorum.sh --bootstrap-controller 192.168.10.130:9093 describe --status

创建topic,生产数据并进行消费测试

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

消费测试

./kafka-console-consumer.sh --bootstrap-server 192.168.10.120:9092 --topic test

./kafka-topics.sh --bootstrap-server 192.168.10.120:9092 --describe --topic test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值