kafka优选副本切换办法

南墨2年前技术文章687

      1. 以topic test为例,假设test的分布为以下状态。

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

2.  假设现在broker-1节点出现问题,希望parititon-0的优先副本发生切换,即由Replicas: 1,2变为

Replicas: 2,1,于此同时,leader由1切换到2。

首先编写迁移文件move.json,内容如下:

{"partitions": [{"topic": "test", "partition": 0, "replicas": [2,1] }],"version":1}

其中,文件的意义是:修改调换partition 0 的replicas的顺序为[2,1]

3.  执行迁移脚本

sh kafka-reassign-partitions.sh --zookeeper zookeeper_IP:24002/kafka --reassignment-json-file move.json --execute

执行完成后的结果为:

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 1 Replicas: 2,1 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

此时,partition-0的副本顺序变为了Replicas: 2,1

构建副本切换文件

创建excution.json,内容为:

{"partitions":[{"topic": "test", "partition": 0}]}

执行副本切换脚本

kafka-preferred-replica-election.sh --zookeeper zookeeper_IP:24002/kafka --path-to-json-file excution.json

执行后结果如下:

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 2 Replicas: 2,1 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

此时,leader已切换broker-2


kafka-preferred-replica-election.sh 可以不加后面的副本切换脚本而直接执行,例如:

kafka-preferred-replica-election.sh --zookeeper zookeeper_IP:2181/kafka,这样会将真个集群的leader全部调整到优选副本


相关文章

Linux 会话管理

Linux 会话管理

在 terminal 终端中输入命令,这种用户与计算机的临时交互称为一次会话(session)。会话的一个重要特点:与其中启动的进程是连在一起的,打开窗口、会话开始,关闭窗口、会话结束,会话内部的进程...

Doris部署介绍

标准部署该文档主要介绍了部署 Doris 所需软硬件环境、建议的部署方式、集群扩容缩容,以及集群搭建到运行过程中的常见问题。在阅读本文档前,请先根据编译文档编译 Doris。软硬件需求概述Doris...

mysql高可用配置(一)

一、简介MySQL使用双向半同步复制模式,通过开源的keepalived实现自动切换,应用通过vip连接数据库。配合自定义脚本,实现故障安全切换,切换过程对应用透明。二、部署主从2.1、在主备节点部署...

k8s集群内的DNS原理与配置

背景:最近公司有个需求,要在POD应用容器里面能够访问到一些外部域名,这些域名都在一台自建的DNS服务器上做了解析绑定。如果直接在Pod容器里的/etc/hosts文件中设置域名解析,或修改/etc/...

ES模糊查询(Wildcard Query)导致CPU打满问题

ES模糊查询(Wildcard Query)导致CPU打满问题

一、概述    Wildcard Query是es中实现模糊查询的一种方式,尤其对有SQL经验的人,会常常习惯于它,毕竟这是和SQL里like操作最相似的查询方式,最近一个客户的es集群就在这上面踩了...

Presto开发语句简介

Presto开发语句简介

根据presto中的结构配置,catalog表示连接,主要看presto中catalog文件夹下的配置,一般包含hive、mysql等,其中可以根据业务的不同设置多个配置文件。schema表示连接中的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。