雇佣系统管理员(sysadmin)运维复杂的计算机系统,是行业内一直以来的普遍做法。
这些系统管理员负责将现成的软件组件部署于生产环境中,对外提供某种业务服务。系统管理员的主要工作在于应对系统中产生的各种需要人工干预的事件,以及来自业务部 门的变更需求。随着系统变得越来越复杂,组件越来越多,用户流量不断上升,相关的 事件和变更需求也会越来越多。于是公司需要招聘更多的系统管理员,来应对日益增多 的事件。系统管理员的日常工作与研发工程师相差甚远,通常分属两个不同的部门:开 发部(Dev)和运维部(Ops)。
这种模型具有许多优势。对新公司来说,这种模式在行业内具有广泛的应用案例可供参 考。市场上具有相关从业经历的人也很多,招聘相对容易。
SRE团队成员具有如下特点:
(a)对重复性、手工性的操作有天然的排斥感。
(b)有足够的技术能力快速开发出软件系统以替代手工操作。
SRE的手段
监控系统是SRE团队监控服务质量和可用性的一个主要手段。所以,监控系统的设计策 略值得着重讨论。最普遍的和传统的报警策略是针对某个特定的情况或者监控值, 一旦 出现情况或者监控值超过阈值就触发E-mail警报。但是这样的报警策略并不是非常有效: 一个需要人工阅读邮件和分析警报来决定目前是否需要采取某种行动的系统从本质上就 是错误的。监控系统不应该依赖人来分析警报信息,而是应该由系统自动分析,仅当需 要用户执行某种操作时,才需要通知用户。
一个监控系统应该只有三类输出。
紧急警报(alert)
意味着收到警报的用户需要立即执行某种操作,目标是解决某种已经发生的问题, 或者是避免即将发生的问题。
工单(ticket)
意味着接受工单的用户应该执行某种操作,但是并非立即执行。系统并不能自动解 决目前的情况,但是如果一个用户在几天内执行这项操作,系统不会受到任何影响。
日志(logging)
平时没有人需要关注日志信息,但是日志信息依然被收集起来以备调试和事后分析 时使用。正确的做法是平时没人会去主动阅读日志,除非有特殊需要。
应急事件处理:
可靠性是MTTF(平均失败时间)和MTTR(平均恢复时间),系统恢复到正常情况的最有效指标,就是MTTR。
建设运维问题手册:
任何需要人工操作的事情都只会延长恢复时间。 一个可以自动恢复的系统即使有更多的故障发生,也要比事事都需要人工干预的系统可用性更高。当不可避免地需要人工介入时,我们也发现与“船到桥头自然直”的态度相比,通过事先预案并且将最佳方法记录 在“运维手册(playbook)”上通常可以使MTTR降低3倍以上。初期几个万能的工程
师的确可以解决生产问题,但是长久看来一个手持“运维宝典”经过多次演习的on-call 工程师才是正确之路。虽然不论多么完备的“运维手册”也无法替代人的创新思维,但 是在巨大的时间压力和产品压力下,运维手册中记录的清晰调试步骤和分析方法对处理 问题的人是不可或缺的。因此,Google SRE将大部分工作重心放在“运维手册”的维护 上,同时通过“Wheel of Misfortune”等项目法2不断培训团队成员。
变更管理:
大概70%的生产事故由某种部署的变更而触发。变更管理的最佳实践是使用自动化来完成以下几个项目:
●采用渐进式发布机制。
●迅速而准确地检测到问题的发生。
●当出现问题时,安全迅速地回退改动。
这三点可以有效地降低变更给SRE和最终用户带来的时间成本和服务质量的下降。通过将人工因素排除在流程之外,这些操作将不再受到经常发生在人身上的“狼来了”思想以及对大量重复性劳动的关注疲劳所影响。于是,变更执行的速度和安全性同时得到了提高。
需求预测和容量规划:
需求预测和容量规划简单来说就是保障一个业务有足够的容量和冗余度去服务预测中的未来需求。、一个业务的容量规划,不仅仅要包括自然增长(随着用户 使用量上升,资源用量也上升),也需要包括一些非自然增长的因素(新功能的发布、商业推广,以及其他商业因素在内)。
容量规划有几个步骤是必需的:
●必须有一个准确的自然增长需求预测模型,需求预测的时间应该超过资源获取的时间。
●规划中必须有准确的非自然增长的需求来源的统计。
●必须有周期性压力测试,以便准确地将系统原始资源信息与业务容量对应起来。
因为服务容量对可用性来说是极为重要的,很自然的,SRE应该主导容量规划的过程。 同时,这也意味着SRE需要主导资源部署的过程。
资源部署
资源的部署(provisinging)是变更管理与容量规划的结合物。资源的部署和配置必须能够非常迅速地完成,而且仅仅是在必要的时候才执行,因为资源通常是非常昂贵的。而且这个部署和配置的过程必须要确保能够正确地执行完毕,否则资源就仍然处于不可用状态。增加现有容量经常需要启动新的实例甚至是整个集群,这通常需要大幅度修改现有的集群配置(配置文件、负载均衡、网络等),同时还要执行一系列测试,确保新上线的容量可以正确地服务用户。因此,新资源的部署与配置是一个相对比较危险的操作,必须要小心谨慎地执行。
效率与性能
高效地利用各种资源是任何赢利性服务都要关心的。因为SRE最终负责容量的部署和配 置,因此SRE也必须承担起任何有关利用率的讨论及改进。因为一个服务的利用率指标 通常依赖于这个服务的工作方式以及对容量的配置与部署上。如果能够通过密切关注一 个服务的容量配置策略,进而改进其资源利用率,这可以非常有效地降低系统的总成本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)