1. 程式人生 > >zookeeper自動化安裝指令碼

zookeeper自動化安裝指令碼

用於減少操作人員安裝軟體的時間,將zookeeper軟體的安裝寫成指令碼形式,可以降低操作複雜性,提到可移植性。

一、指令碼前準備

1、zookeeper軟體下載

本文做測試的zookeeper版本為 zookeeper-3.4.13

2、zookeeper自定義配置檔案

touch zookeeper_install.conf

之後在zookeeper_install.conf中配置需要配置zookeeper多臺伺服器的DNS,使用者名稱和myid。

這裡沒有根據/etc/hosts檔案進行dns匹配是因為由於線上的hosts檔案中可能存在多個與配置無關的dns,我們再conf中只配置需要安裝zookeeper的dns。

hadoop1 hadoop 1
hadoop2 hadoop 2
hadoop3 hadoop 3

二、指令碼執行格式

指令碼需要傳遞三個引數:

這裡注意傳遞引數為絕對路徑

第一引數是zookeeper安裝包位置:/home/hadoop/packages/zookeeper-3.4.13.tar.gz

第二引數是zookeeper安裝位置:/home/hadoop/apps

第三引數是zookeeper自定義配置檔案位置:/home/hadoop/shell/zookeeper/zookeeper_install.conf

sh zookeeper_install.sh /home/hadoop/packages/zookeeper-3.4.13.tar.gz /home/hadoop/apps /home/hadoop/shell/zookeeper/zookeeper_install.conf

 三、指令碼細節及解讀

#!/bin/bash

# 將安裝包解壓到安裝位置,不輸出日誌
tar -zxvf $1 -C $2 >/dev/null 2>&1

# 儲存配置檔案
# hadoop1 hadoop 1
# hadoop2 hadoop 2
# hadoop3 hadoop 3

CONFIG=$3

# 進入安裝位置,在檔案位置獲取到解壓後的檔名如zookeeper-3.4.13
cd $2
ZOOKEEPER_PARENT=`pwd`
ZOOKEEPER_OLDNAME=`ls | grep "zookeeper"`
ZOOKEEPER_OLD_PATH="${ZOOKEEPER_PARENT}/${ZOOKEEPER_OLDNAME}"
ZOOKEEPER_NEW_PATH="${ZOOKEEPER_PARENT}/zookeeper"

# 將zookeeper-3.4.13檔名改成zookeeper
mv ${ZOOKEEPER_OLD_PATH} ${ZOOKEEPER_NEW_PATH}

# 進入zookeeper資料夾內
cd $ZOOKEEPER_NEW_PATH

# 獲取ZOOKEEPER_HOME
ZOOKEEPER_HOME=`pwd`


modify_profile_and_myid(){

        # 獲取profile位置
        PROFILE="$HOME/.bash_profile"

        cat $CONFIG | while read line
        do
                # 從自定義配置檔案中獲取到DNS,使用者名稱,myid
                DNS=`echo $line | cut -d ' ' -f 1`
                USERNAME=`echo $line | cut -d ' ' -f 2`
                MYID=`echo $line | cut -d ' ' -f 3`

                if [ "$1" == "step1" ]                                                                                                             
                then
                        # 將一下內容寫入zoo.cfg
                        # server.1=hadoop1:2888:3888
                        # server.2=hadoop2:2888:3888
                        # server.3=hadoop3:2888:3888
                        echo "server.${MYID}=${DNS}:2888:3888" >> $2
                elif [ "$1" == "step2" ]
                then
                        if [ ${MYID} -eq 1 ]
                        then
                                
                                # 將~/.bash_profile進行修改
                                # ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper
                                # PATH=$PATH:$HOME/.local/bin:$HOME/bin:
                                # $JAVA_HOME/bin:$ZOOKEEPER_HOME/bin                                

                                sed -i /PATH=/i\\ZOOKEEPER_HOME=${ZOOKEEPER_HOME} ${PROFILE}
                                sed -i '/^PATH=/s/$/:\$ZOOKEEPER_HOME\/bin/' ${PROFILE}
                        else
                                # 將第一臺機器的~/.bash_profile拷貝到其他機器中
                                scp -r ${PROFILE} ${USERNAME}@${DNS}:"$HOME"
                        fi
                        # 將每臺機器上的~/.bash_profile生效
                        ssh -n ${USERNAME}@${DNS} "source ${PROFILE}"
                elif [ "$1" == "step3" ]
                then
                        if [ ${MYID} -ne 1 ]
                        then
                                # 將第一臺機器上的zookeeper資料夾拷貝到其他機器上
                                scp -r ${ZOOKEEPER_HOME} ${USERNAME}@${DNS}:"${ZOOKEEPER_PARENT}"
                        fi
                else
                        # 將其他機器上的myid進行修改
                        ssh -n 
[email protected]
$DNS "cd ${ZOOKEEPER_HOME}/data; echo "${MYID}" > ${ZOOKEEPER_HOME}/data/myid" fi done } # 進入zookeeper中的conf資料夾下,建立zoo.cfg,並將datadir和logdir填入zoo.cfg cd "${ZOOKEEPER_HOME}/conf" cp zoo_sample.cfg zoo.cfg sed -i /dataDir=/d zoo.cfg echo "dataDir=${ZOOKEEPER_HOME}/data" >> zoo.cfg echo "dataLogDir=${ZOOKEEPER_HOME}/log" >> zoo.cfg # 執行步驟1將server.1=hadoop1:2888:3888對應內容存入zoo.cfg modify_profile_and_myid "step1" "zoo.cfg" # 執行步驟2將多臺機器上的~/.bash_profile進行修改 modify_profile_and_myid "step2" # 修改datadir和logdir的許可權 cd ${ZOOKEEPER_HOME} mkdir -m 755 data mkdir -m 755 log # 執行步驟3將zookeeper資料夾拷貝到其他機器 modify_profile_and_myid "step3" # 修改myid modify_profile_and_myid "step4"

四、安裝後測試