刚给许可服务器打完全年的安全补丁,机房里温度太低,出来坐在台阶上缓两分钟,腿都冻麻了。
其实这个补丁计划我在心里排了快一个月了。微软那边早就推送了累计更新,好几个高危漏洞都是远程执行类的,不打心里一直悬着。但许可服务器这玩意儿跟别的服务器不一样,别的崩了修就是了,它一崩全公司画图仿真全停。我拖了两周不敢动,中间还因为实在睡不着翻来覆去,最后在日历上圈了今天凌晨两点这个窗口。为啥选两点?因为日志显示最近一个月这个点完全没有人在线,白天任何时候动都有风险。我提前三天在群里发了两次通知,告诉所有部门“本周四凌晨停机维护,预计一小时”,其实心里怕得要死,生怕补丁打完重启之后FlexNet服务起不来。我把旧版本的安装包、授权文件、还有上个月的完整系统备份全拷到移动硬盘上带进机房了,万一出问题大不了全盘还原。
第一件事是打补丁之前先做了个完整系统镜像。这块硬盘是去年换的SSD,速度倒是快,镜像跑了不到二十分钟就完了。然后开始打那些累计更新包,一个一个按顺序装。装到第三个的时候有个KB包卡在“正在撤回更改”这个状态卡了快十分钟,进度条纹丝不动,我当时后背就冒汗了,心想完了完了这要是卡死在这个阶段,系统回滚不了我今晚就得搞通宵了。好在最后它自己退了回去提示“安装不适用”,跳过去了继续装后面的。后面那几个倒是顺,装完重启系统,我心里默数着时间等FlexNet自动启动,足足等了可能一分多钟服务才起来,中间我一度以为要崩,结果最后还是绿了。趁这个停机窗口顺便把许可服务器的使用数据统计看板优化了一下,因为我们CFO上个月在IT预算会上问了一句“为什么IT预算年年涨”,我当时没拿出硬数据,这次必须把账算明白。
第二件事是把各模块的使用率统计做成自动报表,直接钉在服务器管理界面首页。以前我都是每季度手工拉一次Excel给CFO汇报,但她上次会上一句话把我问住了——“你能不能给我看个实时数据,别老拿上季度的旧数”。这次我在补丁打完、服务稳定之后,顺手装了一个轻量级的报表插件,每天早上六点自动抓取前一天的许可使用数据,包括每个Feature的峰值并发、平均空闲时长、总占用量、超时回收次数,全部做成趋势图挂在Web界面上。插曲是装这个插件的时候有个依赖包版本跟系统上的老库冲突了,我查了一下日志发现是之前没卸载干净的旧版本留下的,临时卸载重装之后才算过,前前后后折腾了二十多分钟,那段时间我生怕冲突把服务带崩了。

第三件事是把实际使用峰值和采购基数的对比图也挂上去了。我花了一个多小时把过去十二个月的每日峰值全部拉出来画成了一条曲线,然后把当前采购的授权基数用一条水平线标在上面。两条线之间的面积就是“白花的钱”。CFO看数字看不明白,看图一眼就能懂——那条水平线远远高过曲线的大部分区域,说明我们绝大部分日子都在养着用不到的授权。我趁补丁停机的时候把这个图表的更新逻辑写成了自动化,每天凌晨自动刷新数据,以后随时打开都是最新的。插曲是加载图表的时候因为服务器内存占用比较高,图表渲染卡了几秒才出来,我以为是补丁搞出来的问题吓出一身冷汗,后来发现是Edge浏览器缓存的问题换个浏览器就好了,虚惊一场。
最后说两个我认为许可服务器打补丁绝对不能省略的前置备份步骤。第一个是必须在打补丁前把当前的license.dat和所有option配置文件全部另存一份到U盘和云端各一份,而且要在打补丁前用lmutil做一次语法检查,确认文件本身没有问题,不然打完补丁重启时发现授权文件本身已经坏了都不知道是谁的锅。第二个是必须把FlexNet服务的启动类型从“自动”改成“手动”,然后打完补丁重启系统后手工启动服务,确认一切正常再把启动类型改回“自动”。这样可以避免系统重启时自动拉起服务但过程中有文件锁冲突,导致服务半死不活地运行然后你查半天找不到原因。
腿不麻了,上楼关灯回家。亲测好使,这周已经帮3个同事解决了同款问题。