161 lines
4.1 KiB
Bash
161 lines
4.1 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Init variables
|
||
|
|
scriptName=`basename "$0"`
|
||
|
|
scriptBaseDir=`dirname "$0"`
|
||
|
|
scriptDir="$(dirname $(readlink -f $0))"
|
||
|
|
|
||
|
|
#echo "pwd: `pwd`"
|
||
|
|
#echo "\$0: $0"
|
||
|
|
#echo "basename: `basename $0`"
|
||
|
|
#echo "dirname: `dirname $0`"
|
||
|
|
#echo "dirname/readlink: $(dirname $(readlink -f $0))"
|
||
|
|
|
||
|
|
if [[ -z ${KAFKA_HOME} ]];
|
||
|
|
then
|
||
|
|
KAFKA_HOME=${HOME}/kafka/kafka_dist
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! [[ -d "$KAFKA_HOME" ]]
|
||
|
|
then
|
||
|
|
echo "Error: Kafka installation can not be found"
|
||
|
|
echo "KAFKA_HOME is $KAFKA_HOME"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "KAFKA_HOME is ${KAFKA_HOME}"
|
||
|
|
cd ${KAFKA_HOME}
|
||
|
|
|
||
|
|
|
||
|
|
zookeeper_pid=`ps axww | grep -i -w 'org.apache.zookeeper.server' | grep -v grep | awk '{print $1}'`
|
||
|
|
kafka_servers_pids=`ps axww | grep -i -w 'kafka.Kafka' | grep -v grep | awk '{print $1}'`
|
||
|
|
start_kafka_loops_pids=`ps axww | grep -i -w 'start_kafka_loop.sh' | grep -v grep | awk '{print $1}'`
|
||
|
|
|
||
|
|
print_usage () {
|
||
|
|
echo "Usage:"
|
||
|
|
echo "${scriptName} start"
|
||
|
|
echo "${scriptName} stop"
|
||
|
|
echo "${scriptName} stophard"
|
||
|
|
echo "${scriptName} status"
|
||
|
|
echo "${scriptName} topics"
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
print_status () {
|
||
|
|
echo "Status:"
|
||
|
|
echo "zookeeper is running as pid: ${zookeeper_pid}"
|
||
|
|
|
||
|
|
|
||
|
|
while read pid ; do
|
||
|
|
echo "kafka server is running as pid: ${pid}"
|
||
|
|
done <<< ${kafka_servers_pids}
|
||
|
|
|
||
|
|
while read pid ; do
|
||
|
|
echo "loop script is running as pid: ${pid}"
|
||
|
|
done <<< ${start_kafka_loops_pids}
|
||
|
|
|
||
|
|
echo "For more information run: ps ax | grep <pid>"
|
||
|
|
}
|
||
|
|
|
||
|
|
start_cluster () {
|
||
|
|
if [ -n "${zookeeper_pid}" ]
|
||
|
|
then
|
||
|
|
echo "Error: Zookeeper is allready running"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -n "${kafka_servers_pids}" ]
|
||
|
|
then
|
||
|
|
echo "Error: Kafka is allready running"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Starting Zookeeper"
|
||
|
|
# nohup ${scriptDir}/start_kafka_loop.sh "./bin/zookeeper-server-start.sh config/zookeeper.properties" "zookeeper.log" &
|
||
|
|
# nohup bin/zookeeper-server-start.sh config/zookeeper.properties >zookeeper.log 2>&1 &
|
||
|
|
nohup bin/zookeeper-server-start.sh config/zookeeper.properties >zookeeper.log 2>&1 &
|
||
|
|
|
||
|
|
sleep 5
|
||
|
|
|
||
|
|
echo "Starting Kafka"
|
||
|
|
# nohup ${scriptDir}/start_kafka_loop.sh "./bin/kafka-server-start.sh config/server-1.properties" "kafka-1.log" &
|
||
|
|
# nohup ${scriptDir}/start_kafka_loop.sh "./bin/kafka-server-start.sh config/server-2.properties" "kafka-2.log" &
|
||
|
|
# nohup bin/kafka-server-start.sh config/server-1.properties >kafka-1.log 2>&1 &
|
||
|
|
# nohup bin/kafka-server-start.sh config/server-2.properties >kafka-2.log 2>&1 &
|
||
|
|
nohup bin/kafka-server-start.sh config/server.properties >kafka.log 2>&1 &
|
||
|
|
echo "Zookeper and Kafka startup initialized. Check zookeeper.log and kafka.log in ${KAFKA_HOME} for sucessful startup"
|
||
|
|
}
|
||
|
|
|
||
|
|
stop_cluster () {
|
||
|
|
|
||
|
|
kill_op=$1
|
||
|
|
|
||
|
|
echo "Shutting down loop scripts";
|
||
|
|
if [ -n "${start_kafka_loops_pids}" ]
|
||
|
|
then
|
||
|
|
while read pid ; do
|
||
|
|
echo "Killing loop script with pid ${pid}"
|
||
|
|
kill ${kill_op} "${pid}"
|
||
|
|
done <<< ${start_kafka_loops_pids}
|
||
|
|
sleep 1
|
||
|
|
else
|
||
|
|
echo "Loop scripts were not Running"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Shutting down Kafka servers";
|
||
|
|
if [ -n "${kafka_servers_pids}" ]
|
||
|
|
then
|
||
|
|
while read pid ; do
|
||
|
|
echo "Killing kafka server with pid ${pid}"
|
||
|
|
kill ${kill_op} "${pid}"
|
||
|
|
done <<< ${kafka_servers_pids}
|
||
|
|
sleep 10
|
||
|
|
else
|
||
|
|
echo "Kafka was not Running"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Shutting down Zookeeper";
|
||
|
|
if [ -n "${zookeeper_pid}" ]
|
||
|
|
then
|
||
|
|
echo "killing Zookeeper ${zookeeper_pid}"
|
||
|
|
kill ${kill_op} "${zookeeper_pid}"
|
||
|
|
else
|
||
|
|
echo "Zookeeper was not Running"
|
||
|
|
fi
|
||
|
|
|
||
|
|
exit 0
|
||
|
|
}
|
||
|
|
|
||
|
|
list_topics () {
|
||
|
|
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
|
||
|
|
}
|
||
|
|
|
||
|
|
# https://stackoverflow.com/questions/34512287/how-to-automatically-start-kafka-upon-system-startup-in-ubuntu
|
||
|
|
case "$1" in
|
||
|
|
start)
|
||
|
|
start_cluster
|
||
|
|
;;
|
||
|
|
stop)
|
||
|
|
stop_cluster
|
||
|
|
;;
|
||
|
|
stophard)
|
||
|
|
stop_cluster "-9"
|
||
|
|
;;
|
||
|
|
status)
|
||
|
|
print_status
|
||
|
|
;;
|
||
|
|
topics)
|
||
|
|
list_topics
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
print_usage
|
||
|
|
esac
|
||
|
|
|
||
|
|
exit 0
|
||
|
|
|
||
|
|
# https://stackoverflow.com/questions/34512287/how-to-automatically-start-kafka-upon-system-startup-in-ubuntu
|
||
|
|
|
||
|
|
|