CentOS7安装部署Kafka with KRaft
一、前言
1.简介
Apache Kafka 是一个开源分布式事件流平台,已被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。
KRaft(Kafka Raft)模式是从 Apache Kafka 2.8.0 版本开始引入,KRaft 旨在摒弃对 ZooKeeper 的依赖。在以前的版本中,Apache Kafka 依赖于 ZooKeeper 来管理集群元数据和协调集群,但这增加了系统的复杂性和运维负担。KRaft 模式通过引入 Raft 协议直接在 Kafka 内部处理这些功能,从而简化了 Kafka 的架构和部署过程。
2.架构
ARCHITECTURE - Apache Kafka
3.环境
- Linux 发行版:CentOS-7-x86_64-DVD-1804.iso
- JDK 版本:Java SE Development Kit 11.0.19
- Kafka 版本:3.6.0
Kafka 官网:https://kafka.apache.org/
Kafka QuickStart:https://kafka.apache.org/documentation/#quickstart
intro - Apache Kafka:https://kafka.apache.org/intro
Know Streaming 官网:https://knowstreaming.com/
CentOS7安装部署Java11:https://blog.csdn.net/u011424614/article/details/132418561
CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916
二、正文
1.部署服务器
- Kafka 默认端口
端口 | 描述 |
---|---|
9092 | Kafka Clients |
9093 | Kafka Control Plane |
8083 | Kafka Connect |
8081 | Schema Registry |
8082 | REST Proxy |
8088 | ksqlDB |
- 服务器
机器名 | IP | 节点部署 |
---|---|---|
Kafka-cluster-01 | 192.168.28.121 | Kafka 节点 |
Kafka-cluster-02 | 192.168.28.122 | Kafka 节点 |
Kafka-cluster-03 | 192.168.28.123 | Kafka 节点 |
Kafka-cluster-04 | 192.168.28.124 | Know Streaming 管控平台 |
2.基础环境
1)主机名
- 修改 4 台服务器的主机名
# 121 执行
hostnamectl set-hostname Kafka-cluster-01 --static
hostnamectl set-hostname Kafka-cluster-01 --transient
# 122 执行
hostnamectl set-hostname Kafka-cluster-02 --static
hostnamectl set-hostname Kafka-cluster-02 --transient
# 123 执行
hostnamectl set-hostname Kafka-cluster-03 --static
hostnamectl set-hostname Kafka-cluster-03 --transient
# 124 执行
hostnamectl set-hostname Kafka-cluster-04 --static
hostnamectl set-hostname Kafka-cluster-04 --transient
# 查询状态
hostnamectl status
2)Hosts文件
- 修改 4 台服务器的 hosts 文件
cat > /etc/hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.28.121 Kafka-cluster-01
192.168.28.122 Kafka-cluster-02
192.168.28.123 Kafka-cluster-03
192.168.28.124 Kafka-cluster-04
EOF
3)关闭防火墙
- 可禁用防火墙,或配置开放的端口,后者比较安全
#--关闭防火墙
systemctl stop firewalld.service
#--开机禁用防火墙
systemctl disable firewalld.service
#--防火墙状态
systemctl status firewalld.service
4)JDK 安装部署
在 4 台服务器上安装JDK
- 安装参考:《CentOS7安装部署Java11》
- 安装目录:
/opt/java/jdk-11.0.19
3.单机部署
在 121 服务器上执行
1)下载软件包
- 创建安装目录,并下载
mkdir /opt/kafka
cd /opt/kafka
# 下载
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.6.0.tgz
# 进入安装目录
cd /opt/kafka/kafka_2.13-3.6.0
2)修改配置文件
- 编辑 server.properties 配置文件
vim config/kraft/server.properties
- 内容(修改以下配置,其它不变)
# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.28.121:9092
# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs
3)格式化存储目录
- 生成UUID
bin/kafka-storage.sh random-uuid
# 生成的 UUID
1vL12MYgT52x0C01Hny4KQ
- 格式化存储目录,注意替换生成的 UUID
bin/kafka-storage.sh format -t 1vL12MYgT52x0C01Hny4KQ -c config/kraft/server.properties
4)单机启动
- 启动
cd /opt/kafka/kafka_2.13-3.6.0
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
- 查看运行情况
jps
5)测试
- 进入安装目录
cd /opt/kafka/kafka_2.13-3.6.0
- 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.28.121:9092
- 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.28.121:9092
# 写入内容
first event
second event
- 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.28.121:9092
6)自启动
- 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target
[Service]
Environment="JAVA_HOME=/opt/java/jdk-11.0.19"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.6.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.6.0/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.6.0/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
- 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
- 查询进程状态
systemctl status kafka-server.service
4.集群部署
1)下载软件包
在 121 服务器上执行
- 创建安装目录,并下载
mkdir /opt/kafka
cd /opt/kafka
# 下载
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.6.0.tgz
# 进入安装目录
cd /opt/kafka/kafka_2.13-3.6.0
2)修改配置文件
在 121 服务器上执行
- 编辑 server.properties 配置文件
vim config/kraft/server.properties
- 内容(修改以下配置,其它不变)
# 节点ID,集群节点唯一
node.id=1
# 标识哪些节点是Quorum的投票者节点
controller.quorum.voters=1@192.168.28.121:9093,2@192.168.28.122:9093,3@192.168.28.123:9093
# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.28.121:9092
# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs
3)拷贝Kafka
在 122、123 服务器上执行
- 122 和 123 服务器创建目录
mkdir /opt/kafka
在 121 服务器上执行
- 拷贝 Kafka 到其它服务器
scp -r /opt/kafka/kafka_2.13-3.6.0 root@192.168.28.122:/opt/kafka
scp -r /opt/kafka/kafka_2.13-3.6.0 root@192.168.28.123:/opt/kafka
4)修改配置文件
在 122 服务器上执行
- 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.6.0
vim config/kraft/server.properties
- 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=2
# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.28.122:9092
在 123 服务器上执行
- 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.6.0
vim config/kraft/server.properties
- 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=3
# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.28.123:9092
5)格式化存储目录
在 121 服务器上执行
- 生成UUID
bin/kafka-storage.sh random-uuid
# 生成的 UUID
OukPqtmXSAO2aYUs9kFFbg
在 121、122、123 服务器上执行
- 格式化存储目录,使用生成的 UUID
bin/kafka-storage.sh format -t OukPqtmXSAO2aYUs9kFFbg -c config/kraft/server.properties
6)集群启动
在 121、122、123 服务器上执行
- 启动
cd /opt/kafka/kafka_2.13-3.6.0
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
- 查看运行情况
jps
7)测试
在 121 服务器上执行
- 进入安装目录
cd /opt/kafka/kafka_2.13-3.6.0
- 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.28.121:9092
- 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.28.121:9092
# 写入内容
first event
second event
- 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.28.121:9092
8)自启动
在 121、122、123 服务器上执行
- 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target
[Service]
Environment="JAVA_HOME=/opt/java/jdk-11.0.19"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.6.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.6.0/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.6.0/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
- 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
- 查询进程状态
systemctl status kafka-server.service
5.Kafka管控平台
在 124 服务器上执行
Know Streaming是一套云原生的Kafka管控平台,脱胎于众多互联网内部多年的Kafka运营实践经验,专注于Kafka运维管控、监控告警、资源治理、多活容灾等核心场景。在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设,提供一系列特色的功能,极大地方便了用户和运维人员的日常使用,让普通运维人员都能成为Kafka专家。
Know Streaming 部署:https://doc.knowstreaming.com/product/2-quick-start#21%E5%8D%95%E6%9C%BA%E9%83%A8%E7%BD%B2
1)脚本安装
mkdir /opt/KnowStreaming
cd /opt/KnowStreaming
# 在服务器中下载安装脚本, 该脚本中会在当前目录下,重新安装MySQL。重装后的mysql密码存放在当前目录的mysql.password文件中。
wget https://s3-gzpu.didistatic.com/pub/knowstreaming/deploy_KnowStreaming.sh
# 执行脚本(会提示选择安装的版本)
sh deploy_KnowStreaming.sh
- 访问:http://192.168.28.124:8080
- 默认账号和密码为:
admin
/admin
2)Kafka启动JMX
在 121、122、123 服务器上执行文章来源:https://www.toymoban.com/news/detail-758110.html
- 编辑
kafka-server-start.sh
启动脚本
cd /opt/kafka/kafka_2.13-3.6.0/
vim bin/kafka-server-start.sh
- 编辑内容:除注释外第一行,加入 JMX 端口和指定服务器 IP;注意替换 IP
export JMX_PORT=9999
KAFKA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.28.121"
export KAFKA_OPTS
- 重启 Kafka(选择其中一种重启方式)
# 脚本 重启
cd /opt/kafka/kafka_2.13-3.6.0/
bin/kafka-server-stop.sh
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# systemctl 重启
systemctl stop kafka-server.service
systemctl start kafka-server.service
systemctl status kafka-server.service
- 检测 JMX 端口
netstat -tunlp |grep 9999
3)手动启动
- 服务器重启后,手动启动服务
cd /opt/KnowStreaming/KnowStreaming
# 启动
sh bin/startup.sh
# 关闭
sh bin/shutdown.sh
4)配置 Kafka 集群
文章来源地址https://www.toymoban.com/news/detail-758110.html
三、其它
1.常用命令
命令 | 说明 |
---|---|
systemctl daemon-reload | 重新加载服务配置 |
systemctl start kafka-server.service | 启动服务 |
systemctl enable kafka-server.service | 开机自启动服务 |
systemctl status kafka-server.service | 查询服务状态 |
systemctl stop kafka-server.service | 停止服务 |
systemctl restart kafka-server.service | 重启服务 |
systemctl disable kafka-server.service | 禁用开机自启动服务 |
到了这里,关于CentOS7安装部署Kafka with KRaft的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!