zookeeper一键安装、启动、停止脚本

本文提供了一套完整的Zookeeper自动化部署方案,包括一键安装、启动和停止脚本,帮助用户轻松快捷地管理Zookeeper集群。
摘要由CSDN通过智能技术生成

 zookeeper一键安装脚本

#!/bin/bash
#配置zk的安装目录 修改的地方1 脚本可以自己创建
currentTime=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "请输入zk的安装目录,不存在脚本自动创建,最后一个/不要写 /bigdata/install"
read zkinstallpath

#创建zk安装的目录
if [ ! -d $zkinstallpath ]; then
   mkdir -p $zkinstallpath
fi 
if [ ! -d $zkinstallpath ]; then
  echo "创建目录$zkinstallpath失败!请检查目录是否有权限"
  exit:
fi

#解压tar包
currentdir=$(cd $(dirname $0); pwd)
ls | grep 'zookeeper-.*[gz]$'
if [ $? -ne 0 ]; then
   #当前目录没有zk的压缩包
   echo "在$currentdir下没有发现zookeeper的gz压缩包,请自行上传!"
   exit
else
   #解压
   tar -zxvf $currentdir/$(ls | grep 'zookeeper-.*[gz]$') -C $zkinstallpath
fi

zkbanben=`ls $zkinstallpath| grep 'zookeeper-.*'`

confpath=$zkinstallpath/$zkbanben/conf

cp $confpath/zoo_sample.cfg  $confpath/zoo.cfg

echo -e "请输入zk数据存储目录:例如 /bigdata/data/zookeeper"
read zkdatapath
#创建zk数据的目录
if [ ! -d $zkdatapath ]; then
   mkdir -p $zkdatapath
fi
if [ ! -d $zkdatapath ]; then
  echo "创建目录$zkdatapath失败!请检查目录是否有权限"
  exit
fi
#sed -i "s/^dataDir=\/tmp\/zookeeper/dataDir=$zkdatapath" $confpath/zoo.cfg

bak_dir='dataDir=/tmp/zookeeper'
new_dir='dataDir='$zkdatapath
sed -i "s!${bak_dir}!${new_dir}!g" $confpath/zoo.cfg


echo  "请输入所有的zk集群节点:(按照空格分割) 例如 cdh01 cdh02 cdh03"	
read redisPorts
array=(`echo $redisPorts | tr ' ' ' '` )

for i in `seq 0 $((${#array[@]}-1))`
do
 echo "server.$((${i}+1))=${array[${i}]}:2888:3888" >>$confpath/zoo.cfg
done 

echo  "请输入zk的myid,不能重复,唯一值 例如 1" 
read myid
echo $myid > $zkdatapath/myid

binpath=$zkinstallpath/$zkbanben/bin

sed -i 's/ZOO_LOG_DIR=\".\"/ZOO_LOG_DIR=\"${ZOOKEEPER_PREFIX}\/logs\"/g' $binpath/zkEnv.sh

echo "ZOO_LOG_DIR修改成功"

sed -i 's/ZOO_LOG4J_PROP=\"INFO,CONSOLE\"/ZOO_LOG4J_PROP=\"INFO,ROLLINGFILE\"/g' $binpath/zkEnv.sh
echo "ZOO_LOG4J_PROP修改成功"

sed -i 's/_ZOO_DAEMON_OUT=\"$ZOO_LOG_DIR\/zookeeper.out\"/_ZOO_DAEMON_OUT=\"$ZOO_LOG_DIR\/zookeeper.log\"/g' $binpath/zkServer.sh
echo "_ZOO_DAEMON_OUT修改成功"

sed -i 's/zookeeper.root.logger=INFO, CONSOLE/zookeeper.root.logger=INFO, ROLLINGFILE/g' $confpath/log4j.properties
echo "zookeeper.root.logger修改成功"

#PATH设置
#末行插入
echo "">>~/.bash_profile
echo "#zookeeper $currentTime">>~/.bash_profile
echo "export ZK_HOME=$zkinstallpath/$zkbanben">>~/.bash_profile
echo 'export PATH=$PATH:$ZK_HOME/bin'>>~/.bash_profile
source ~/.bash_profile


echo -e "是否远程复制 请输入y/n"
read flag
if [[ $flag == "y" ]]; then

#修改并分发安装文件
zkpath=$zkinstallpath/$zkbanben
zkpathtemp=$zkinstallpath/$zkbanben-temp
cp -r $zkpath $zkpathtemp

echo "以下输入的节点必须做免密登录"
echo -e '请输入除当前之外的节点(当前节点cdh01),严格符合以下格式IP:zkID,空格隔开, cdh02:2 cdh03:3 cdh04:4 cdh05:5'
read allnodes
user=`whoami`
array2=(${allnodes// / })
for allnode in ${array2[@]}
do
 array3=(${allnode//:/ })
 ip=${array3[0]}
 zkid=${array3[1]}
 echo ======= $ip  =======
 
 #修改文件
 ssh $ip "mkdir -p $zkpath"
 ssh $ip "mkdir -p $zkdatapath"

 #修改zk的myid唯一值
 ssh $ip "echo $zkid > $zkdatapath/myid"

 scp -r $zkpathtemp/* ${user}@$ip:$zkpath/

 ssh $ip "echo ''>>~/.bash_profile"
 ssh $ip "echo '#zk $currentTime'>>~/.bash_profile"
 ssh $ip "echo 'export ZK_HOME=$zkinstallpath/$zkbanben'>>~/.bash_profile"
 ssh $ip 'echo "export PATH=\$PATH:\$ZK_HOME/bin">>~/.bash_profile'
 ssh $ip "source ~/.bash_profile"

 echo ======= $ip 远程复制完成  =======
done

#删除临时文件
rm -rf $zkpathtemp

for allnode in ${array2[@]}
do
 echo ======= 在 $allnode 手动执行 source ~/.bash_profile 在通过 zkServer 查看是否安装成功 =======
done
fi


 

zookeeper一键启动脚本

#!/bin/bash
#配置ES的安装目录 修改的地方1 脚本可以自己创建
zkServers='storm01 storm02 storm03'
#启动所有的zk
for zk in $zkServers
do
    ssh -T $zk <<EOF
    source ~/.bash_profile 
    zkServer.sh start
EOF
echo 从节点 $zk 启动zookeeper...[ done ]
sleep 5
done

 

zookeeper一键停止脚本

#!/bin/bash
zkServers='storm01 storm02 storm03'
#启动所有的zk
for zk in $zkServers
do
    ssh -T $zk <<EOF
    source ~/.bash_profile 
    zkServer.sh stop
EOF
echo 从节点 $zk 启动zookeeper...[ done ]
sleep 5
done

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值