本文档应用环境为 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       [21]
IM_APP_BINSPECT_MSG_TOPIC   1       [32]
IM_APP_BINSPECT_MSG_TOPIC   2       [13]
IM_APP_BINSPECT_MSG_TOPIC   3       [21]
IM_APP_BINSPECT_MSG_TOPIC   4       [32]
IM_APP_BINSPECT_MSG_TOPIC   5       [13]
IM_APP_BINSPECT_MSG_TOPIC   6       [21]
IM_APP_BINSPECT_MSG_TOPIC   7       [32]
IM_APP_BINSPECT_MSG_TOPIC   8       [13]
IM_APP_BINSPECT_MSG_TOPIC   9       [21]
IM_APP_BINSPECT_MSG_TOPIC   10      [32]
IM_APP_BINSPECT_MSG_TOPIC   11      [13]
IM_APP_BINSPECT_MSG_TOPIC   12      [21]
IM_APP_BINSPECT_MSG_TOPIC   13      [32]
IM_APP_BINSPECT_MSG_TOPIC   14      [13]
IM_APP_BINSPECT_MSG_TOPIC   15      [21]
IM_APP_BINSPECT_MSG_TOPIC   16      [32]
IM_APP_BINSPECT_MSG_TOPIC   17      [13]
IM_APP_BINSPECT_MSG_TOPIC   18      [21]
IM_APP_BINSPECT_MSG_TOPIC   19      [32]
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       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   1       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   2       1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   3       2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   4       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   5       1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   6       2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   7       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   8       1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   9       2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   10      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   11      1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   12      2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   13      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   14      1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   15      2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   16      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   17      1       [13]                          [1]
IM_APP_BINSPECT_MSG_TOPIC   18      2       [21]                          [2]
IM_APP_BINSPECT_MSG_TOPIC   19      3       [32]                          [3]

解释

上面一共执行了3个命令

  1. kafkat partitions IM_APP_BINSPECT_MSG_TOPIC   查看 topic 的分区情况
  2. kafkat set-replication-factor IM_APP_BINSPECT_MSG_TOPIC --newrf 2 --brokers 1,2,3   重新设置副本数为2  --newrf 2  , 你有几个 broker就在--brokers 后面指定
  3. 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       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   1       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   2       1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   3       2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   4       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   5       1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   6       2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   7       3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   8       1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   9       2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   10      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   11      1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   12      2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   13      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   14      1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   15      2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   16      3       [32]                          [32]
IM_APP_BINSPECT_MSG_TOPIC   17      1       [13]                          [13]
IM_APP_BINSPECT_MSG_TOPIC   18      2       [21]                          [21]
IM_APP_BINSPECT_MSG_TOPIC   19      3       [32]                          [32]
 

使用 kafkat 在线扩缩容 kafka replicas的更多相关文章

  1. 构建Docker平台【第四篇】创建服务及扩缩容等操作

    第一步:创建服务 1. 配置 nginx 的 yaml 文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-ng ...

  2. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容

    上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...

  3. Docker Swarm(七)Scale 扩(缩)容服务

    扩(缩)容服务 扩容服务 Service还提供了复制(类似kubernetes里的副本)功能.可以通过 docker service scale 命令来设置服务中容器的副本数: docker serv ...

  4. 【kubevirt】VirtualMachineInstanceReplicaSet(vmis)-扩缩容-弹性伸缩

    @ 目录 概述/理解 使用场景 创建vmis 扩缩容 弹性伸缩 方法1 方法2 概述/理解 VirtualMachineInstanceReplicaSet(vmis)确保指定数量的 VirtualM ...

  5. Airbnb的动态kubernetes集群扩缩容

    Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...

  6. k8s手动扩缩容

    1. 查询deploy副本数,ready数表示副本数 kubectl get deploy 2.通过命令直接扩容或者缩容,--replicas=1表示把my-dep缩容到副本数1,--replicas ...

  7. Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容

    使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...

  8. 三十三、HPA实现自动扩缩容

    通过HPA实现业务应用的动态扩缩容 HPA控制器介绍 当系统资源过高的时候,我们可以使用如下命令来实现 Pod 的扩缩容功能 $ kubectl -n luffy scale deployment m ...

  9. Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler

    Knative Serving 默认情况下,提供了开箱即用的快速.基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA).下面带你体验如何在 Knative 中玩转 Au ...

随机推荐

  1. Alpha 冲刺 (1/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作,对多个目标检测及文字识别模型进行评估.实验,选取较 ...

  2. hdu 6073

    题意: 给出一个二部图,U.V分别是二部图的两个点集,其中,U中每个点会有两条边连到V中两个不同的点. 完美匹配定义为:所有点都成功匹配. 思路:已知一定是完美匹配了呀(也一定存在),我们先把度数为一 ...

  3. python的数字图像处理学习(3)

    高级滤波: from skimage import data,color,data_dir import matplotlib.pyplot as plt from skimage.morpholog ...

  4. 必看的经典金融书籍推荐zz

    5. 现代企业财务管理,11th詹姆斯.C.范霍恩,经济科学出版社,2002 6. Financial market and corporate strategy,glinbratt, 四.金融计量 ...

  5. 2019.01.20 bzoj3999: [TJOI2015]旅游(树链剖分)

    传送门 树链剖分菜题. 题意不清差评. 题意简述(保证清晰):给一棵带权的树,每次从aaa走到bbb,在走过的路径上任意找两个点,求后访问的点与先访问的点点权差的最大值. 思路: 考虑暴力:维护路径的 ...

  6. CAS 界面根据不同的域名显示不同的界面

    概要 在实际需求中,客户想通过不同的域名显示不同的登录界面,比如输入 manage.aps.cn 显示运维管理登录,business.aps.cn 显示业务管理登录. 实现方法 1.准备两套登录UI ...

  7. matlab 设定坐标比例

    figure() u=-0.1:0.005:0.1; v=-0.1:0.005:0.1; [x,y]=meshgrid(u,v); z=sin(x-y)./abs(x)+abs(y); surf(x, ...

  8. IE与非IE window.onload调用

    IEwin.attachEvent('onload', function(){ });非IEwin.onload=function(){}; if(navigator.appName == " ...

  9. IntelliJ IDEA 2017版 Spring5 java.lang.NoSuchMethodError: org.springframework.boot.SpringApplication.<init>([Ljava/lang/Object;)V

    错误是java.lang.NoSuchMethodError: org.springframework.boot.SpringApplication.<init>([Ljava/lang/ ...

  10. JAVA经典算法40+

    现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力测试题,也有的直接让你上机操作,写一段程序.算法的计算不乏出现,基于这个原因我 ...