
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集群自动批量化补丁升级,通过一系列自动化脚本指令交给机器去完成升级工作,升级过程中脚本会打印升级日志信息到文件中方便升级问题诊断,然后自动化的将日志汇总出升级成功和失败的结果信息出来。不需要完全依赖于人工处理,直接自动批量升级操作。完全解脱了运维人员人工升级工作,大大提升了运维升级效率,也提高了客户对维护工作的满意度。
本项技术采用三层模式来实现:
批量补丁回退代码:
该层主要负责对整个升级结果作出校验与判断,并将升级的全部过程的日志信息记录到文件,方便升级问题诊断。最后解除weblogic 集群节点主机之间的互信关系,保持原有系统登录状态。
升级流程图
自动化升级流程图如下:
1)补丁升级前置条件,采用shell脚本配置集群主机节点免密码访问。
2)通过shell脚本实现补丁解压和配置文件变更,并将补丁文件自动传输到集群节点的指定路径下。
3)采用weblogic自带的wlst工具调用python启动服务脚本实现自动化批量启停weblogic服务。
4)通过shell脚本去完成自动校验补丁冲突、自动补丁删除和自动批量补丁安装等一系列操作。
5)整个升级过程都会记录每一个步骤,并以日志文件方式来存储,方便升级失败后续问题跟踪。
6)升级完成后自动进行日志统计,报告出升级成功率。最后自动解除主机互信关系。
通过此项技术从人肉转变成自动化运维,为工程师与客户带来了高效运维、也为客户免去人工升级带来的问题和人力浪费。更加有效的减少了weblogic集群补丁升级引发出来的故障,避免了工程师过于依赖于人员对于系统的熟悉程度,技术水平等条件,提高了故障处理的成功率。特别是批量升级模块中的补丁冲突校验子模块可以实现自己判断补丁冲突问题,提升自动化补丁升级的智能化。 而结果校验模块中的升级核查子模块也能进行自动排查升级,并将整个升级过程以日志文件记录出来,方便问题定位分析。大大减少了日志查找与定位时间。说到最后重点还是能将重复性的工作转化为指令级变为自动化,解放双手,才能体现运维工作的价值。
本期作者|晏杰宏 主要负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维服务管理经验。目前专注于云计算、中间件、开源技术和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、Postgresql PGCE和阿里云ACP等认证。