使用 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_TOPIC Topic Partition Leader Replicas ISRs IM_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 , 3 This operation executes the following assignments: Topic Partition Replicas IM_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)? y Beginning. Started. [root @ 001 kafka]# kafkat partitions IM_APP_BINSPECT_MSG_TOPIC Topic Partition Leader Replicas ISRs IM_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_TOPIC Topic Partition Leader Replicas ISRs IM_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 ...
随机推荐
- 20170531动手实践MyOD——20155312
实践题目 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 对题目分析如下 od的功能(参考Linux od命令详细介绍及用法实例): od命令用 ...
- linux_添加一个普通用户
useradd 用户名 passwd 密码 su 用户名 可以切换用户 exit 返回之前登录的用户 sodu用户 --> 不用告诉普通用户root的密码 可以查看所有的系统文件 包括root下 ...
- php-fpm 的 pm.start_servers 参数调整
大家注意一下 在 php-fpm 的配置文件中, pm.start_servers 必须是介于 pm.min_spare_servers 和 pm.max_spare_servers 这个值之间 ...
- 2018.10.24 bzoj2064: 分裂(状压dp)
传送门 状压dp好题. 考虑对于两个给出的集合. 如果没有两个元素和相等的子集,那么只能全部拼起来之后再拆开,一共需要n1+n2−2n1+n2-2n1+n2−2. 如果有呢? 那么对于没有的就是子问题 ...
- Windows上使用Git管理文件
今天在搜索ffmpeg相关资料时,需要通过.sh脚本文件下载git上的代码文件,最后通过在Windows上安装了git,并在git.bash中执行bash ffmpeg.sh解决了代码下载问题,顺便学 ...
- java常用设计模式四:观察者模式
1.定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己.观察者模式又叫发布-订阅(Publis ...
- JDK线程池的使用
转载自:https://my.oschina.net/hosee/blog/614319: 摘要: 本系列基于炼数成金课程,为了更好的学习,做了系列的记录. 本文主要介绍: 1. 线程池的基本使用 2 ...
- ASP.NET 日志组件Smart.LogNet.DLL 引用即可写入日志及读取日志
借助LogNet组件,以后查看站点日志,再也不用去服务器下载了 日志组件:LogNet.DLL ,引用即可使用 写入方法: 1.LogNet.Log.WriteLog("日志标题" ...
- Beta阶段第三篇Scrum冲刺博客-Day2
1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 张晨晨:熟悉代码 郭琪容:了解复习模块需要的部分知识 ...
- 23种设计模式(1)-Facade设计模式
前记 曾经我遇见的一个需求是这样的,接口A有个方法void methodA(),类B需要实现接口A的methodA()方法,并且在类B中需要把methodA()方法内部处理逻辑获得的结果利用C类实例的 ...