A2--Kafka部署

发布时间 2023-04-04 13:41:44作者: Jerry·

一、版本信息

 
 
JDK 1.8
kafka 3.3.1

二、集群架构

                                                    Kafka-Kraft 架构介绍

 

左图为 Kafka 原有架构,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。
右图为 kraft 模式架构, 不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,
元数据保存在 controller 中, 由 controller 直接进行 Kafka 集群管理。
这样做的好处有以下几个:
⚫ Kafka 不再依赖外部框架, 而是能够独立运行;
⚫ controller 管理集群时, 不再需要从 zookeeper 中先读取数据, 集群性能上升;
⚫ 由于不依赖 zookeeper, 集群扩展时不再受到 zookeeper 读写能力限制;
⚫ controller 不再动态选举, 而是由配置文件规定。 这样我们可以有针对性的加强
controller 节点的配置, 而不是像以前一样对随机 controller 节点的高负载束手无策。

 

三、Kafka-Kraft 集群部署

1)上传 kafka 安装包并解压文件

tar -zxvf kafka_2.13-3.3.1.tgz

2)重命名文件

mkdir /data
mv kafka_2.13-3.3.1 /data/kafka

3)修改/data/kafka/config/kraft/server.properties 配置文件

# kafka 的角色(controller 相当于主机、 broker 节点相当于从机,主机类似 zk 功能)
process.roles=broker, controller
# 节点 ID
node.id=1
# controller 服务协议别名
controller.listener.names=CONTROLLER
# 全 Controller 列表
controller.quorum.voters=1@192.168.11.204:9093,2@192.168.11.205:9093,3@192.168.11.206:9093
# 不同服务器绑定的端口
listeners=PLAINTEXT://192.168.11.204:9092,CONTROLLER://192.168.11.204:9093
# broker 服务协议别名
inter.broker.listener.name=PLAINTEXT
# broker 对外暴露的地址
advertised.Listeners=PLAINTEXT://192.168.11.204:9092
# 协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLA
INTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
# kafka 数据存储目录
log.dirs=/data/kafka/data
# 新增下面内容
message.max.bytes=11534336
queued.max.requests=500

4)分发 kafka文件

scp -r /data/kafka 192.168.11.205:/data
scp -r /data/kafka 192.168.11.206:/data

⚫ 在 205 和 206 上 需 要 对 node.id 相 应 改 变 , 值 需 要 和controller.quorum.voters 对应。
⚫ 在 205 和 206 上 需 要 根 据 各 自 的 IP信息 , 修 改 相 应 的listeners和advertised.Listeners 地址。

5) 初始化集群数据目录

   1) 首先生成存储目录唯一 ID

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

  (2) 用该 ID 格式化 kafka 存储目录(三台节点)。

./bin/kafka-storage.sh format -t J7s9e8PPTKOO47PxzI39VA -c /data/kafka/config/kraft/server.properties

6) 启动 kafka 集群

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

7)停止 kafka 集群

./bin/kafka-server-stop.sh

 

四、添加系统服务

 1)创建系统服务文件并写入内容 

cat /lib/systemd/system/kafka.service << EOF
[Unit]
Description=Kafka Service
After=network.target
 
[Service]
Type=simple
LimitNOFILE=65535
Environment="PATH=/java/jdk1.8.0_161/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/kafka_2.13-3.3.1/bin/kafka-server-start.sh /opt/kafka_2.13-3.3.1/config/kraft/server.properties
ExecStop=/opt/kafka_2.13-3.3.1/bin/kafka-server-stop.sh
Restart=always
 
[Install]
WantedBy=multi-user.target
EOF

2)启动服务

systemctl daemon-reload
systemctl start kafka.service
systemctl enable kafka.service

3)查看服务

systemctl status kafka.service