Kafka数据迁移至nfs

Zookeeper Kafka部署

硬件环境信息表

bash 复制代码
IP 192.168.40.10
IP 192.168.40.11
IP 192.168.40.12
IP 192.168.40.13    //nfs使用

部署路径:/usr/local
Cpu内存: 4C/16G
磁盘:200G

应用安装目录布局

zookeeper

zookeeper在单机环境部署了3个实例,进程侦听端口分别为2184、2185、2186,myid分别为3、4、5。

kafka

kafka在单机环境部署了3个实例,进程侦听端口分别为9092、9093、9094,broker id分别为0、1、2。

zookeeper集群节点

zookeeper的运行模式有standalone和replicated两种模式。

zookeeper集群的角色有Leader、follower和Observer。

Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求,它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO。

Follower响应本服务器上的读请求外,处理leader的提议,并在leader提交该提议时在本地也进行提交。

Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。

另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。

zookeeper集群模式部署,因其分布式机制中的leader投票选举算法因素,为了保证Zookeeper本身的Leader投票选举顺利进行,通常将Server部署为奇数个,并且只允许不过半的节点数停机,若需容忍n个Server的失败,zookeeper集群必须至少保证有2n+1个Server节点。

当前zookeeper集群部署为replicated模式,节点数为3个。

kafka集群节点

本次测试的kafka集群节点数为3个,分布式模式部署运行,一个kafka集群由多个kafka实例组成,每个kafka实例就是一个broker,每个broker有一个唯一的broker id,zookeeper来选举出一个broker成为kafka集群中的leader,kafka集群的broker、producer、consumer、topic、partition、isr也依赖于zookeeper来保存meta信息来保证集群系统可用性。

部署 NFS 存储

NFS 存储主要是为了给 Kafka、ZooKeeper 提供稳定的后端存储,当 Kafka、ZooKeeper 的 Pod 发生故障重启或迁移后,依然能获得原先的数据。

另外我们会在nfs创建zookeeper kafka的存储目录。

安装 NFS

这里我选择13这个节点创建 NFS 存储,首先执行如下命令安装 NFS:

bash 复制代码
yum -y install nfs-utils
yum -y install rpcbind

创建共享文件夹

编辑 /etc/exports 文件:

bash 复制代码
vi /etc/exports
/usr/local/kafka/pv1 *(rw,sync,no_root_squash)
/usr/local/kafka/pv2 *(rw,sync,no_root_squash)
/usr/local/kafka/pv3 *(rw,sync,no_root_squash)
/usr/local/zookeeper/pv1 *(rw,sync,no_root_squash)
/usr/local/zookeeper/pv2 *(rw,sync,no_root_squash)
/usr/local/zookeeper/pv3 *(rw,sync,no_root_squash)

保存退出后执行如下命令重启服务:

bash 复制代码
systemctl restart rpcbind
systemctl restart nfs
systemctl enable nfs

执行exportfs -v 命令可以显示出所有的共享目录:

而其他的 zookeeper kafka节点上需要执行如下命令安装 nfs-utils 客户端:

bash 复制代码
yum -y install nfs-util

迁移步骤

因为kafka zookeeper数据存储在本地,nfs服务端存储目录挂载到本地,只需要把本地数据目录分别拷贝到nfs相应数据目录即可,迁移即可完成。

迁移后再做kafka的生产消费测试,生产和消费成功。

再消费和查询历史数据,也可以消费到和查询到,证明迁移成功。

相关推荐
ALex_zry6 小时前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
为什么不问问神奇的海螺呢丶8 小时前
n9e categraf rabbitmq监控配置
分布式·rabbitmq·ruby
TTBIGDATA12 小时前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
m0_6873998414 小时前
telnet localhost 15672 RabbitMQ “Connection refused“ 错误表示目标主机拒绝了连接请求。
分布式·rabbitmq
indexsunny14 小时前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
陌上丨14 小时前
生产环境分布式锁的常见问题和解决方案有哪些?
分布式
新新学长搞科研14 小时前
【智慧城市专题IEEE会议】第六届物联网与智慧城市国际学术会议(IoTSC 2026)
人工智能·分布式·科技·物联网·云计算·智慧城市·学术会议
泡泡以安15 小时前
Scrapy分布式爬虫调度器架构设计说明
分布式·爬虫·scrapy·调度器
编程彩机16 小时前
互联网大厂Java面试:从Spring Boot到分布式事务的技术场景解析
spring boot·kafka·分布式事务·微服务架构·java面试·技术解析
没有bug.的程序员16 小时前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融