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. 使用C#表达式树为两个对象的相同属性赋值

    //缓存表达式树 private static Dictionary<string, object> objCache = new Dictionary<string, object ...

  2. BZOJ 3876 统一下界上下界费用流

    //Mcmf LargeDumpling #include<iostream> #include<cstdio> #include<cstdlib> #includ ...

  3. Hbase性能优化

    HBase性能优化方法总结 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户 ...

  4. iview 在Table组件中使用switch组件并自定义内容和增加自定义事件

    注意: 使用render函数. 效果: 添加自定义文字: 1. 2. 上面的两种方法效果都是一样的: 增加自定义事件: 结果: 自信是进步的源泉. 继续加油. ^_^

  5. mysql ef vs

    https://www.cnblogs.com/dux2013/archive/2017/12/11/8025077.html

  6. Linux—查看路由

    下面那些命令可以用来查看Linux主机的默认路由() A.route B.ifconfig C.ping D.netstat 分析: A.route命令用来显示目前本机路由表的内容,并且还可以针对路由 ...

  7. MySQL的字符集操作命令总结

    这篇文章主要介绍了MySQL的字符集操作命令总结,包括各种查看数据库.数据表等查询命令,需要的朋友可以参考下   以下均在mysql 5.5命令行中运行通过: 查看MySQL支持的字符集: 代码如下: ...

  8. ZJOI2010 诸神眷顾的幻想乡

    题目链接:戳我 非常不好意思,因为想要排版,所以今天先只把代码贴出来,明天补题解. #include<iostream> #include<cstdio> #include&l ...

  9. Sonar页面Author页面展示

    文主要记录通过Jenkins集成git .svn .sonarqube,获取源码后自动构建进行sonar scanner代码审查,并分析在sonar能够展示Author的原因. 一.Sonar通过je ...

  10. 二级索引-phoenix-单机部署

    下载 从下载地址下下载以下对应hbase版本的版本: phoenix-4.7.0-HBase-1.0/bin/phoenix-4.7.0-HBase-1.0-bin.tar.gz 安装部署 解压 ta ...