Kafka一键启动脚本整合

脚本说明

kafka依赖zookeeper,启动时候需要先启动zookeeper,并且确保zookeeper正常启动。该脚本进行以下操作:

  1. 启动zookeeper
  2. 检查zookeeper是否正常启动,如果没有启动成功,等待zookeeper启动
  3. 启动kafka, 等待kafka启动成功

备注:kafka关闭后,注册的节点不会立马清除,需要等待一段时间再启动,不然会报节点存在的异常导致启动失败

脚本内容

#!/bin/bash

zk_port=2181
kafka_port=9092
kafka_dir=kafka_2.12-3.2.1

function stop_app() {
    echo 【关闭已有进程】	
    zk_num=`ps -ef|grep ${kafka_dir}|grep config/server.properties|wc -l`
    if [ ${zk_num} -gt 0 ];then
        ps -ef|grep ${kafka_dir}|grep config/zookeeper.properties|awk {print $2}|xargs kill -15
        echo 【zookeeper】终止
    fi
   
    kafka_num=`ps -ef|grep ${kafka_dir}|grep config/server.properties|wc -l`
    if [ ${kafka_num} -gt 0 ];then
        ps -ef|grep ${kafka_dir}|grep config/server.properties|awk {print $2}|xargs kill -15
        echo 【kafka】终止
    fi
}

function check_zk() {
    num=`lsof -i:${zk_port}|wc -l`
    return ${num};
}

function check_kafka() {
    num=`lsof -i:${kafka_port}|wc -l`
    return ${num};
}

start_app() {
    nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties > ./logs/zk_start.log 2>&1 &
    check_zk
    while [ $? -eq 0 ]
    do
        echo 【zookepper】启动中...
        sleep 1
        check_zk
    done

    sleep 3

    echo 【zookepper】启动成功,准备启动kafka.

    nohup ./bin/kafka-server-start.sh config/server.properties > ./logs/kafka_start.log 2>&1 &
    check_kafka
    while [ $? -eq 0 ]
    do
        echo 【kafka】启动中...
        sleep 1
        check_kafka
    done
    echo 【kafka】启动完毕,端口使用情况如下:
    lsof -i:${kafka_port}
}

uage() {
    echo 使用示例: sh start_service.sh [start|restart|stop]
}


exe_type=$1

case "$exe_type" in
    start)
	start_app
        ;;
    restart)
	stop_app   
        echo 【kafka】关闭后节点等待清除中...
        sleep 10	
        start_app
        ;;
    stop)
        stop_app
        ;;
    *)
        uage
        exit 1 

esac

使用示例

使用示例: sh start_service.sh [start|restart|stop]

运行结果

经验分享 程序员 微信小程序 职场和发展