Zookeeper离线安装脚本

#!/bin/bash
#********************************************************************
#Author:            yuankun
#Date:              2023-03-18
#FileName:         install_zookeeper.sh
#Description:      The test script
#Copyright (C):     2023 All rights reserved
#********************************************************************
JDK_FILE="jdk-8u321-linux-x64.tar.gz"
#JDK_FILE="jdk-11.0.12_linux-x64_bin.tar.gz"
ZOOKEEPER_FILE=apache-zookeeper-3.7.1-bin
TAR=tar.gz
ZOOKEEPER_DIR=/usr/local/src
DIR=`pwd`
JDK_DIR="/usr/local"

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$2" && $MOVE_TO_COL
    echo -n "["
    if [ $1 = "success" -o $1 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $1 = "failure" -o $1 = "1"  ] ;then
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo                                                                                                                              
}

install_jdk(){
if !  [  -f "$DIR/$JDK_FILE" ];then
	color 1  "$JDK_FILE 文件不存在" 
	exit; 
elif [ -d $JDK_DIR/jdk ];then
        color 1  "JDK 已经安装" 
	exit
else 
        [ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi
tar xvf $DIR/$JDK_FILE  -C $JDK_DIR
cd  $JDK_DIR && ln -s jdk* jdk 

cat >  /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=$JDK_DIR/jdk
#export JRE_HOME=\$JAVA_HOME/jre
#export CLASSPATH=.:\$JAVA_HOME/lib/:\$JRE_HOME/lib/
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
.  /etc/profile.d/jdk.sh
java -version && color 0  "JDK 安装完成" || { color 1  "JDK 安装失败" ; exit; }

}

install_zookeeper(){
    cd ${DIR}
    if [ -f "${ZOOKEEPER_FILE}.${TAR}" ]
    then
	    echo '正在安装zookeeper,请稍等......'
        mv ${ZOOKEEPER_FILE}.${TAR} ${ZOOKEEPER_DIR};cd ${ZOOKEEPER_DIR}
        tar xf ${ZOOKEEPER_FILE}.${TAR};ln -s ${ZOOKEEPER_DIR}/${ZOOKEEPER_FILE} ${ZOOKEEPER_DIR}/zookeeper
		rm -rf ${ZOOKEEPER_FILE}.${TAR}
        mkdir -p /data/zookeeper;cd ${ZOOKEEPER_DIR}/zookeeper/conf
        cp zoo_sample.cfg zoo.cfg;sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/data\/zookeeper/' zoo.cfg
        cat > /usr/lib/systemd/system/zookeeper.service <<EOF
[Unit]
Description=Zookeeper Service unit Configuration
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=${JDK_DIR}/jdk
ExecStart=${ZOOKEEPER_DIR}/zookeeper/bin/zkServer.sh start ${ZOOKEEPER_DIR}/zookeeper/conf/zoo.cfg
ExecStop=${ZOOKEEPER_DIR}/zookeeper/bin/zkServer.sh stop
KillMode=none
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
        systemctl daemon-reload;systemctl enable --now zookeeper
	if [ $? -eq 0 ]
	then
	    echo 'zookeeper启动成功!安装完成'

        else
            echo 'zookeeper启动失败!安装失败'
        fi
    else
        echo '文件不存在,退出安装!'
        exit;		
	
    fi
}
install_jdk
install_zookeeper
1. 下载zookeeper二进制包: 首先需要从zookeeper官网(https://zookeeper.apache.org/releases.html)下载zookeeper的二进制包。 推荐下载最新的稳定版本。 2. 准备Dockerfile: 在本地创建一个Dockerfile文件,用于构建zookeeper的Docker镜像。Dockerfile文件内容如下: ``` FROM java:8 COPY zookeeper-3.5.5-bin.tar.gz /opt RUN tar -xvzf /opt/zookeeper-3.5.5-bin.tar.gz -C /opt \ && mv /opt/zookeeper-3.5.5-bin /opt/zookeeper \ && rm -rf /opt/zookeeper-3.5.5-bin.tar.gz ENV ZOOKEEPER_HOME /opt/zookeeper ENV PATH $PATH:$ZOOKEEPER_HOME/bin ADD init.sh /init.sh RUN chmod +x /init.sh CMD ["/init.sh"] ``` 3. 编写init.sh脚本: 接下来我们需要编写init.sh脚本,该脚本主要用于启动zookeeper。在本地创建一个init.sh文件,内容如下: ``` #!/bin/sh $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground ``` 4. 准备文件: 将之前下载的zookeeper二进制包、Dockerfile、init.sh文件放在同一个目录下。 5. 构建Docker镜像: 在命令行中进入该目录,执行如下命令构建Docker镜像: ``` docker build -t myzookeeper . ``` 6. 运行Docker容器: Docker镜像构建完成后,我们就可以运行zookeeper容器了。假设我们将zookeeper数据存放在本地目录“/data/zookeeper”中,执行如下命令启动zookeeper容器: ``` docker run -d --name myzookeeper -p 2181:2181 -v /data/zookeeper:/tmp/zookeeper myzookeeper ``` 上面的命令中,我们将Docker容器内的"/tmp/zookeeper"目录挂载到本地目录"/data/zookeeper"中,以便持久化zookeeper数据。 同时,Docker容器会将zookeeper的2181端口映射到主机的2181端口,以便其他应用可以访问zookeeper。 至此,我们就完成了zookeeper离线安装和Docker化运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值