[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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章