使用 kafkat 在线扩缩容 kafka replicas
本文档应用环境为 kafka-0.8.2.0, 其余版本请先行测试
场景
线上很多 kafka 的 topic 的副本数为1,这样的设置丧失了 kafka 高可用的特性,所以我们需要把 topic 的副本数至少设置为2(当前3台 kafka)

我们使用 kafkat 这个工具,这个工具是 ruby 写的,所以我们先安装 ruby 环境
参考 https://ruby-china.org/wiki/rvm-guide
这时候你应该已经由了 gem 命令
继续参考https://github.com/airbnb/kafkat 把 kafkat 装上, 并配置好你的 kafka 环境参数到 ~/.kafkatcfg
实操
我们修改 topic 的 replicas 为2
[root@001 kafka]# kafkat partitions IM_APP_BINSPECT_MSG_TOPICTopic Partition Leader Replicas ISRsIM_APP_BINSPECT_MSG_TOPIC 0 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 1 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 2 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 3 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 4 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 5 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 6 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 7 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 8 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 9 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 10 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 11 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 12 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 13 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 14 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 15 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 16 3 [3] [3]IM_APP_BINSPECT_MSG_TOPIC 17 1 [1] [1]IM_APP_BINSPECT_MSG_TOPIC 18 2 [2] [2]IM_APP_BINSPECT_MSG_TOPIC 19 3 [3] [3][root@001 kafka]# kafkat set-replication-factor IM_APP_BINSPECT_MSG_TOPIC --newrf 2 --brokers 1,2,3This operation executes the following assignments:Topic Partition ReplicasIM_APP_BINSPECT_MSG_TOPIC 0 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 1 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 2 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 3 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 4 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 5 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 6 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 7 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 8 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 9 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 10 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 11 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 12 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 13 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 14 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 15 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 16 [3, 2]IM_APP_BINSPECT_MSG_TOPIC 17 [1, 3]IM_APP_BINSPECT_MSG_TOPIC 18 [2, 1]IM_APP_BINSPECT_MSG_TOPIC 19 [3, 2]Proceed (y/n)?yBeginning.Started.[root@001 kafka]# kafkat partitions IM_APP_BINSPECT_MSG_TOPICTopic Partition Leader Replicas ISRsIM_APP_BINSPECT_MSG_TOPIC 0 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 1 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 2 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 3 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 4 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 5 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 6 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 7 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 8 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 9 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 10 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 11 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 12 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 13 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 14 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 15 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 16 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 17 1 [1, 3] [1]IM_APP_BINSPECT_MSG_TOPIC 18 2 [2, 1] [2]IM_APP_BINSPECT_MSG_TOPIC 19 3 [3, 2] [3] |
解释
上面一共执行了3个命令
- kafkat partitions IM_APP_BINSPECT_MSG_TOPIC 查看 topic 的分区情况
- kafkat set-replication-factor IM_APP_BINSPECT_MSG_TOPIC --newrf 2 --brokers 1,2,3 重新设置副本数为2 --newrf 2 , 你有几个 broker就在--brokers 后面指定
- kafkat partitions IM_APP_BINSPECT_MSG_TOPIC 检查是否生效
根据 topic 数据量最后完成的时间也不同(大概几分钟)
这是最后的完成情况
[root@001 kafka]# kafkat partitions IM_APP_BINSPECT_MSG_TOPICTopic Partition Leader Replicas ISRsIM_APP_BINSPECT_MSG_TOPIC 0 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 1 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 2 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 3 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 4 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 5 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 6 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 7 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 8 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 9 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 10 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 11 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 12 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 13 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 14 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 15 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 16 3 [3, 2] [3, 2]IM_APP_BINSPECT_MSG_TOPIC 17 1 [1, 3] [1, 3]IM_APP_BINSPECT_MSG_TOPIC 18 2 [2, 1] [2, 1]IM_APP_BINSPECT_MSG_TOPIC 19 3 [3, 2] [3, 2] |
使用 kafkat 在线扩缩容 kafka replicas的更多相关文章
- 构建Docker平台【第四篇】创建服务及扩缩容等操作
第一步:创建服务 1. 配置 nginx 的 yaml 文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-ng ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容
上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...
- Docker Swarm(七)Scale 扩(缩)容服务
扩(缩)容服务 扩容服务 Service还提供了复制(类似kubernetes里的副本)功能.可以通过 docker service scale 命令来设置服务中容器的副本数: docker serv ...
- 【kubevirt】VirtualMachineInstanceReplicaSet(vmis)-扩缩容-弹性伸缩
@ 目录 概述/理解 使用场景 创建vmis 扩缩容 弹性伸缩 方法1 方法2 概述/理解 VirtualMachineInstanceReplicaSet(vmis)确保指定数量的 VirtualM ...
- Airbnb的动态kubernetes集群扩缩容
Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...
- k8s手动扩缩容
1. 查询deploy副本数,ready数表示副本数 kubectl get deploy 2.通过命令直接扩容或者缩容,--replicas=1表示把my-dep缩容到副本数1,--replicas ...
- Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容
使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...
- 三十三、HPA实现自动扩缩容
通过HPA实现业务应用的动态扩缩容 HPA控制器介绍 当系统资源过高的时候,我们可以使用如下命令来实现 Pod 的扩缩容功能 $ kubectl -n luffy scale deployment m ...
- Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
Knative Serving 默认情况下,提供了开箱即用的快速.基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA).下面带你体验如何在 Knative 中玩转 Au ...
随机推荐
- [ASP.NET]使用Oracle.ManagedDataAccess的OracleParameter参数化和OracleDataAdapter模糊查询
今天写个查询员工的信息的demo遇到了2个问题 问题1.使用Oracle.ManagedDataAccess的OracleParameter参数化 OracleParameter 的使用(参数名要以: ...
- Java中的几种对象(POJO,PO,DTO,DAO,BO)
j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的j ...
- Unity2017新功能Sprite Atlas详解
Sprite Atlas(精灵图集)Sprite Atlas 针对现有的图集打包系统Sprite Packer在性能和易用性上的不足,进行了全面改善.除此之外,相比Sprite Packer,Spri ...
- 清幽傲竹实现的kbmMWServer数据库联接失败重联(转载红鱼儿)
1.修改kbmMWUnidac单元的TkbmMWUNIDACConnection.InternalOpenConnection方法,加上: //支持unidac重联 ...
- zend studio导入外部项目乱码怎么解决
在zendstudio ide中,导入一个工程后,发现工程里面很多的文件都打上了红色的叉叉,打开这些文件一看,发现只要是有汉字存在的文件,都出现了乱码.按住alt+enter发现,该文件的编码默认为g ...
- 2019.01.22 hdu5195 DZY Loves Topological Sorting(贪心+线段树)
传送门 题意简述:给出一张DAGDAGDAG,要求删去不超过kkk条边问最后拓扑序的最大字典序是多少. 思路:贪心帮当前不超过删边上限且权值最大的点删边,用线段树维护一下每个点的入度来支持查询即可. ...
- 2018.12.31 NOIP训练 czy的后宫5(树形dp)
传送门 题意:给一棵有根树,树有点权,最多选出mmm个点,如果要选一个点必须先选其祖先,问选出来的点权和最大值是多少. 直接背包转移就行了. 代码
- C# 中使用面向切面编程(AOP)中实践代码整洁(转)
出处:https://www.cnblogs.com/chenug/p/9848852.html 1. 前言 最近在看<架构整洁之道>一书,书中反复提到了面向对象编程的 SOLID 原则( ...
- JSAAS 平台实现 微信类似的TOKEN机制
在企业微信中,我们在调用微信接口时,我们需要首先获取token,然后根据token,调用API接口方法.这个token是有生命周期的,微信的token默认的生命周期是7200秒. 因此这个token可 ...
- (1)There's more to life than being happy
https://www.ted.com/talks/emily_esfahani_smith_there_s_more_to_life_than_being_happy00:12 I used to ...