本文故事场景纯属虚构,人物皆为化名,除此之外都是实在干货。
本文以叙事形式浓缩了很多运维场景、技术与总结作者探讨了:项目管理、云计算架构、高效会议管理、网络安全管理、运维自动化架构设计、项目团队管理、两地三中心架构、人员管理、运维架构体系规划、运维感悟等等与运维密切相关的典型案例及场景。
项目管理及云计算架构今天周五,多云雾霾,我到了单位,接杯水瞅了瞅窗外,云遮雾罩,有种做梦的感觉,不知为啥眼睛跳的厉害,这不是好兆头我习惯先打开邮箱,再打开即时通讯软件,再打开云笔记,看看 24 小时值班情况、工作邮件、项目邮件、即时消息和技术文章,通过这些内容信息基本上能概览昨天工作和今天要干的事情,同时了解一些最新技术动态。
面对朦胧的窗外,我在想:工作人生就是在层层迷雾中探索,不断拨云见日,开拓眼界和道路,实现虚拟梦境到现实世界的转变。
看完邮件和一些 OA 内容,我把今天要做事情划分四个层次:重要而且紧迫紧迫但不重要重要但不紧迫既不重要又不紧迫上午 10:00,我要召开每周项目例会,讨论云计算项目进展情况和后期安排,做好四控两管一协调工作(我好像干了监理的工作)。
这个项目重大,我们将通过这些重大项目促进公司全面升级转型技术架构,由传统信息化建设转型深化移动互联网式发展,向资源集约型、平台支撑型转变并提供持续集成与优化服务,趋向敏捷快速交付,由单一的运维资源交付转型全面云化生态运营交付。
我们的云计算架构体系如下:
围绕上述架构原型,我们要在特定时间、预算、资源限定内依据规范完成云计算项目建设,时间紧任务重,整个项目组压力大,动力也大说到项目管理,它是一门大学问,做运维管理、系统集成,信息化建设,项目经理等工作都需要了解,这里梳理了一个项目管理 5 大流程 10 大知识领域知识图,有兴趣大家可以看看 PMBOk 等相关资料,这里不再赘述。
高效会议管理说到开会,也是一个技术活为了提高会议效率和效能,我通常会这么做:借鉴《罗伯特议事规则》例如会议要有主持人、记录人以维持好会议执行效力;会议要有具体、明确、可操作的行动建议会议要有大小主题,不要跑题,发言有序、有时限。
就事论事,不人身攻击,不质疑私人偏好,习惯,文化观等提前发会议议题,资料避免会上临时看资料,临时讨论,所有都是临时拍脑袋,导致会议冗长、效能差做好会议纪要,遵循 SMART 原则明确会议的结论,任务、执行人和期限,做好工作任务追踪、追溯。
关于我们云计算项目进展,我看了下上周会议纪要,当前还有两个重要问题待解决:云计算核心网络跑内部 BGP 及 OSPF 问题通过 VRF 解决多 VPN 路由转发问题这些问题都很棘手且重要,因此问题交由王宜牵头解决。
王宜是我们的一个全栈型 SRE 人才他从前端 CDN、负载、代理到后端数据库、存储样样通,熟悉网络架构,我们的新建 IDC 网络架构就是他主导设计的,他还能写的一手好代码,我们的运维自动化平台的核心模块也是他主要完成的。
但有些遗憾的是王宜同学总是喜欢上来就干,不喜欢写规划,不喜欢写文档总结,无法协调好团队自打让他负责带团队之后,结果依然是他一个人在全线战斗,没有发挥整个团队的价值为此我跟王宜谈了多次,期望他能发挥更大能力,每当我们讨论到技术和管理的平衡关系时,最终往往陷入到底技术重要还是管理重要的漩涡中。
不知广大读者朋友有何见解?网络安全管理项目会刚开不久,这时网络安全负责人刘森,神色凝重,让我出来一下我跟着他到了隔壁会议室,刘森拿出一份文件来说,这是内部安全审计结果,我们还有安全漏洞,需要立刻整改,否则下周一外部审计过来就不合适了。
我看了看报告,里面提到的安全问题概要如下:
现在网络安全是运维常态化重点工作,我们通常定期做安全漏洞扫描、渗透测试针对安全漏洞,我们常用的漏洞修复策略如下:严格各区域之间访问限制与隔离,阻止服务器之间的互相访问,防止内网移动渗透下线有问题的系统,保留证据,重新安装部署备机后再上线。
严格堡垒机访问权限,什么角色的人使用什么权限加强系统 ip tables 访问策略,严格应用访问策略修改相关系统的账号密码升级打补丁,修复系统、应用漏洞清理有木马等异常的系统服务器虽然有上述很多安全防护措施,但我们总还隐约担心安全,有种一入安全深似海,回首沧桑惊心怀。
也因此我们正在探索从整体网络架构、安全架构层面彻底解决安全防控问题由于是限期安全整改,截止到下周一必须完成我们得立刻找人手开始修复漏洞考虑到这次安全限期整改的重要紧急性,我安排王宜加入刘森安全整改项目组。
王宜是一个全栈型技术人才,希望他能帮助刘森尽快解决这些安全问题运维自动化架构设计对于批量增删改查、密码查询修改,批量打补丁,系统部署,监控管理等工作,我们有自己研发的一套运维自动化综合管理平台,总体功能框架设计如下图:
本运维自动化是一体化解决方案,从我们的实际业务需求出发,基于 DevOps 理念,引入轻量级 IT 服务管理体系,以 CMDB 资源管理为核心驱动,围绕运维监控及自动化管理为建设主体,构建起敏捷运维服务管理体系。
通过运维自动化管理解决方案融合、统一管理运维人员、资源、事件流程,统一监控管理 IT 资源,有效关联整合数据信息,从而促进运维管理工作的标准化、流程化、可视化、自动化、智能化、产品化最终目标是要提供更好地运维服务交付能力,更好地支撑我们当前及未来业务快速稳健发展。
如下是本运维自动化系统逻辑架构规划图:
对于运维自动化系统的设计与实现思路,我们老大(后文即将出场)曾提出了他的一些建议:功能要精专,模块要解耦,不要过度设计产品要实用,能够很好支撑业务,而不是仅仅做成纯技术理论产品运维自动化是把双刃剑,要特别注意安全防护和权限控制。
对此我有些不解,我总想把该系统做成大一统紧耦合,自动化到极致,寄希望于运维自动化解放运维人员,但实际情况我逐渐领悟到二八原则和中庸之道,凡事要适度恰到好处,凡事要柔韧不可用尽项目团队管理上午的项目会、安全事情和一些运维琐事交织在一切,让人感觉时间飞快,眼看就要 12:00 了,我看见刘森和王宜好像还在因为安全修复项目组怎么组建、怎么分工,怎么开工的事情争论不断。
我忍不住过去也加入了他们的争论之中,我把我总结的布鲁斯·塔克曼的团队发展阶段模型及应对措施给他们讲了讲,希望他们能从中获得一些价值和帮助。
说完我先走了,我得赶紧吃点午饭,准备一些材料下周需要召开立项研讨会我打算升级优化核心数据库系统的技术架构,为此我已初拟了个立项报告考虑到项目重大,我需要今天下午提前向老大汇报征求一下意见两地三中心架构概述。
下午 14:00,我准时来到老大的办公室,直奔主题说明我的想法由于历史原因,我们的这组核心数据库系统存在一些隐患:有些模块的数据库 rac 集群心跳线还是百兆,无法保障集群的性能及稳定性存储阵列已经过保,而且容量及性能都有限,难以支撑系统业务发展。
当前缺乏有效地数据备份及灾备保护因此我建议重新升级优化架构,从整体设计上解决这些问题,主要思路如下:基于两地三中心大量成熟方案,构建同城双活实时同步,异地灾备异步同步体系,实施双机 RAC+Dataguard 双层冗余。
基于应用、数据库及存储阵列级多层次数据同步,通过存储连续性保护应对应用逻辑故障,外加磁带归档存储。两地三中心是什么样的架构,下面我给一个示意图例:
我认为我考虑地很周全,我稀里哗啦说了一通,但发现老大没有欣赏之意老大问:“你是否与业务部门,研发部门,商务部门一块讨论过这个方案?”“这个……没有…….”我支支吾吾说:“我觉得这是纯技术方案…..”老大又问:“互联网运维和传统信息化运维有区别么?”
“这个,那个…..”我一时间脑袋空白了老大继续再问:“你这方案的优化创新思路在哪里?”这时我感觉一股冷气直入后脊梁,头脑飞速但凌乱:“我这个方案有很多成熟案例,这种技术架构已有好多年了……”“是好多年了,你还在照搬多年前的技术架构,方案毫无创新。
”,老大若有所思:首先你应该了解业务,技术与业务不能两张皮,技术要与其他部门业务协同,技术要支撑业务发展其次咱们不能再走传统信息化那种封闭竖井式道路,要走平台化、集群分布式、敏捷可持续、开放互联、合作共赢的生态道路。
最后再次提醒你们,从业务到技术到运营,你们需要互相协同与支持我有种顿悟的感觉,但同时我也想赶紧离开这里突然我的手机短信响了,是一条告警显示“严重故障,MySQL 主从不同步”,我有种得救的感觉赶紧跟老大说:“我有个监控告警,小故障,得去了解下情况”,说完赶紧从办公室出来了。
我走到王宜那里问:“谁在处理 MySQL 主从不同步的故障?”王宜很自信地说:“我在处理,这个小问题我能解决”“安全漏洞防护进展咋样了?”我问“刘森让我帮助他做系统安全加固和打补丁”,王宜有些无奈地表情说:“他根本不了解我这边工作情况,我今天一直在忙,根本没时间做系统安全加固的事情,等我把 MySQL 的问题解决了,再做系统 ip tables 控制策略…..”。
我没有再说什么,只是在想,其实我更希望王宜他们团队的组员去处理(而不是王宜直接处理),希望发挥其团队每个人的价值但我又想,王宜本身也需要锻炼团队管理协调能力,所以还是由王宜自己判断如何协调团队工作吧传统运维 VS 互联网运维异同对比
我走回自己的办公位,冥思苦想互联网运维与传统运维有什么区别呢?不知广大读者朋友有何见解?我先说说拙见吧传统运维与互联网运维的差异,可以归结为如下 6 大差异:架构差异工作内容差异知识体系差异面向对象差异。
运维人员差异。体制理念差异。这里只摆放一个架构差异的图解,如下图所示:
网络大流量事件处置这时,张驰快步向我走来,看着有些着急:有故障,我们的多个域名打开异常缓慢,网站性能监测频发告警虽然我干 IT 工作 10 余年了,但当我听到“故障”这俩字,仍然感觉刺耳敏感作为运维人,经常要救火,头脑需要冷静,做到胆大心细,行事可以忙但不能乱。
对于这种访问故障,我们通常会基于网络架构层次逐个捋顺排查和定位网站架构通常如下图所示:
基于网站架构及网民访问的数据流向,我们逐个排查 CDN、源站、负载均衡……很快,我们发现一个老旧负载均衡设备上并发连接数激增,如下图所示:
根据我们以往经验,这种突发激增往往由某种网站活动引起的经过网安部梳理 CDN 监测信息、负载情况、域名网站、流控监测信息,网站业务运行信息,我们很快确定了部分网站缓慢原因由于恶意刷票导致突发大并发连接,过度消耗设备性能,由于这台负载老设备处理并发性能有限,因此该负载下网站都出现了访问缓慢问题。
我看了下时间 17:45,网安部门刘森向我走来,他怀着一种庆幸(找到了问题原因)和一些委屈(又是投票,这是业务层面事情,不是运维导致的故障)向我反馈详细故障由来等他说完原因,我问道:“业务影响范围有多大?后续如何处置?什么时间彻底解决?”。
对于这些问题,刘森貌似还没准备好如何回答我接着说道:做运维需要熟悉业务才能更好地支撑业务,基于业务场景的运维是运维价值观的重要体现这个时候,我们老大也走了过来:“问题解决怎么样了?要抓紧解决,不要保留问题过夜”,老大又说:“发生了这么多问题,你们要从架构体系层面高屋建瓴式地解决问题,而不是天天忙于被动救火”。
我回答道:“好的,我赶紧落实处理恶意刷票问题……”老大又说道:“还有,你们要考虑如何升级转型架构体系,遵循公司战略目标,通过技术创新升级并引领业务发展”对于老大的建议,我若有所思…..不过我还是先解决当下棘手的刷票问题吧。
对于这种恶意刷票现象,很多行业已屡见不鲜了,考虑到投票业务多样性,我们运维解决思路也有很多方式列举如下:调整负载均衡流量,将大流量的业务切换到小流量的负载上,或者单独配置(软、硬)负载使用 IP 地址过滤,通过 CDN、前端防火墙、负载、代理、Lua 等软硬件对恶意 IP 进行过滤。
通过 Session 会话、Cookies 验证来防止恶意刷票通过实名制登记、登录验证码等来防止恶意刷票把业务搬到公有云上,借助公有云资源来防护恶意刷票,也是一种手段人员离职现象与原因概括不知不觉时间已经 18:50 了,这时我们值班服务台 Service Desk 同事打回电话说(需要二线支持),业务部门反映发布系统非常缓慢,甚至打不开,图片、JS、CSS 加载缓慢。
但我查看网站性能监控并未告警,从监控来看有些波动,但貌似没有太明显异常。
这是为什么?这可能是前端或系统相关问题,我想找王宜核查一下,但刘森说他已经下班走了“他不是在帮助你解决安全防护的问题么,怎么没有个里程碑式结论就走人了?”我有些诧异“这个安全事情咱们待会再商议吧”,刘森无奈地说“我现在给王宜打电话,优先处理业务用户反馈问题”。
稍后刘森说:“王宜电话没人接,您看下步怎么办?”这时我脑子里首先一闪念,想起了一个运维前辈曾经给我说过“做运维工作,要有高度责任心,不甩锅不背锅”我拿起电话,直接拨通了王宜团队的组员李智的号码我把问题现象给他描述了一下。
李智说:“头,这个问题现象有些笼统,咱们今天都做过什么变更么?”我犹豫了一下,“今天的变更有很多,不过你先查查前端系统吧,我再找人查其他环节”李智也犹豫了一下“……我可能最近也要变动一下…..”“你说什么?”我好想没听懂。
“我正想找您说这事……”李智说“我打算离职了……”“啊?”我没继续说“这个回头再说吧……”李智转移了话题“我先处理问题吧”我挂下电话,有种焦头烂额的感觉我想了想:铁打的营盘,流水的兵,离职倒也是正常现象。
可能离职原因多种多样,但归纳起来,(借鉴马斯洛需求层次理论)无外乎以下几种诉求得不到满足:生理需求(工资待遇)、安全需求(公司内外环境)、社会需求(文化、社交)、尊重的需求(人文关怀、团队建设)、自我实现的需求(职业发展)、自我超越的需求(人生发展)。
变更经验总结我还在猜想李智的离职原因,这时王宜电话打回电话说刚才没听见电话响我把问题给他又复述了一遍,他好像知道了什么“可能由于批量化操作,导致前端有组特殊的 Ngnix 系统的 ip tables 配置错了”,王宜说:“估计李智不清楚这套系统环境,所以这事还是由我来处理吧”。
没过一会,王宜反馈说问题解决了主要原因是:这组特殊的 Ngnix 在负载后面,但由于错误的 ip tables 策略,收到负载请求则不处理丢弃,因此造成超时 TCP 重传,负载只能再向 Ngnix 分配请求,如此造成访问请求缓慢不稳定。
虽然问题解决,但我总结教训如下:尽量避免变更,应保持不可变基础设施一次变更只做一件事,同时做好变更的记录条件允许的话,在做变更之前先做好测试、应急回退措施做变更最好有实施者,有复核(配合)人员,有工作互备人员。
最好能做到相关人员周知变更最好周五之前做,夜晚做运维自动化的确是把双刃剑,没有标准化、流程化的批量自动化可能是灾难运维架构体系规划这时我突然想起老大的提醒,我应该从架构体系的层面梳理解决当前一锅粥似的一系列问题。
运维架构体系是运维的基础及核心竞争力通过运维体系的构建及完善,使我们的运维做到稳定可靠,准确完备,规范科学以面向服务、持续交付为核心,从人、事、物、流程这四个方面把运维体系进行解构,它们彼此互相作用,共同构建了一个完整实用的运维体系。
前文已阐述了传统运维与互联网运维的不同层面维度的差异,但从另一方面来看,作为运维,还是有很多共同之处。这里我将从一个架构高度看待和规划运维,如下图所示:
下面列举了这四个方面各自的含义及相关内容:人:例如完善岗位职责与职业发展、提高团队技术水平、完善技能分享与培训、完善团队绩效考核、规范工作行为规范等目的是要建成一支工作高效、技术水平高、团结稳定、有职业素养的运维团队。
事:例如做好日常基础运维工作,保障好生产业务运行不断探索新的运维理念与技术,探索优化系统架构具体可以分为几大块,例如运维流程管理,资源架构规划,应急与故障处理,监控与优化,安全与防护,项目及日常工作等等。
目的是要明白运维做什么正确的事,怎么正确地做事,做事有章法,稳定高效能物:主要是如何管理好系统运维所涉及的各种资源例如机房环境、办公设备、服务器、网络设备、操作系统、应用软件、工具等各种软硬件资源目的要使各类资源配置管理妥当,清楚资源属性,知道从哪来,现在哪,要去哪使得物尽其用,物有所值,安置妥当。
流程标准:运用流程标准将上述要素(人、事、物)有机地结合,有序科学地流转、高效稳定地运行例如资源规划与采购,各种标准规范、项目规范、软硬件配置部署规范、安全制度、工作交接等等如下列举一个安全岗位运维规划图:。
想着想着,不觉得已进入深夜,我看下时间,晚上 22:17 了忙碌了一天,感觉整个身体被掏空,终于回到家可以洗把脸睡了晚上做起了梦,梦境不可描述,我把这个奇葩的梦境画面贴出来,请读者帮我解梦,说说你们的理解。
运维同理心这虽然是一个梦,但梦却是真实的表达作为运维工作者,其中的酸甜苦辣,谁解其中味?也许谁干谁知道工作繁琐:采购设备软硬件,上架贴标签,系统环境软硬件部署,统计核实设备信息、复核系统变更情况,搬迁设备,调优系统……如此工作,日复一日,年复一年,会让人感觉无始无终。
鸭梨山大:有句话说的好“操着卖白粉的心,赚着卖白菜的钱”,运维各种繁琐工作交织一块,在有限时间、精力和繁重工作情况下,我们倍感鸭梨山大系统故障、上线、调优、升级、恢复等特殊环境下,我们的身心都面临着不可描述的感受……。
设备系统故障:设备系统,尤其是过保的硬件设备,很容易出故障机房环境、温湿度,业务的读写频繁度,业务人员野蛮地使用,各种因素都会导致设备系统意外故障意外就是意外,往往出现在不恰当的时间、地点经常会让运维人员莫名郁闷。
熬夜加班:有没有别人节假日团圆 Happy,你在苦逼的加班熬夜有没有别人吃喝畅聊,你在角落里苦逼的远程 VPN,有没有三更半夜向特务一样起床敲代码,低声细语的频繁打电话?有没有?反正我都有IT 消防员:我们就是 IT 消防员,我们的最高境界就是无我境界,大家都很舒服时都想不起来我。
一旦想起来我,可能IT环境出问题了我们只有硬着头皮去结尾,牺牲我一个,幸福一大家背黑锅:运维人员有天生背黑锅的宿命当你找不出别人的问题时,那就只能背黑锅,或许找出问题,也可能一起背黑锅任何行业工作都有其委屈尴尬的一面,背黑锅是运维人员成熟历练的必经之路。
我感觉梦里有种刺耳有熟悉的铃声响起,不……我突然醒了,原来是手机响了……..
韩晓光,Devops Master、信息系统项目管理师、ITIL Foundation、RHCE,著有《系统运维全面解析:技术、管理与实践》一书。