1.配置集群间免密登录

(1)配置host:vim /etc/hosts

(2)生成公钥 :ssh-keygen -t rsa -P ''

  这时会提示生成的公钥的存放地址,直接回车,公钥生成成功

(3)cat id_rsa.pub 将生成的公钥添加到需要登录的机器的authorized_keys文件里

然后直接ssh crawler01即可登录

2.一键启动脚本

 #!/bin/bash

 #程序包名称
ZIP_NAME="aikucun-distributed-spider-crawler.zip" zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/crawler
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "crawler程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
rm -rf ~/crawler/*
echo "已清除旧程序"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit 1
fi
} start(){
echo "开始方法执行..."
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/crawler
cd ~/crawler
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
}
backup
stop
star

3.上传一键启动脚本upload.sh

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` crawler_list="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
for i in $crawler_list
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish_crawler.sh $i:~
echo "$i机器上传完成"
done

4.一键发布脚本

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish_crawler.sh" crawler_list="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
for i in $crawler_list
do
echo "正在上传程序包至$i"
scp $BASE_PATH/crawler/aikucun-distributed-spider-crawler.zip $i:~/jar_new
echo "登录并执行一键启动脚本"
ssh $i "sh $SHELL_NAME"
done

5.通用脚本优化

(1)上传一键启动脚本到相应的服务器的脚本

(2)一键启动脚本

(3)一键发布脚本

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` SERVER_LIST="" upload(){
echo "上传服务器列表:$SERVER_LIST"
for i in $SERVER_LIST
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish.sh $i:~
echo "$i机器上传完成"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
upload
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
"
upload
;;
storage)
echo "尚未集成,敬请期待!"
;;
*)
echo "available operations: [crawler|transport|storage]"
exit
;;
esac
 #!/bin/bash

 #程序包名称
APP_NAME=$
ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip"
APP_PATH=$APP_NAME zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/$APP_PATH
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "$APP_NAME 程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
rm -rf ~/$APP_PATH/*
echo "已清除旧程序"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit 1
fi
} start(){
echo "开始方法执行..."
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/$APP_PATH
cd ~/$APP_PATH
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
} case "$1" in crawler|transport|storage)
backup
stop
start
;;
*)
echo "available operations: [crawler|transport|storage]"
exit 1
;;
esac
 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish.sh"
APP_NAME=$ SERVER_LIST="init" execute(){
echo "服务器列表:$SERVER_LIST"
echo "应用名称: $APP_NAME"
for i in $SERVER_LIST
do
echo "正在上传 $APP_NAME 程序包至$i"
scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new
echo "登录并执行一键启动脚本"
ssh $i "sh $SHELL_NAME $APP_NAME"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
execute
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
"
execute
;;
storage)
echo "尚未集成,敬请期待!"
;;
*)
echo "available operations: [crawler|transport|storage]"
exit
;;
esac

6.在原来的基础上进一步优化,增加一键停止功能

(1)上传发布脚本到集群各个服务器的脚本

#!/bin/bash

#取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` SERVER_LIST="" upload(){
echo "上传服务器列表:$SERVER_LIST"
for i in $SERVER_LIST
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish.sh $i:~
echo "$i机器上传完成"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
crawler16
crawler17
"
upload
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
transport07
transport08
"
upload
;;
storage)
SERVER_LIST="
storage01
storage02
storage03
storage04
"
upload
;;
controller)
SERVER_LIST="
controller01
controller02
controller03
"
upload
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit
;;
esac

(2)发布脚本

#!/bin/bash

#程序包名称
APP_NAME=$
ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip"
APP_PATH=$APP_NAME zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/$APP_PATH
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "$APP_NAME 程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
cd ~/$APP_PATH
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit
fi
} start(){
echo "开始方法执行..."
rm -rf ~/$APP_PATH/*
echo "已清除旧程序"
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/$APP_PATH
cd ~/$APP_PATH
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
} case "$1" in crawler|transport|storage|controller)
if [ "$2" == 'stop' ]; then
stop
else
backup
stop
start
fi
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit 1
;;
esac

(3)一键发布执行脚本

#!/bin/bash

#取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish.sh"
APP_NAME=$
ACT=$ SERVER_LIST="init" execute(){
echo "服务器列表:$SERVER_LIST"
echo "应用名称: $APP_NAME"
for i in $SERVER_LIST
do
echo "正在上传 $APP_NAME 程序包至$i"
scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new
echo "登录并执行一键 $ACT 执行脚本"
ssh $i "sh $SHELL_NAME $APP_NAME $ACT"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
crawler16
crawler17
"
execute
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
transport07
transport08
"
execute
;;
storage)
SERVER_LIST="
storage01
storage02
storage03
storage04
"
execute
;;
controller)
SERVER_LIST="
controller01
controller02
"
execute
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit
;;
esac

一键发布shell脚本的更多相关文章

  1. CentOS 6一键系统优化 Shell 脚本

    CentOS 6一键系统优化 Shell 脚本 脚本的内容如下: #!/bin/bash#author suzezhi#this script is only for CentOS 6#check t ...

  2. centos下的redis一键安装shell脚本

    #!/bin/bash yum install cpp binutils glibc-kernheaders glibc-common glibc-devel gcc make wget #安装依赖库 ...

  3. 该死的端口占用!教你用 Shell 脚本一键干掉它!

    1. 前言 大家好,我是安果! 在 Web 开发中,经常会遇到「端口被占用」的场景 常规解决方案是: 使用 lsof -i 命令查询占用端口的进程 PID 利用 kill -9 PID 干掉目标进程 ...

  4. 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有这个习惯,可以适当做 ...

  5. mac链接linux终端,shell脚本发布代码

    项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...

  6. 使用 shell 脚本实现 LANMP 一键安装

    使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...

  7. 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)

    互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...

  8. Centos 6.4上面用Shell脚本一键安装vsftpd

    Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...

  9. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

    Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...

随机推荐

  1. Go语言标准库之fmt.Print

    Go语言fmt.Printf使用指南 本文整理了Go语言的标准输出流(fmt.Printf)在打印到屏幕时的格式化输出操作. 在这里按照占位符将被替换的变量类型划分,更方便查询和记忆. General ...

  2. Zabbix报错:"Zabbix http poller processes more than 75% busy"的解决

    一.钉钉收到告警 主机名称:Zabbix服务端-172.28.18.75 IP地址 :127.0.0.1 告警时间:2019.10.22 13:34:39 告警信息:Zabbix http polle ...

  3. 百度网盘,FTP上传异常、上传失败的解决办法

    若你的宽带上传上限速度为50KB,那么将百度网盘或FTP的上行速度调为50KB以下即可,就不会出现网络异常的情况了.

  4. usb server

    usb server 是通道型的,驱动在客户端安装 服务端不需要驱动

  5. 关于jq中input的value值clone的问题

    如果想将input进行克隆,然后在后面显示出来并修改input里面的文字,这时就会发现一个问题,就是你克隆出来的value值始终是你克隆时的value,检查页面元素你就会发现,这时需要对克隆之后的in ...

  6. 【Winform-获取ListView选中行】Winform如何获取ListView选中行数据 ?

    =========这是Winform================== 1.设计窗体 一个ListView    listView1 一个textBox    txbSelected 2.listV ...

  7. PHP大文件上传断点续传源码

    文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...

  8. sh_04_列表排序

    sh_04_列表排序 name_list = ["zhangsan", "lisi", "wangwu", "wangxiaoer ...

  9. JavaWeb_(request和response)用户登录注册模板_基础版

    用户登录注册模板进阶版 传送门 用户登录注册模板基础版 登录:当用户登录成功时,跳转到personCenter.jsp,当用户登录失败时,跳转到login.jsp并给出提示 注册:当用户注册成功时,跳 ...

  10. 3.1 JAVA集合框架以及区别

    涉及的参考链接:https://www.runoob.com/java/java-collections.html,http://how2j.cn/k/collection/collection-ar ...