转至:http://blog.itpub.net/28833846/viewspace-2726722/

一、前言介绍

Weblogic是一种基于J2EE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器,是目前商业市场上主要的J2EE应用服务器软件之一,广泛应用于运营商、金融、政府、证券行业等。目前绝大部分企业的核心系统都承载在Weblogic中间件上面。规模较大的核心系统的weblogic集群至少100+节点来管理业务应用,就是为了保障业务系统7*24小时高可用服务在线。然而,大规模的业务系统使用的weblogic中间件软件时常会有安全加固和软件漏洞问题,这些问题都是需要用weblogic软件软件补丁来修复,才能确保系统业务运行安全可靠。现在面临的问题是当前采用纯手工升级方式来修复对于100+大规模的weblogic集群节点补丁升级效率无疑是很低的,工作量庞大,又容易出错。甚至要消耗大量的人力和物力成本。如何提升WebLogic中间件集群补丁升级的效率是目前有待解决的问题。

二、升级痛点

在大规模的weblogic集群环境下人肉升级weblogic补丁会存在以下缺点:

1)、效率低下:首先是人工通过命令来升级补丁,1台主机15分钟,100+以上节点需要至少24小时,如果并行来操作需要安排更多的人力来支持,这样工作量巨大,耗费大量工作时间。

2)、容易引起误操作:由于要求短时间内快速定位升级问题处理。非常容易引起误操作,导致前功尽弃。

3)、长时间业务中断:不能在客户指定时间内完成补丁修复,意味着业务中断的时间大大拉长,将大大降低客户的满意度。

4)、升级问题诊断:由于没有很好的升级日志输出,一旦升级失败无法快速定位升级失败原因。

5)、补丁回退问题:因升级补丁导致业务无法办理,影响客户满意度。当升级失败后客户提出回退 补丁来恢复业务。重复的工作量,也无法保证补丁在指定时间回退成功。

三、提出人肉变自动化技术

通过客户提出来的痛点,我们研究了一套有效而又能落地的方案,就是将人肉变自动化。那就是weblogic集群自动批量化补丁升级,通过一系列自动化脚本指令交给机器去完成升级工作,升级过程中脚本会打印升级日志信息到文件中方便升级问题诊断,然后自动化的将日志汇总出升级成功和失败的结果信息出来。不需要完全依赖于人工处理,直接自动批量升级操作。完全解脱了运维人员人工升级工作,大大提升了运维升级效率,也提高了客户对维护工作的满意度。

本项技术采用三层模式来实现:

1 )、配置准备

该层主要负责补丁升级前的配置准备,主要由建立主机互信、配置更新、补丁批量上传和软件备份等操作部分。该层是升级补丁的前置工作,并将要升级的weblogic 集群节点的主机IP 地址和账号密码配置到指定参数文件中,然后执行脚本实现主节点和从节点之间的主机互信关系。而建立主机互信关系的目标是为了通过一台主机远程操作其它节点免密码校验,直接控制多台主机实现补丁批量上传、软件备份和补丁升级工作。一台机器远程管理多个备节点升级操作大大增强。

2 )、批量升级

该层的批量升级是本方案的核心层,通过前置准备条件建立了主机之间的互信访问关系后,该层就可以实现一台主机操作多个节点的条件。补丁批量升级首先可以通过weblogic 自带的wlst 工具完成服务的停止或检查,然后在借助weblogic 自带的bsu 工具进行补丁升级,但是这里批量升级完全是通过脚本自动化批量并行来处理,并且脚本是具备了补丁冲突校验功能,一旦补丁校验返回的冲突,脚本会判断下一步是要删除旧的补丁,然后在去正常升级。否则直接进行升级。该层自动化批量升级具备良好的逻辑条件判断机制,一旦部分升级失败还是会继续升级不影响其他节点升级工作,最后会将升级失败的节点输出日志文件中,方便排查升级失败问题。整个升级流程全部实现自动化。

附批量升级代码:

批量补丁回退代码:

3 )、结果校验

该层主要负责对整个升级结果作出校验与判断,并将升级的全部过程的日志信息记录到文件,方便升级问题诊断。最后解除weblogic 集群节点主机之间的互信关系,保持原有系统登录状态。

四、升级流程图

自动化升级流程图如下:

1)补丁升级前置条件,采用shell脚本配置集群主机节点免密码访问。

2)通过shell脚本实现补丁解压和配置文件变更,并将补丁文件自动传输到集群节点的指定路径下。

3)采用weblogic自带的wlst工具调用python启动服务脚本实现自动化批量启停weblogic服务。

4)通过shell脚本去完成自动校验补丁冲突、自动补丁删除和自动批量补丁安装等一系列操作。

5)整个升级过程都会记录每一个步骤,并以日志文件方式来存储,方便升级失败后续问题跟踪。

6)升级完成后自动进行日志统计,报告出升级成功率。最后自动解除主机互信关系。

五、总结

