kafka集群维护
一、kafka集群启停
#启动kafka
/home/cluster/kafka211/bin/kafka-server-start.sh -daemon /home/cluster/kafka211/config/server.properties

#关闭kafka
/home/cluster/kafka211/bin/kafka-server-stop.sh

二、kafka集群基本信息实时查看和修改
#列出所有有效主题
/home/cluster/kafka211/bin/kafka-topics.sh --list --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181

#查看特定主题
/home/cluster/kafka211/bin/kafka-topics.sh --describe --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --topic REC-CBBO-MSG-TOPIC

#创建主题 尽量不要使用下划线"_"或者点好".",可以使用横线"-"
/home/cluster/kafka211/bin/kafka-topics.sh --create --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --replication-factor 3 --partitions 17 --topic REC-CBBO-MSG-TOPIC

#修改主题 如果主题创建了之后发现分区不够用,可以增加,不可以减少
/home/cluster/kafka211/bin/kafka-topics.sh --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --alter --topic REC-CBBO-MSG-TOPIC --partitions 50

#删除主题 delete.topic.enable要设置为true
/home/cluster/kafka211/bin/kafka-topics.sh --delete --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --topic REC-CBBO-MSG-TOPIC

#控制台当作生产者

kafka-console-producer.sh --broker-list node1:9092,node2:90092,node3:9092 --topic t0425

#控制台当作消费者

./kafka-console-consumer.sh --zookeeper node3:2181,node4:2181,node5:2181 --topic t0422

#查看producer生产消息的最大位置

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list node1:9092 --topic t0426 --time -1

-1表示查询某个主题各个分区当前最大的消息位移值(注意,这里的位移值不是consumer端的位移,而是指消息在每个分区的位置)
如果要查询曾经生产过的最大消息数,那么只运行上面这条命令然后把各个分区的结果相加就可以了

#如果查询集群中某个topic当前消息数,还需要运行下面命令:
/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list node1:9092 --topic t0426 --time -2
-2表示去获取当前各个分区的最小位移。之后把运行第一条命令的结果与刚刚获取的位移之和相减就是集群中该topic的当前消息总数

三、kafka集群leader平衡机制

问题:当一个broker停止或者crashes时,所有本来将它作为leader的分区将会把leader转移到其他broker上去,极端情况下,会导致同一个leader管理多个分区,导致负载不均衡,同时当这个broker重启时,如果这个broker不再是任何分区的leader,kafka的client也不会从这个broker来读取消息,从而导致资源的浪费。

解决思路:

kafka中有一个被称为优先副本(preferred replicas)的概念。如果一个分区有3个副本,且这3个副本的优先级别分别为0,1,2,根据优先副本的概念,0会作为leader 。当0节点的broker挂掉时,会启动1这个节点broker当做leader。当0节点的broker再次启动后,会自动恢复为此partition的leader。不会导致负载不均衡和资源浪费,这就是leader的均衡机制。

#leader手动平衡
/home/cluster/kafka211/bin/kafka-preferred-replica-election.sh --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181
#leader自动平衡 server.properties 参数配置
auto.leader.rebalance.enable=true

注意:kafka创建主题时指定副本数R和分区数P,那么总副本数为 R*P,这些副本均匀的分布到各个broker机器上;

其中对于每个分区都有R个副本,其中有一个leader,其他都是follow

四、kafka集群分区日志迁移
1、迁移topic数据到其他broker
1.1写json文件 格式
cat topics-to-move.json
{
"topics":[{"topic","foo1"},{"topic","foo2"}],
"version":1
}

1.2使用generate生成迁移计划 只是生成迁移计划 并未迁移
bin/kafka-reassign-partitions.sh --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --topics-to-move-json-file topics-to-move.json --broker-list "5,6" --generate

Current partition replica assignment  指当前配置  要保存 用来回滚

Proposed partition reassignment configuration 指生成的迁移计划  保存到expand-cluster-reassignment.json

1.3使用-execute执行计划 执行前最好保存当前的分配情况 以防出错回滚
将上一步生成的执行计划json数据保存到expand-cluster-reassignment.json
bin/kafka-reassign-partitions.sh --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --reassignment-json-file expand-cluster-reassignment.json --execute

1.4使用-verify验证是否已经迁移完成
bin/kafka-reassign-partitions.sh --zookeeper 134.32.123.101:2181,134.32.123.102:2181,134.32.123.103:2181 --reassignment-json-file expand-cluster-reassignment.json -verify

2、迁移某个topic的某些特定的partition的数据到其他broker 步骤与上面一样 但是json文件如下
cat custom-reassignment.json
{
"version":1,"partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},{"topic":"foo2","partition":1,"replicas":[2,3]}]
}
可以指定到topic的分区编码

注意:迁移会导致leader失衡 需要使用平衡命令 重新平衡

五、集群操作日志清理

5.1 了解linux查看空间的命令

#查看目录空间的分配和使用情况 df -h

