shell脚本安装kafka集群样例

自定义参数

KAFKA_PATH= #KAFKA安装路径
KAFKA_PORT= #设置KAFKA端口
PKG_NAME= #PKG名称
TEMP_PATH= #临时目录
USER_NAME= #启动用户
ZK_PORT= #连接ZK端口

部署参数检查

#!/bin/bash

# 检查参数是否设置
echo "=====检查参数是否设置===="
if [ ! $KAFKA_PATH ];then
	echo "=====$KAFKA_PATH 此参数未设置,请检查!====="
    exit 1
fi

if [ ! $KAFKA_PORT ];then
	echo "=====$KAFKA_PORT 此参数未设置,请检查!====="
    exit 1
fi

if [ ! $ZK_PORT ];then
	echo "=====$ZK_PORT 此参数未设置,请检查!====="
    exit 1
fi

if [ ! $PKG_NAME ];then
	echo "=====$PKG_NAME 此参数未设置,请检查!====="
    exit 1
fi

if [ ! $TEMP_PATH ];then
	echo "=====$TEMP_PATH 此参数未设置,请检查!====="
    exit 1
fi

ISSTART=$(netstat -nutlp|grep ${KAFKA_PORT}|grep -v "grep"|wc -l)
ISSTART_ZK=$(netstat -nutlp|grep ${ZK_PORT}|grep -v "grep"|wc -l)

# 检查端口是否已被监听
echo "=====检查端口是否已被监听====="
if [ "${ISSTART}" != "0" ]; then
    echo "=====KAFKA 启动端口已监听,请重新选择端口====="  
    exit 1
else
    echo "=====KAFKA 启动端口未监听,符合预期!=====" 
fi

# 检查ZK是否已安装,如未安装需要提前安装ZK
echo "=====检查ZK是否已安装====="
if [ "${ISSTART_ZK}" == "0" ]; then
    echo "=====zookeeper未安装,请先安装zookeeper====="  
    exit 1
else
    echo "=====zookeeper已安装,符合预期!=====" 
fi

# 检查目标目录是否存在
echo "=====检查目标目录是否存在====="
if [ ! -d $KAFKA_PATH/$KAFKA_PORT ];then
	echo "=====$KAFKA_PORT 目录不存在,创建目录====="
	mkdir -p $KAFKA_PATH/$KAFKA_PORT
else 
    echo "=====$KAFKA_PORT目录已存在,退出安装====="
    exit 1
fi

if [ ! -d $TEMP_PATH ];then
	echo "=====$TEMP_PATH 目录不存在,创建目录====="
	mkdir -p $TEMP_PATH
fi

 echo "=====部署前检查通过====="
 

上传并解压安装包

#!/bin/bash
pwd
# 解压安装包到指定目录
echo "=====解压安装包到指定目录====="
tar -xf ${PKG_NAME}.tar.gz -C $KAFKA_PATH/$KAFKA_PORT/
echo "=====查看解压后的内容====="
ls $KAFKA_PATH/$KAFKA_PORT/$PKG_NAME

修改配置文件 server1执行

#!/bin/bash

#修改配置文件
echo "======开始修改配置文件======"
cd $KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/config
sed -i "s@^log.dirs.*@log.dirs=$KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/logs/kafka_logs@g" server.properties
sed -i "s@^zookeeper.connect.*@zookeeper.connect=Zk01Host:2181,Zk02Host:2181,Zk03Host:2181@g" server.properties
sed -i "s@^port.*@port=$KAFKA_PORT@g" server.properties
sed -i "s@^host.name.*@host.name=$server1@g" server.properties
sed -i "s@^broker.id.*@broker.id=1@g" server.properties

修改配置文件 server2执行

#!/bin/bash

#修改配置文件
echo "======开始修改配置文件======"
cd $KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/config
sed -i "s@^log.dirs.*@log.dirs=$KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/logs/kafka_logs@g" server.properties
sed -i "s@^zookeeper.connect.*@zookeeper.connect=Zk01Host:2181,Zk02Host:2181,Zk03Host:2181@g" server.properties
sed -i "s@^port.*@port=$KAFKA_PORT@g" server.properties
sed -i "s@^host.name.*@host.name=$server2@g" server.properties
sed -i "s@^broker.id.*@broker.id=2@g" server.properties

修改配置文件 server3执行

#!/bin/bash

#修改配置文件
echo "======开始修改配置文件======"
cd $KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/config
sed -i "s@^log.dirs.*@log.dirs=$KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/logs/kafka_logs@g" server.properties
sed -i "s@^zookeeper.connect.*@zookeeper.connect=Zk01Host:2181,Zk02Host:2181,Zk03Host:2181@g" server.properties
sed -i "s@^port.*@port=$KAFKA_PORT@g" server.properties
sed -i "s@^host.name.*@host.name=$server3@g" server.properties
sed -i "s@^broker.id.*@broker.id=3@g" server.properties

设置启停脚本+启动

#!/bin/bash

#修改文件权限
echo "======修改文件权限======"
cd $KAFKA_PATH/$KAFKA_PORT/$PKG_NAME/bin/ && chmod 755 -R *

chown -R ${USER_NAME}:${USER_NAME} $KAFKA_PATH
echo "=====开始设置启动脚本====="
# 设置启动脚本
cat > /usr/lib/systemd/system/kafka${KAFKA_PORT}.service <<-EOF
[Unit]
Description=Apache Kafka server (broker)
After=network.target  

[Service]
Type=simple
User=${USER_NAME}
Group=${USER_NAME}
Environment=JAVA_HOME=/usr/local/jdk
ExecStart=$KAFKA_PATH/${KAFKA_PORT}/$PKG_NAME/bin/kafka-server-start.sh /data/public/kafka/${KAFKA_PORT}/$PKG_NAME/config/server.properties
ExecStop=$KAFKA_PATH/${KAFKA_PORT}/$PKG_NAME/bin/kafka-server-stop.sh 
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
echo "=====启动并设置开机自启====="
systemctl daemon-reload
systemctl start kafka${KAFKA_PORT}.service
systemctl enable kafka${KAFKA_PORT}.service
echo "=====启停方式:systemctl start|stop|restart kafka${KAFKA_PORT}====="


#按照端口判断,默认启动时间2分钟,判断两次,按需修改循环次数
echo "=====开始判断服务是否已启动成功====="
    for((i=1;i<=12;i++));
    do
        sleep 10
        ISSTART=$(netstat -nutlp|grep ${KAFKA_PORT} |grep -v "grep"|wc -l)
        if [ "$ISSTART" != "0" ]; then
            echo "发现服务端口,为确保服务真正启动成功,等待15秒后进行第二次判断!"
                sleep 15
                ISSTART=$(netstat -nutlp|grep ${KAFKA_PORT} |grep -v "grep"|wc -l)
                if [ "$ISSTART" != "0" ]; then
                    echo "等待15秒后端口仍启动,服务第二次判断通过,服务启动成功!"
                    exit 0
                else
                    echo "等待15秒后端口未启动,服务第二次判断失败,服务启动失败!"
                    exit 1
                fi
        else
            echo "服务启动中,请等待!"
        fi
    done
    echo "等待2分钟后未发现服务端口,服务启动失败!"
    exit 1

清理临时目录安装包

#!/bin/bash

rm -rf ${TEMP_PATH}
mkdir -p ${TEMP_PATH}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值