Kafka-批量启动和停止Kafka节点脚本
背景
由于Kafka的服务启动和停止,需要一台一台地去启动和停止。当部署的Kafka节点多时非常麻烦,所以编写下面的脚本,用于提升启动和停止的效率。
执行如下脚本需要确保:脚本存放的服务器与所有的Kafka节点直接可以免密登录(服务器之间建立互信)。
1、编辑脚本
#!/bin/bash zookeeper_home=/usr/local/zookeeper kafka_home=/usr/local/kafka zookeeper_array=(hadoop01 hadoop02 hadoop03) kafka_array=(hadoop01 hadoop02 hadoop03) ## 启动和停止Zookeeper function zookeeper_operate(){ zookeeper_operate=$@ if [[ ${zookeeper_operate} == "status" ]] then echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "About to check zookeeper status ...." sleep 5 fi echo "****************************************Zookeeper ${zookeeper_operate}*******************************************" for zookeeper_node in ${zookeeper_array[@]} do echo "======================${zookeeper_node} ${zookeeper_operate}========================" ssh ${zookeeper_node} "source /etc/profile;${zookeeper_home}/bin/zkServer.sh ${zookeeper_operate}" if [[ ${zookeeper_node} == "stop" ]] then ssh ${zookeeper_node} "rm -rf ${zookeeper}/logs/* " fi done } ## 启动和停止Kafka function kafka_operate(){ kafka_operate=$@ echo "****************************************Kafka ${kafka_operate}*******************************************" for kafka_node in ${kafka_array[@]} do echo "======================${kafka_node} ${kafka_operate}========================" case ${kafka_operate} in start) echo ${kafka_home}/bin/kafka-server-start.sh -daemon ${kafka_home}/config/server.properties ssh ${kafka_node} "source /etc/profile;${kafka_home}/bin/kafka-server-start.sh -daemon ${kafka_home}/config/server.properties" ;; stop) echo ${kafka_home}/bin/kafka-server-stop.sh ssh ${kafka_node} "source /etc/profile;${kafka_home}/bin/kafka-server-stop.sh" ## 删除Kafka日志 ssh ${kafka_node} "rm -rf ${kafka_home}/logs/* " ;; *) echo "Input wrong,please check!" break esac done ## 等待5秒,确保zookeeper启动 sleep 5 } ## 检查所有节点的状态 function jps_all_node(){ check_str=$@ echo "****************************************Jps check*******************************************" for jps_node in ${kafka_array[@]} do sleep 5 echo "======================${jps_node} jps result========================" ssh ${jps_node} "source /etc/profile ; jps | grep ${check_str}" done } echo "=======Start Kafka cluster,please intput : start or 1 ======" echo "=======Stop Kafka cluster,please intput : stop or 0 ======" read -p "please input : " inputStr case ${inputStr} in start|START|1) ## 启动zookeeper zookeeper_operate start ## 启动kafka kafka_operate start ## 检查所有节点的状态 jps_all_node Kafka ;; stop|STOP|0) kafka_operate stop ## 检查所有节点的状态 jps_all_node Kafka ;; *) echo "Input wrong,please check!" break esac
2、启动Kafka
sh manage-kafka.sh
输入start或者1,即可启动所有的Kafka节点。
在Kafka中配置了zookeeper,所以脚本中会自动启动zookeeper服务。
3、停止kafka
sh manage-kafka.sh
输入stop或者0,即可停止所有的Kafka节点。
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18025576