zoukankan      html  css  js  c++  java
  • 生产环境一键创建kafka集群

        前段时间公司的一个kafka集群出现了故障,由于之前准备不足,当时处理的比较慌乱。如:由于kafka的集群里topic数量较多,并且每个topic的分区数量和副本数量都不是一样的,如果按部就班的一个一个的去创建队列,估计集群恢复时黄瓜菜都凉了。

        对于kafka集群出现故障,最快的处理办法,就是重建集群,然后在新的集群上将队列相关信息全部按原集群重建一遍。本人利用端午假期,写了一个python脚本(这是第二次撸python,能用就好,各位要求不要太高哈),可以实现一键功能。

        1.首先将此脚本(topic.py),放到kafka的bin目录下;

        2.执行python topic.py命令

        3.输入原集群的zookeeper地址,回车

        4.输入新集群的zookeeper地址,回车

        5.控制台输出topic创建相关的信息,检查新集群,可以发现旧集群中所有的topic全部按原样重新在新集群中创建了一遍

        topic.py脚本如下:

    import os
    from sys import stdin
    import re
    
    print 'input source kafka zookeeper address. eg:127.0.0.1:2181'
    value = stdin.readline().replace("
    ", "")
    print 'input target kafka zookeeper address. eg:127.0.0.1:2181'
    target = stdin.readline().replace("
    ","")
    value2 = './kafka-topics.sh  --describe --zookeeper ' +value 
    value2 = value2+' | grep ^Topic'
    output = os.popen(value2)
    text = output.readline()
    while (text ):
    	strs = text.split()
    	outtemp = os.popen('./kafka-topics.sh --create --topic '+strs[0].replace("Topic:","") +' --partitions '+strs[1].replace("PartitionCount:","") + ' --replication-factor ' +strs[2].replace("ReplicationFactor:","")+ ' --if-not-exists --zookeeper ' + target) 
    	print outtemp.readline()
    	text = output.readline()
    	outtemp.close()
    output.close()
    

      

        

  • 相关阅读:
    Android&Handler2
    ACM&数字阶梯求和(大数问题)
    Android&MyThread
    【转】 《基于MFC的OpenGL编程》Part 15 Selection
    【转】 《基于MFC的OpenGL编程》Part 12 Creating and Using Display Lists
    【转】《基于MFC的OpenGL编程》Part 16 Reflection
    【转】 《基于MFC的OpenGL编程》Part 8 Colors
    【转】 《基于MFC的OpenGL编程》Part 14 Quadrics
    开发不同语言版本的C#程序
    基于ADS40的线阵摄影测量及数据处理
  • 原文地址:https://www.cnblogs.com/mantu/p/9215661.html
Copyright © 2011-2022 走看看