[cluster@PCS103 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 100G .7G 96G % /
devtmpfs 95G 95G % /dev
tmpfs 95G 95G % /dev/shm
tmpfs 95G 722M 94G % /run
tmpfs 95G 95G % /sys/fs/cgroup
/dev/sda2 1016M 148M 868M % /boot
/dev/sda1 200M 9.5M 191M % /boot/efi
/dev/mapper/vgdata-data02 .0T .5G 1017G % /data2
/dev/mapper/vgdata-data01 .0T 12G 1013G % /data1
/dev/mapper/rhel-home 100G 100G 20K % /home
/dev/loop0 .6G .6G % /mnt/cdrom

可以看到/home 几乎已经满了

#查看当前目录所占空间大小 du -sh

[cluster@PCS101 ~]$ du -sh
.7G .

#查看当前目录下每个文件以及目录所占空间大小 du -h

[cluster@PCS101 ~]$ du -h
472K ./zookeeper/src/recipes
.
.
.
20M ./zookeeper/src
.0K ./zookeeper/data
./zookeeper/logs
61M ./zookeeper
61M .

5.2 kafka操作日志  清理

kafka/logs目录下会有操作日志  如controller.log  server.log state-change.log 等  非常多  ,根据kafka/config/log4j.properties可以看到 每天都会生成,而且有几个的日志级别是

trace,这样会造成空间迅速被占满,需要定期清理

需要做的是:

(1)修改日志级别   trace改成info

(2)写个脚本  定期清理 kafka/logs下日志   rm  -rf  kafka/logs/*

【kafka学习之三】kafka集群运维的更多相关文章

  1. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

  2. 集群运维ansible

    ssh免密登录 集群运维 生成秘钥,一路enter cd ~/.ssh/ ssh-keygen -t rsa 讲id_rsa.pub文件追加到授权的key文件中 cat ~/.ssh/id_rsa.p ...

  3. 阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

    作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 ...

  4. Elasticsearch 学习之携程机票ElasticSearch集群运维驯服记(强烈推荐)

    转自: https://mp.weixin.qq.com/s/wmSTyIGCVhItVNPHcH7nsA 一.整体架构 为什么采用ES作为搜索引擎呢?在做任何事情的时候,不要一上来就急着了解怎么做这 ...

  5. kafka学习总结之集群部署和zookeeper

    1.  集群部署 kafka集群的瓶颈主要在网络和磁盘上:kafka依赖于zookeeper,zookeeper集群的节点采用奇数个,3个节点允许一个节点失败,5个节点允许2个节点失败. 图 1 ka ...

  6. kafka学习(二)-zookeeper集群搭建

    zookeeper概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 服务等.Zookeeper是h ...

  7. PB级大规模Elasticsearch集群运维与调优实践

    导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与 ...

  8. PB级大规模Elasticsearch集群运维与调优实践【>>戳文章免费体验Elasticsearch服务30天】

    [活动]Elasticsearch Service免费体验馆>> Elasticsearch Service自建迁移特惠政策>>Elasticsearch Service新用户 ...

  9. 使用Chef管理windows集群 | 运维自动化工具

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

随机推荐

  1. [NHibernate] Guid 作主键速度超慢的背后

    http://blog.csdn.net/educast/article/details/6602353 最近遇到了一个让人抓狂的性能问题.生产环境里有一张表的数据量目前达到了 70 万条.结果发现无 ...

  2. was cached in the local repository, resolution will not be reattempted until the update interval of localhost-repository has elapsed or updates are forced

    ailed to collect dependencies at com.eshore:common:jar:0.0.1-SNAPSHOT: Failed to read artifact descr ...

  3. Spring Boot 利用插件构造QueryDSL语句时报错:You need to run build with JDK or have tools.jar on the classpath.If this occur....

    You need to run build with JDK or have tools.jar on the classpath.If this occures during eclipse bui ...

  4. 9.17 Django ORM分组

    2018-9-17 19:53:22 预习:http://www.cnblogs.com/liwenzhou/p/8343243.html 新买个蓝牙挂耳耳机,感觉不错! 放上代码  笔记什么的明天继 ...

  5. 9.8Django

    2018-9-8 14:34:38

  6. 执行环境可以在SQLPLUS.EXE或者DOS(命令行)中执行

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命 令可以把dmp文件从本地导入到远处的数据库服务器中. ...

  7. python调用exe程序

    最近在做测试,公司的产品做成了exe,让我去测试,C++写的程序啊,我直接用python调用那个exe,也有个坑,必须要到exe在的那个目录下,然后才能调用: import os def main() ...

  8. 异步IO

    异步IO   在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘.网络等IO.在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件.发送网络数据时,就需要等待IO操作完成, ...

  9. flask数据库操作

    Python 数据库框架 大多数的数据库引擎都有对应的 Python 包,包括开源包和商业包.Flask 并不限制你使用何种类型的数据库包,因此可以根据自己的喜好选择使用 MySQL.Postgres ...

  10. ArcGIS Server 内存占用相关

    发布服务个数是否有上限? 不仅是服务个数,每个服务的实例数设置非常影响机器内存与CPU的占用. 发布服务时,如果服务不经常被访问,可以将最低实例数设置为0,避免后台长期占用内存. Server需要的机 ...