1. 程式人生 > >生產環境一鍵創建kafka集群

生產環境一鍵創建kafka集群

create bsp zook pytho 不足 des ddr 命令 from

前段時間公司的一個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("\n", "")
print ‘input target kafka zookeeper address. eg:127.0.0.1:2181‘
target = stdin.readline().replace("\n","")
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()

  

生產環境一鍵創建kafka集群