zookeeper自动化安装脚本

用于减少操作人员安装软件的时间,将zookeeper软件的安装写成脚本形式,可以降低操作复杂性,提高可移植性。

一、脚本前准备

1、zookeeper软件下载

下载地址:https://www.apache.org/dyn/closer.cgi/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

 3、配置免密登录

如果机器没有配置免密登录,可以参照我的自动化ssh文章

https://blog.csdn.net/a763470525/article/details/82888510

二、脚本执行格式

脚本需要传递三个参数:

这里注意传递参数为绝对路径

第一参数是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 $USERNAME@$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"

# 执行步骤4修改myid
modify_profile_and_myid "step4"

四、安装后测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值