本文档应用环境为 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个命令

  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       [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的更多相关文章

  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. 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)

    传送门 数据结构优化计数菜题. 题意简述:给nnn个点问有多少个www型. www型的定义: 由5个不同的点组成,满足x1<x2<x3<x4<x5,x3>x1>x2 ...

  2. 2018.10.31 bzoj3339&&3585mex(主席树)

    传送门 双倍经验 直接上主席树,每个叶节点维护这个值出现的最右区间,非叶子节点维护当前值域内所有最右区间的最小值. 查询的时候只用在以root[qr]root[qr]root[qr]为根的树上面二分. ...

  3. Vue + Element UI 实现权限管理系统

    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境 https://www.cnblogs.com/xifengxiaoma/p/9533018.html

  4. 普通用户修改.bash_profile 权限问题

    例如oracle用户想要修改它下面的.bash_profile文件: 在命令行运行: [root@localhost ~]# ls -lh /home/oracle/.bash_profile

  5. JMeter压力测试及服务器状态监控教程

    转载自:https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 前段时间公司需要对服务器进行压力测试,包括登录前的页面和登录后的页面,主 ...

  6. 关于内存类型 UDIMM、RDIMM、LRDIMM 的学习结论(转)

    随着内存技术不断发展,服务器上内存的容量.密度和速度也越来越高.目前在市场上出现的内存条最高密度可以做到每条内存条 4 个 Rank,容量达到 32GB/条,最高速度达到 1.6GHz.高密度高频率也 ...

  7. How to transfer developer profile to one mac to another mac

    Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...

  8. JavaScript 获取鼠标点击位置坐标

    在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊 ...

  9. 关于QT建立项目中遇到的相关问题的处理办法

    关于QT建立项目中遇到的相关问题的处理办法 1.在QTCreater中新建一个空的工程时,第一次运行会抱一个错误,如下: -1: error: LNK1123: 转换到 COFF 期间失败: 文件无效 ...

  10. Visual Studio 简单使用常识操作

    Visual Studio 简单使用个人总结   转载请注明来源:www.cnblogs.com/icmzn(后续会持续更新) 可以查看一下链接,官方关于visual studio 2010 的介绍  ...