“没有折腾,就没有故障”这句话虽糙,但却很有道理,尤其在运维上。据有关咨询机构统计,数据中心的故障中有百分之七十是人为故障,也就是与人的活动强相关,可见人对于数据中心来说是多么可怕。人为故障其中也可以分为有意的和无意的。有意的是指明知道一些操作会造成数据中心故障,仍执意去做的,这些人往往希望通过造成数据中心运行瘫痪,而达到不可告人的目的,这种故障占到了人为故障的80%,剩余的就是无意的。
数据中心本身是一个复杂庞大的系统,运维的人员不可能面面俱到都精通所有技术细节,当接触到自己不熟悉或不了解的地方,操作易引发意想不到的结果。还有不少的设备,软件质量不高,反复操作下发就容易引发软件问题,从而造成业务中断。这种情况在数据中心里还不少见,数据中心里设备成千上万,数量庞大,动一动问题就来了,所以运行稳定的数据中心不要轻易去改动,就让它自己处于***状态去运行下去。
众所周知,但凡遇到一些重大节日和活动,大型的数据中心都会进行封网,停止一切操作和活动行为,目的就是为了减少故障发生,将人为操作风险降低,将触发BUG的风险降低。这种方式行之有效,除了可能出现一些硬件故障外,几乎很少发生其它类问题。
我们都知道乌龟的寿命很长,活上几百年轻飘飘的,就是因为乌龟很少动,移动缓慢,这大大延长了它的生存寿命。数据中心运维也喜静不喜动,少动慎动,这能***程度减少故障发生。金融银行业的数据中心对可靠性要求很高,为了避免出故障,银行的数据中心内部制定了严格的操作制度,所有的操作都要遵守统一规范,任何命令的下发和变更都要经过行里提前审核,甚至在模拟环境中验证过没问题,才开始到现网中去实施操作,银行业的数据中心操作最为规范,使得数据中心的可靠性也***。
不过,为了快速响应业务需求和提高资源利用率,运维又不得不频繁折腾,不动基本做不到。一个数据中心可能每周晚上都有安排变更,还有设备软件升级、配置优化、设备替换等工作,数据中心总是有没完没了的变更操作,这样不可避免地在操作过程中出现一些新问题,导致数据中心总是无法稳定下来,业务经常受到影响,这其实就违背了运维祖训的宗旨。
数据中心里需要的技术知识太多,涵盖多个学科几十个门类,没有谁能全部掌握,完全掌握一门都很难,这时制定相应的操作,受限知识面,总会有考虑不周的地方,一旦有漏掉就可能在操作过程中产生问题。对于变更操作,任何人都没有绝对的把握,凡事都可能有意外,就像是做手术,再小的手术也是有风险的,也要家属签字,万一出了事故手术操作者能免责。
既然不能避免折腾,那就想办法不让折腾出问题。
首先要分治。分治就是把风险高的和风险低的分开、重要性高的和不高的分开、简单的和复杂的分开、频繁变动的和不频繁的分开。归根到底都在做两件事:封装复杂度、隔离变化。运维架构层的分治,在业界已经非常普遍了,比如应用服务器和数据库服务器分离、交易数据库和用户数据库分离,生产环境和测试环境隔绝。数据中心是有很多小系统组成的,相互之间要松耦合,***是隔离的,这样一个小系统故障,影响是局部的,不会影响全局。
其次是管人。要减少人为折腾出的故障,就要加强对人的约束和管理。不同技术等级的人能做的操作权限是不同的,一个新手要上线操作,必须要由老工程师来指导。要制定详细的人员管理规章制度,对运维的人员形成约束力,对运维的人员进行考核、监控、管理,增强运维人员工作的责任心,有奖有罚。制定严格的各项规章制度,一般的数据中心都需要24小时常年不间断向外提供服务,所以要给数据中心人员充分的休息时间,按时的上下班,避免长时间工作、疲劳工作,减少出错概率。
第三是管事。当数据中心需要变更和优化操作时,需要运维团队的人员进行整体讨论,对预知的风险进行分析,确保操作不会对运行业务造成影响。每个变更都是整个技术团队的讨论通过做出的决定,而不是个人的行为,这样能将技术性人为故障降到***。要制定好回退方案,一旦出现异常情况立即回退,事后将原因分析情况后再进行二次变更。毕竟运维的人员都不是专业搞设备的,对设备内部处理和实现并不见得很清楚,重大的变更操作可以邀请设备厂家的技术人员参与和支持,降低操作错误的风险。每次操作都要做好充分准备,必要的模拟演练、提前的业务搬移、紧急通道的准备等都需要,这样才能降低故障发生的风险。
“没有折腾,就没有故障”是金口良言,听上去很有道理,实际却很难做得到。数据中心本就是一个数据高速流动的场所,业务需求时时都在变化,为了满足业务部署和发展的需求,不让对数据中心变更、折腾,根本就是做不到,“没有折腾”只是一种理想的状态罢了。不过,的确是应该***限度地去主动降低数据中心操作频率,尽量少动,这样可极大降低故障发生概率。人是数据中心活动中的最重要因素,没有人的参与哪里来的数据中心,而偏偏人也同时给数据中心带来成长的烦恼,人在运维的过程中作用依然举足轻重。作为数据中心的运维人,要时刻牢记祖训。