通过此项技术从人肉转变成自动化运维,为工程师与客户带来了高效运维、也为客户免去人工升级带来的问题和人力浪费。更加有效的减少了weblogic集群补丁升级引发出来的故障,避免了工程师过于依赖于人员对于系统的熟悉程度,技术水平等条件,提高了故障处理的成功率。特别是批量升级模块中的补丁冲突校验子模块可以实现自己判断补丁冲突问题,提升自动化补丁升级的智能化。 而结果校验模块中的升级核查子模块也能进行自动排查升级,并将整个升级过程以日志文件记录出来,方便问题定位分析。大大减少了日志查找与定位时间。说到最后重点还是能将重复性的工作转化为指令级变为自动化,解放双手,才能体现运维工作的价值。

weblogic集群自动批量化补丁升级的更多相关文章

  1. WebLogic集群案例分析

    WebLogic集群案例分析 2012年8月,某证券交易系统(采用Weblogic中间件),由于基金业务火爆,使系统压力太大,后台服务器频繁死机时,这时工程师们紧急调试系统及恢复操作,等完成这些操作花 ...

  2. Docker创建 tomcat/weblogic 集群

    安装 tomcat 镜像 准备好需要的 jdk.tomcat 等软件放到 home 目录下面,启动一个容器 docker run -t -i -v /home:/opt/data --name mk_ ...

  3. 怎么让CentOS集群自动同步时间

    怎么让CentOS集群自动同步时间?首先机器要连外网,这样才能从互联网上同步时间,这是首先要了解的.好了,主要的方法如下: 在除了运行ntpd之外的机器上,执行: [html] # chkconfig ...

  4. docker 实战---部署tomcat\weblogic集群 (二)

    安装tomcat镜像 准备好须要的jdk tomcat等软件放到home文件夹以下 启动一个虚拟机 docker run -t -i -v /home:/opt/data  --name mk_tom ...

  5. 双节点weblogic集群安装

    一.准备工作 1.环境信息规划 Server name Ip地址 Port 备注 AdminServer 192.168.100.175 7001 管理服务器 Ms1 192.168.100.175 ...

  6. CentOS7安装weblogic集群思路梳理

    以前经常用weblogic集群,但是却没有仔细想过要实现它.这不,前两天成功安装了weblogic集群,现在将其思路整理下.防止日后自己忘掉了. 一.安装weblogic10.3.6 1. 在官网下载 ...

  7. CentOS集群自动同步时间的一种方法

    CentOS集群自动同步时间的一种方法 之前有篇日志是手动同步时间的 http://www.ahlinux.com/os/201304/202456.html 之所以这么干,是因为我们实验室的局域网只 ...

  8. weblogic集群的资料

    博客分类: weblogic 其实网上关于weblogic集群的资料非常多[大部分都是从创建新的domain开始,我这篇先介绍怎么样把原本普通的domain改造为集群环境],如果觉得不够,可以啃web ...

  9. 深信服:Weblogic集群负载均衡技术解决方案

      深信服应用交付产品替换集群中的Master节点,以双机模式部署接入,为Cluster 内的服务器提供应用交换服务,结合健康检查和业务特点,提供十几种负载均衡算法组合,满足多种生产环境下的业务需求. ...

随机推荐

  1. 巧用 Base62 解决字段太短的问题

    最近银联一纸 259 号改造通知,所有支付机构开始改造支付交易,上传终端信息. 不知道其他支付机构的小伙伴针对这次改造是否开始了? 由于这次银联给的时间非常少,我们这边改动涉及到相关上游一起改造,所以 ...

  2. golang中接口对象的转型

    接口对象的转型有两种方式: 1. 方式一:instance,ok:=接口对象.(实际类型) 如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true 配合if...el ...

  3. 【Vulnhub靶场】JANGOW: 1.0.1

    时隔这么久,终于开始做题了 环境准备 下载靶机,导入到virtualBox里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2 ...

  4. Working hard to know your neighbor's margins:Local descriptor learning loss论文笔记

    Abstract 论文提出了一种新的训练方法,受到了 Lowe's matching criterion for SIFT的启发.这种新的loss,要比负责的正则方法更好.把这个新的loss方法结合L ...

  5. docker镜像制作Dockerfile

    使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...

  6. atomic 原子自增工程用法案例

    案例 1 : 简单用法 atomic_int id; atomic_fetch_add(&id, 1) atomic_uint id; atomic_fetch_add(&id, 1) ...

  7. 理解java线程的中断(interrupt)

    一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等. 所以你看到Thread.suspend, Threa ...

  8. MAC OS 常用快捷键

    删除文件或文件夹 commond + delete 复制文件或文件夹 commond + c 粘贴文件或文件夹 commond + v

  9. 基于Docker部署4.2 版本的zabbix监控平台

    准备工作 两台VMware 虚拟机 一台充当zabbix server(安装docker)ip:192.168.73.133 一台充当zabbix agent(安装docker)ip:192.168. ...

  10. css最终章之浮动、定位、溢出属性处理、z-index属性、透明度

    上期内容回顾 CSS简介 # 主要就是给HTML标签添加样式 # 固定语法结构 选择器 {属性名1:属性值;属性名2:属性值} 三种引用方式 1.link标签引入外部css文件(最正规) 2.HTML ...