kafka单机离线部署脚本

公司数仓项目加了一套kafka,写了个部署脚本。
因为是离线安装的,有需要大家就自己准备安装包吧
脚本部署了jdk、zookeeper、kafka,都做了服务化包括开机自启。

#! /bin/bash
set -e
echo "部署脚本预检查"
if command -v unzip > /dev/null 2>&1; then
    :
else
    echo "需要安装 unzip"
    exit 1
fi

echo "============================================================="
echo "开始部署kafka相关组件"
echo "============================================================="

deploy_path=/home/kafka
echo ">>> 部署路径 $deploy_path"
echo " "
mkdir -p $deploy_path

echo "================="
echo ">>> 开始解压jdk"
tar zxf $(find . -name "jdk-*_linux-*_bin.tar.gz") -C $deploy_path

export JAVA_HOME=$deploy_path/$(ls $deploy_path |grep jdk )
echo "JDK路径 $JAVA_HOME"

echo ">>> 开始解压zookeeper"
tar zxf $(ls |grep zookeeper) -C $deploy_path

echo ">>> 开始部署Zookeeper配置文件"
zookeeper_path=$deploy_path/$(ls $deploy_path |grep zookeeper )
zookeeper_data=$zookeeper_path/data

mkdir -p $zookeeper_data

echo tickTime=2000 >> $zookeeper_path/conf/zoo.cfg
echo dataDir=$zookeeper_data >> $zookeeper_path/conf/zoo.cfg
echo clientPort=2181 >> $zookeeper_path/conf/zoo.cfg
echo initLimit=5 >> $zookeeper_path/conf/zoo.cfg
echo syncLimit=2 >> $zookeeper_path/conf/zoo.cfg

echo ">>> 解压kafka"
tar zxf $(find . -name "kafka_*-*.tgz") -C $deploy_path
if [ -f kafka-console-ui.zip ]
then
unzip -q kafka-console-ui.zip -d $deploy_path
fi
kafka_path=$deploy_path/$(ls $deploy_path |grep kafka |grep -v console)

echo " "
echo "所有文件释放完成"
echo "============================================================"
echo "开始准备配置服务"

tee /usr/lib/systemd/system/zookeeper.service <<- 'EOF'
[Unit]
Description=zookeeper
After=network.target

[Service]
Environment="JAVA_HOME="
ExecStart=workpath/bin/zkServer.sh start
ExecStop=bin/zkServer.sh stop
Type=forking

[Install]
WantedBy=multi-user.target
EOF

sed -i "s@Environment=\"JAVA_HOME=\"@Environment=\"JAVA_HOME=$JAVA_HOME\"@g" /usr/lib/systemd/system/zookeeper.service
sed -i "s@workpath@$zookeeper_path@g" /usr/lib/systemd/system/zookeeper.service

echo "zookeeper服务化配置文件已配置完成"

tee /usr/lib/systemd/system/kafka.service <<- 'EOF'
[Unit]
Description=kafka
After=network.target

[Service]
Environment="JAVA_HOME="
ExecStart=workpath/bin/kafka-server-start.sh -daemon workpath/config/server.properties
ExecStop=workpath/bin/kafka-server-stop.sh
Type=forking

[Install]
WantedBy=multi-user.target
EOF

sed -i "s@Environment=\"JAVA_HOME=\"@Environment=\"JAVA_HOME=$JAVA_HOME\"@g" /usr/lib/systemd/system/kafka.service
sed -i "s@workpath@$kafka_path@g" /usr/lib/systemd/system/kafka.service

echo "kafka服务化配置文件已配置完成"

echo "重新载入服务化配置"
systemctl daemon-reload 
echo "============================================================="
echo " "
echo "启动zookeeper"
systemctl enable --now zookeeper
echo " "
echo "启动kafka"
systemctl enable --now kafka
echo " "
set +e
i=0
ch=('|' '\' '-' '/')
index=0
while [ $i -le 200 ]
do
    printf "[%c] %s\r" ${ch[$index]} $str
    str="等待服务启动"
    ((i++))
    ((index=i%4))
    sleep 0.1
done
printf "\n"
echo "检查 zookeeper 服务是否存活"
systemctl status zookeeper |grep Active
echo "检查 kafka 服务是否存活"
systemctl status kafka |grep Active
posted @ 2023-05-19 11:42  NagaResst  阅读(103)  评论(0)    收藏  举报