前段時間公司的乙個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()
創藍閃驗php手機號一鍵登入
注意 對外介面需要兩個必要引數,flash token type 安卓或ios flash token從 來 是安卓和ios端整合創藍閃驗sdk以後通過呼叫sdk相關介面獲得,引數名為token。例如 onekeyloginlistener error innercode 0 innerdata i...
salt一鍵部署kafka
1.準備工作 2.salt關於kafka的部署指令碼,就是上面的init.sls中的內容,至於下面的內容的每一項的意思在之前jdk的指令碼中有寫。kafka file file.managed source salt kafka kafka 2.11 0.9.0.0.tar.gz name opt ...
kafka一鍵啟動指令碼
1.首先修改每台機器的kafka bin目錄下的kafka server stop.sh 將裡面的kafka.kafka改為kafka 2.編寫啟動指令碼start kafka.sh 3.編寫關閉指令碼stop kafka.sh 注意指令碼裡面kafka的版本,我這裡的是2.2.04.給指令碼增加許...