前言 前面的博客内容我们已经实现了zookeeper版的高可用kafka集群服务,在新版的kafka内容中,已经使用raft协议实现kafka集群的通信,可以不再依赖zookeeper集群,虽然属于实验阶段,但相信未来肯定会成为取代zookeeper的最优方案,并且raft协议已经在redis中得到了充分的实践和验证。话不多说,开始我们本节内容。
正文
- 关于kafka镜像的说明
- 这里我们依然使用ydockerp/kafka:3.1.0镜像完成本节内容的案例实战
- kafka集群服务搭建
- 点击应用负载-服务-创建-有状态服务
文章图片
- 填写kafka基本配置信息,点击下一步
文章图片
- 选择容器组副本数量为3,点击添加容器镜像
文章图片
- 加载kafka容器镜像ydockerp/kafka:3.1.0,加载成功后,并点击使用默认端口
文章图片
- kakfa集群需要获取配置文件的controller.quorum.voters这个参数的值,用于集群通信,根据k8s中服务的生成规则,本集群的controller.quorum.voters为
0@app-kafka-raft-v1-0.app-kafka-raft.app.svc.cluster.local:9093,1@app-kafka-raft-v1-1.app-kafka-raft.app.svc.cluster.local:9093,2@app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9093
这里需要注意的是@前面的值是我们k8s生成多副本的索引值,我们kafka集群中node.id参数值也是取自该值,app-kafka-raft是我们前面填写配置信息的名称,即pod的名称,app-kafka-raft-v1-0是k8s根据配置信息的名称和版本号生成的pod容器的主机名称,app是我们k8s的命名空间namespace,svc.cluster.local是固定写法,最终形成的app-kafka-raft-v1-0.app-kafka-raft.app.svc.cluster.local就是容器中pod相互访问的服务名,这里我们有三个副本,那就写三个副本服务的服务名用逗号分割。这里服务名称是k8s服务的固定命名方式,不懂的可以查看k8s的官方说明文档。
- 填写controller.quorum.voters集群通信的环境变量配置CONTROLLER_QUORUM_VOTERS,该值是镜像的环境变量配置,固定写法,不能修改,镜像中controller.quorum.voters是根据该CONTROLLER_QUORUM_VOTERS环境变量取值的。并勾选同步主机时区,点击对号。点击下一步。
文章图片
- 添加存储卷模板
文章图片
- 填写pvc存储卷基本配置信息,勾选对号,点击下一步
文章图片
- 点击创建,完成kafka集群创建
文章图片
文章图片
- 验证 kafka集群服务搭建
- 点击进入kafka的任意一个节点结语 【kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务】到这里使用KubeSphere管理平台搭建一个高可用的raft版kafka集群服务就结束了,创作不易,别忘了关注、收藏、加点赞哦,我们下期见。。。
文章图片
- 通过kafka命令创建一个kafka的主题first
#创建主题 ./bin/kafka-topics.sh --bootstrap-server app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9092 --create --topic first --partitions 3 --replication-factor 3
文章图片
- 通过kafka命令查询创建的主题详细信息
./bin/kafka-topics.sh --bootstrap-server app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9092 --describe --topic first
文章图片
推荐阅读
- 宜搭小技巧|第一时间看到审批进度(消息通知来帮你)
- 稳定性与高可用保障的工作思路
- runtime|谷歌编程之夏即将开启,快来申请开源任务吧(远程)
- 从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)
- OPLG(新一代云原生可观测最佳实践)
- 如何发起 MQTT 亿级连接和千万消息吞吐性能测试
- 如何设计一条稳定的应用交付流程(|云效工程师指北)
- kubernetes|[问题已处理]-kubernetes使用hostpath在单节点上共享文件
- 将Jenkins部署在kubernetes集群中