本文做者:AIOps智能运维算法
干货概览安全
在单机房故障自愈--黎明之战中,咱们介绍了单机房故障自愈的准备工做和基础设施,包括容灾能力建设、监控平台以及流量调度平台。本篇主要介绍单机房故障自愈的具体解决方案,内容包括:网络
单机房故障止损的能力标准架构
单机房故障自愈的总体架构框架
单机房故障自愈的常见问题和解决方案运维
单机房故障止损的能力标准spa
在单机房容灾能力、故障发现能力、流量调度能力基础上,业务线具有了经过流量调度进行单机房故障止损的条件。理想状况下,咱们但愿构建一套完整、自动、智能的自愈方案,但各个业务线的服务特色不一样和基础能力良莠不齐,很难一蹴而就,因此咱们创建起一套自愈能力的等级标准,业务线根据自身状况制定相应建设计划,逐步提高自愈能力。插件
自愈能力等级标准划分为5级,从Level 0的彻底人工止损,到Level 4的自动化、智能化止损。对于Level0、Level1,人工感知止损面临着速度慢、误操做、场景覆盖不全、风险控制能力不足等问题;、Level2则实现了止损操做的平台化、预案化,必定程度上提高了止损效率;Level3则实现了自动化报警联动故障止损,实现了止损效率的进一步提高。2016年,百度大部分核心产品线已经实现了Level 二、Level 3的自动止损能力,但在场景覆盖与风险控制上仍存在不足。由此,Level 4智能自愈方案应运而生。设计
单机房故障自愈的架构code
针对传统故障自愈方案中存在的问题,咱们构建了单机房故障自愈总体解决方案。
自愈方案经过抽象、规范处理流程实现单机房故障自愈的自动化,即将止损过程划分为统一的感知、决策、执行三个阶段;同时经过运维知识库解决基础数据、基础设施差别化问题;经过策略框架支持智能化异常检测、策略编排、流量调度问题,同时支持用户自定义策略需求。实现单机房故障自愈的标准化、智能化。
在单机房故障自愈--黎明之战提到的百度网络与业务架构状况,咱们将总体流量调度止损架构拆分为3层:接入层、服务层、依赖层。
针对这3层的监控感知、止损决策与故障止损方式的不一样,将止损自动决策拆分为外网止损自动决策与内网止损自动决策。
外网止损自动决策:覆盖接入层。基于外网、内网监控信号;触发外网止损决策器进行止损决策;执行DNS流量调度止损。
内网止损自动决策:覆盖服务层、依赖层。基于内网监控、基础监控、业务监控提供的故障信号;触发内网止损决策器进行止损决策;执行流量调度、主备切换、弹性降级等止损操做。
单机房故障自愈的常见问题和解决方案
传统的流量调度自动止损方案存在以下问题:
1容量风险控制能力不足
【问题描述】
传统流量调度的模式有两种:固定比例模式与容量保护模式。
固定比例模式:按照预先设定的固定预案,一个机房故障,该机房的流量按照预先设定的比例分配到其余的机房。极可能某个机房的容量或剩余机房的总容量不足,切流量后致使多个机房发生故障。
容量保护模式:针对固定比例模式存在的容量风险问题,改进的流量调度方式为执行前判断容量是否充足,容量充足则进行流量调度,不然不进行调度并通知人工介入处理。但此种方案面对的问题是:
1.容量仍有buffer能够进行部分止损。指望可以在不超过容量保护的状况下进行尽量的调度,减小对用户的影响。
2.即便按照容量进行调度,服务过载仍可能发生,容量数据自己存在必定偏差,流量成分的变化以及变动等致使的容量退化,均可能致使原先容量没法彻底可信。
【解决方案】
基于容量水位的动态均衡
在流量调度时,对于容量不许确存在的风险,咱们划分两条容量警惕线。
安全水位线:流量处于在安全线如下则风险较小,能够一步进行切换。
水位上限:该水位线代表服务的最大承载能力,一旦流量超过故障水位线,很大几率会致使容量过载。
若是安全水位线提供的容量不足以知足止损,那咱们指望使用上两条中间的容量buffer,同时流量调度过程当中进行分步试探,避免一次性调度压垮服务。
基于快速熔断的过载保护
在流量调度时,创建快速的熔断机制做为防止服务过载的最后屏障。一旦出现过载风险,则快速中止流量调度,下降次生故障发生的几率。
基于降级功能的过载保护
在流量调度前,若是已经出现对应机房的容量过载状况,则动态联动对应机房的降级功能,实现故障的恢复。
2业务线止损策略需求差别大
【问题描述】
咱们实现了基础的单机房故障流量调度止损算法,但在部分业务线中仍存在较大的需求差别,好比:
分步动态调度需求:业务存在充Cache的状况,过程当中服务能力下降,须要控制切换速度。
优先级调度需求:产品对延迟敏感,止损时须要优先切到同地域机房;业务服务于多个上游,多个上游的重要程度不一样,优先保证重要上游服务稳定。
容量负载计算需求:请求成分不一样,不一样成分请求带来的容量负载不一样。
这部分需求一部分与业务强相关,不具有通用性,另外一部分则存在不一样产品线需求冲突的状况。
【解决方案】
针对以上问题,咱们推出了故障止损流量调度策略开放框架。支持用户根据业务需求自定义策略实现。同时将较为通用的策略开放为插件,使业务线能够根据需求自由插拔策略。
基于以上两点,结合智能运维开发框架(详见AIOps时代,你准备好了吗?),单机房故障自愈框架无缝支持不一样业务线,使得研发者能够更关注策略自己,而无需关注不一样业务线运维模型、底层平台适配成本。
总结
经过单机房故障自愈系列文章,咱们详细介绍了单机房故障止损的必要性、准备工做,并构建了基于容量动态分步流量调度的单机房故障自愈框架,实现自动化智能化故障止损。对总体单机房故障自愈解决方案不一样阶段的改进总结以下: