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]

运行结果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值