有了故障自愈机器人,运维小哥终于可以安心睡了
在大型互联网公司中,单机房故障因为其故障时间长、影响范围大,一直是互联网公司运维人员的心头之痛。在传统的运维方式中,由于故障感知判断、流量调度决策的复杂性,通常需要人工止损,但人工处理的时效性会影响服务的恢复速度,同时人的不可靠性也可能导致问题扩大。
为了解决这类问题,我们针对百度内外部网络环境建设了基于智能流量调度的单机房故障自愈能力。结合外网运营商链路监测、内网链路质量监测与业务指标监控构建了全方位故障发现能力,基于百度统一前端(BFE)与百度名字服务(BNS)实现了智能流量调度与自动止损能力。同时,基于实时容量与实时流量调度自动止损策略与管控风险,实现了任意单机房故障时业务均可快速自愈的效果。当前此解决方案已覆盖搜索、广告、信息流、贴吧、地图等众多核心产品的单机房故障自愈场景。
1
单机房故障频发影响业务可用性
回顾近2年来各大互联网公司被披露的故障事件,单机房故障层出不穷。例如:
2015年6月某公司云服务香港IDC节点电力故障崩溃12小时
2016年5月某公司杭州电信接入故障,服务中断小时级别
2017年1月某业务天津机房故障,数小时无法提供服务
2017年6月北京某处机房掉电,多家互联网公司受影响
单机房故障频繁影响业务的可用性并且会给公司带来直接或间接的损失。直接损失包括访问流量丢失、商业收入下降、用户体验受损、打破服务等级协议(SLA)造成的商业赔付等,间接损失包括用户信任度下降、给竞品占领市场机会等。
2
单机房故障诱因众多不可避免
单机房故障诱因众多,详细复盘若干单机房故障发现故障诱因大致可以分为四类:
基础设施故障:物理机房故障、网络链路拥塞、流量转发基础设施故障等
程序缺陷:程序隐藏Bug、程序性能严重退化等
变更故障:测试不充分的程序、配置、数据变更,人工临时介入的误操作等
依赖服务故障:第三方服务故障例如通用的认证服务、支付服务、存储服务、计算服务故障等
3
单机房故障止损可靠性与效率急需提升
人工处理场景下,运维人员通常选择7*24小时值班,接收大量的报警,随时准备在紧急情况下进行响应、决策、操作一系列故障止损动作,尽量挽回服务损失,降低故障影响。
但上述解决方案会面临如下问题:
响应可能不够迅速:例如夜间报警
决策可能不够精确:例如新手OP经验欠缺,误决策
操作可能出现失误:例如止损命令错误输入
“机器人”处理场景下,单机房故障自愈程序可独立完成故障感知、决策、执行的完整故障处理过程,并及时向运维人员同步故障处理状态。运维人员的职责由处理转向管理,最终运维人员在低压力值班中保证服务稳定运行。
4
单机房故障自愈解决方案概述
百度云AIOps框架中,单机房故障自愈解决方案构建在运维知识库、运维开发框架、运维策略框架三个核心能力之上。具体过程为自愈程序搜集分散的运维对象状态数据,自动感知异常后进行决策,得出基于动态编排规划的止损操作,并通过标准化运维操作接口执行。该解决方案策略和架构解耦,并且托管到高可用的自动化运维平台之上,实现了业务在任意单个机房故障情况下皆可自愈的效果。
截至目前该方案已覆盖百度大多数核心产品,止损效率较人工处理提升60%以上。典型案例:
在8月28日某产品在单机房故障发生后1min55s完成止损。如下图所示,18:37:00某模块可用性开始出现下跌,单机房故障自愈程序在18:38:55完成流量调度,可用性恢复。
18:37:00可用性开始出现下跌
18:38:55完成流量调度,可用性恢复
在后续文章中我们会继续介绍单机房故障自愈的更多详细内容,敬请期待!
作者介绍
运小辰 百度云高级研发工程师
负责百度云智能故障自愈方案相关设计研发工作,致力于降低单机房故障自愈风险、提高故障自愈效率,为业务可用性保驾护航。