[ZooKeeper]实践篇-安装启停shell脚本

zookeeper安装虽然不算复杂,但是还是存在一定的操作。
在部署过程中可能会出现人为操作失误,为避免这种情况,实际线上安装还是需要有安装脚本。
另外,最好应用作为服务注册在服务器。

安装脚本

在这里插入图片描述
我这里的zookeeper.zip下面,放的是安装文件、启动脚本、以及部分需要替换的配置文件:
在这里插入图片描述
这是我自己一行行写,经过验证的,现在把安装脚本放出来:

#!/bin/bash
# author: YoungLu
# desciption: zookeeper install program

##############zookeeper##############
# zookeeper version
ZOOKEEPER_VERSION="3.5.6"
ZOOKEEPER_COMPRESS_NAME="apache-zookeeper-"$ZOOKEEPER_VERSION"-bin"
# set zookeeper install path
INSTALL_PATH=/app/soft
# soft path
SOFT_PATH=/app/soft
#user app
USER_APP_USERNAME=app
USER_APP_PASSWD=app\$123

#################JAVA#################
# print JAVA_HOME
JAVA_INSTALL_PATH=`su - app -c "echo $JAVA_HOME"`
# java environment
JAVA_ENVIRVAR="#java configuration\nJAVA_HOME=/app/soft/jdk1.8.0_131\nPATH=$JAVA_HOME/bin:$PATH\nCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar\nexport JAVA_HOME\nexport PATH\nexport CLASSPATH"

# is user app exist?
egrep "^$USER_APP_USERNAME" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
    echo "user app is not created,prepared to create..."
    useradd $USER_APP_USERNAME
	echo $USER_APP_PASSWD | sudo passwd $USER_APP_USERNAME --stdin  &>/dev/null
fi

# is java installed?
if [ "x" == $JAVA_INSTALL_PATH"x" ]
then
    if [ ! -d "$SOFT_PATH/jdk1.8.0_131" ]; then
		echo "jdk1.8 is not installed,please install \" powersi base environment \" first."
		echo "zookeeper installer exit."
	    exit 1
    fi
	
        echo "JAVA_HOME is not set,prepared to set JAVA_HOME..."
	echo -e $JAVA_ENVIRVAR >> /home/$USER_APP_USERNAME/.bashrc
	source /home/$USER_APP_USERNAME/.bashrc
        echo "SUCCESS."
fi

# move and unzip zookeeper.zip to $SOFT_PATH
mv ./zookeeper.zip $INSTALL_PATH
cd $INSTALL_PATH
unzip $INSTALL_PATH"/"zookeeper.zip

# decompress zookeeper 
tar -xf $ZOOKEEPER_COMPRESS_NAME".tar.gz"
mv $ZOOKEEPER_COMPRESS_NAME zookeeper

# move configuration to zookeeper install path
mv -f log4j.properties zookeeper/conf
mv -f zoo.cfg zookeeper/conf
mv -f zookeeper.sh /etc/init.d/zookeeper
mkdir -p zookeeper/data

# change directory owner to user and user group
chown -R app.app $INSTALL_PATH"/"zookeeper

# add to system service
chmod a+x /etc/init.d/zookeeper 
chown app.app /etc/init.d/zookeeper
chkconfig --add /etc/init.d/zookeeper

#clean rubbish files
rm -rf $INSTALL_PATH"/"$ZOOKEEPER_COMPRESS_NAME".tar.gz"
rm -rf $INSTALL_PATH"/"zookeeper.zip
echo "zookeeper installation complete."

注:这里记得要先装jdk1.8,因为我其他的脚本里面有安装jdk因此这里检测到没有jdk选择提示而不是安装,这里可以根据个人情况修改我的脚本。
另外,由于这里有修改用户环境变量的操作,因此这个脚本最好使用source命令安装。关于为何不用bash安装,可以自行百度。

启动脚本

zookeeper启动时是到bin目录下执行zkServer.sh start,关闭是执行zkServer.sh stop.

#!/bin/bash
# chkconfig: 2345 10 90
# author: YoungLu
# description: zookeeper
zookeeper=/app/soft/zookeeper
zookeeper_BIN=$zookeeper/bin

function Stop()
{
$zookeeper_BIN/zkServer.sh stop
rm -fr $zookeeper_BIN/zookeeper.pid
}
function Start()
{
if [ -f "$zookeeper_BIN/zookeeper.pid" ];then
  echo "zookeeper is running...please stop first..."
  exit 1
fi
if [ `whoami` = "app" ];then
  echo -e "\033[32m--zookeeper is run by app user!--\033[0m"
  $zookeeper_BIN/zkServer.sh start
else
  echo -e "\033[33m--zookeeper switches to app user startup!--\033[0m"
  su - app -c "$zookeeper_BIN/zkServer.sh start"
fi
pid=`ps -ef | grep zoo.cfg | grep -v grep | awk '{print $2}'`
su - app -c "echo $pid > $zookeeper_BIN/zookeeper.pid"
}
function Status()
{
if [ ! -f "$zookeeper_BIN/zookeeper.pid" ];then
  echo "zookeeper is not running..."
else
  echo "zookeeper is running..."
fi
}
case $1 in
stop)
Stop
;;
start)
Start
;;
restart)
Stop
sleep 1
Start
;;
status)
Status
;;
*)
echo "Usage: service `basename $0` {stop|start|restart|status}"
;;
esac

后续步骤: (1)zoo.cfg中需要配置安装zookeeper的服务器 server.1=192.168.133.14:2888:3888
server.2=192.168.133.15:2888:3888 server.3=192.168.133.13:2888:3888
(2)根据上述的对应的server.X,在data目录中创建一个myid的文件,内容是“X” 例,server.1就将“1”写入myid
echo “1” > data/myid

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值