转至: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. 解决Post请求中文乱码问题

    解决Post请求中文乱码问题 req.setChracterEncoding()要在获取请求参数前调用才有效,不然还是乱码

  2. 集合框架-Map集合特点及常用方法

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  3. 使用Hot Chocolate和.NET 6构建GraphQL应用(4) —— 实现Query映射功能

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 在上一篇文章使用Hot Chocolate和.NET 6构建GraphQL应用(3) -- 实现Query基 ...

  4. django入门 01 创建项目

    安装django库 pip install django 创建--by 终端 django-admin startproject myproject 通过命令创建的django项目,默认不含templ ...

  5. HTTPS 原理详解 (转)

    HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...

  6. H5架构和原生架构的区别

    1.App的3种开发方式 表面上看,手机App都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样.按照开发技术,App可以分成三大类.原生应用(简称nativeApp), ...

  7. Linux小技巧scp命令

    Linux服务器运维小技巧scp命令详细教程. 前言 今天给大家带来的是linux中比较实用的命令scp.善用小技巧,解决工作中的痛点. 掌握一门好的技术或者说一门好的艺术,最快捷的方式就是融入到工作 ...

  8. 【CF457D】Bingo!(数学 期望)

    题目链接 大意 给定\(N,M,K\),表示有一个\(N*N\)的空矩阵,\(M\)个不同的数. 随机地把\(M\)个数中的\(N^2\)个数丢进这个空矩阵中(\(M\ge N^2\)) 再从\(M\ ...

  9. MATLAB基础学习(3)——数值数组及运算

    rand('state',s)表示随机产生数的状bai态state,一般情百况du下不用指定状态.rand('state',0)作用在于如果指容定zhi状态,产生dao随机结果就相同了.一般情况下不用 ...

  10. Codeforces Round #756 (Div. 3)

    本场战绩:+451 题目如下: A. Make Even time limit per test 1 second memory limit per test 256 megabytes input ...