通过shell批量更新多台linux上jar包

背景

内网集群jar包需要批量更新

将集群每台机器逐一覆盖重启耗费大量精力

内网不能使用yum或者apt-get等工具,安装比如jenkins等工具估计会很麻烦
上次装个nginx,死活就装上了一半,没有把https相关组件装全,依赖越装越多

准备工作

参见其他博主的文章https://blog.csdn.net/u010606397/article/details/111251175

结合经验简单总结一下:

  • 在集群的每个节点上执行命令ssh-keygen,然后一路按回车键即可
  • 选出一台用于主导更新的机器,使用ssh-copy-id root@服务端IP命令,在这台机器上登录所有其他机器。

这是为了脚本能调用另一台linux命令而做的准备

然后需要配置一台静态资源服务器,可以使用java-web容器,或者nginx。我这里使用了nginx。

大致架构

组织架构

说明:红色框选出来的内容是每台机器上需要预置的

  1. 手动更新静态资源的jar包,例如我只需要把nginx静态代理的目录下jar包覆盖即可
  2. 运行主导机上统一更新脚本
  3. 统一更新脚本调用每台机器的更新本机脚本
  4. 更新本机脚本从静态资源服务器(nginx)下载jar包到指定位置,并重启java服务

然后贴出我的两个shell脚本供参考

更新本机脚本 update_jar.sh

#显示一下执行命令的是哪台机器
echo 我是61机

#cd命令就不解释了
cd /opt/pzj

#从静态资源服务器(nginx)下载jar包到指定路径
wget http://??.???.??.61/update_jar/nb.jar -O /usr/local/nb.jar

#下载完成后,杀掉原来的进程
kill -9 `ps -ef | grep nb.jar | grep -v grep | awk '{print $2}'`

#进程杀死后删除原来的jar包
rm -f /opt/pzj/nb.jar

#将新jar包复制到原来jar包所在位置
cp /usr/local/nb.jar /opt/pzj/nb.jar

#运行新的jar包
nohup java -jar /opt/pzj/nb.jar --spring.profiles.active=prd &

统一更新脚本 all_update.sh

#统一更新脚本和nginx都在集群第一台服务器上,这句调用了自己的《更新本机》脚本
nohup sh /usr/local/pzj/update_jar.sh >> run61.out &

#通过配置好的ssh免密登录,调用集群其他服务器的《更新本机》脚本
nohup ssh root@??.???.??.62 sh /usr/local/pzj/update_jar.sh >> run62.out &
nohup ssh root@??.???.??.63 sh /usr/local/pzj/update_jar.sh >> run63.out &

###还有多少机器都可以追加在这下面

注意

  • 不要让nginx的静态资源直接指向本机运行的jar包,又调用本机一键更新脚本,会导致闭环下载的错误 (这句有点绕口,不脑抽的可以忽略)
  • 在《更新本机》脚本中,我选择先下载jar包到其他位置,然后杀掉进程,覆盖jar包,再启动。你也可以偷懒,直接覆盖原来的jar包,然后重启进程。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

控场的朴哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值