logo

单机房故障自愈--运维的春天

作者:沐小媛2019.08.05 23:29浏览量:3278

简介:干货概览 在单机房故障自愈--黎明之战中,我们介绍了单机房故障自愈的准备工作和基础设施,包括容灾能力建设、监控平台以及流量调度平台。本篇主要介绍单机房故障自愈

干货概览

在单机房故障自愈--黎明之战中,我们介绍了单机房故障自愈的准备工作和基础设施,包括容灾能力建设、监控平台以及流量调度平台。本篇主要介绍单机房故障自愈的具体解决方案,内容包括:

单机房故障止损的能力标准

单机房故障自愈的整体架构

单机房故障自愈的常见问题和解决方案

单机房故障止损的能力标准

在单机房容灾能力、故障发现能力、流量调度能力基础上,业务线具备了通过流量调度进行单机房故障止损的条件。理想情况下,我们希望构建一套完整、自动、智能的自愈方案,但各个业务线的服务特点不同和基础能力参差不齐,很难一蹴而就,所以我们建立起一套自愈能力的等级标准,业务线根据自身情况制定相应建设计划,逐步提升自愈能力。

自愈能力等级标准划分为5级,从Level 0的完全人工止损,到Level 4的自动化、智能化止损。对于Level0、Level1,人工感知止损面临着速度慢、误操作、场景覆盖不全、风险控制能力不足等问题;、Level2则实现了止损操作的平台化、预案化,一定程度上提升了止损效率;Level3则实现了自动化报警联动故障止损,实现了止损效率的进一步提升。2016年,百度大部分核心产品线已经实现了Level 2、Level 3的自动止损能力,但在场景覆盖与风险控制上仍存在不足。由此,Level 4智能自愈方案应运而生。

单机房故障自愈的架构

针对传统故障自愈方案中存在的问题,我们构建了单机房故障自愈整体解决方案。

自愈方案通过抽象、规范处理流程实现单机房故障自愈的自动化,即将止损过程划分为统一的感知、决策、执行三个阶段;同时通过运维知识库解决基础数据、基础设施差异化问题;通过策略框架支持智能化异常检测、策略编排、流量调度问题,同时支持用户自定义策略需求。实现单机房故障自愈的标准化、智能化。

在单机房故障自愈--黎明之战提到的百度网络与业务架构情况,我们将整体流量调度止损架构拆分为3层:接入层、服务层、依赖层。

针对这3层的监控感知、止损决策与故障止损方式的不同,将止损自动决策拆分为外网止损自动决策与内网止损自动决策。

外网止损自动决策:覆盖接入层。基于外网、内网监控信号;触发外网止损决策器进行止损决策;执行DNS流量调度止损。

内网止损自动决策:覆盖服务层、依赖层。基于内网监控、基础监控、业务监控提供的故障信号;触发内网止损决策器进行止损决策;执行流量调度、主备切换、弹性降级等止损操作。

单机房故障自愈的常见问题和解决方案

传统的流量调度自动止损方案存在如下问题:

1容量风险控制能力不足

【问题描述】

传统流量调度的模式有两种:固定比例模式与容量保护模式。

固定比例模式:按照预先设定的固定预案,一个机房故障,该机房的流量按照预先设定的比例分配到其他的机房。很可能某个机房的容量或剩余机房的总容量不足,切流量后导致多个机房发生故障。

容量保护模式:针对固定比例模式存在的容量风险问题,改进的流量调度方式为执行前判断容量是否充足,容量充足则进行流量调度,否则不进行调度并通知人工介入处理。但此种方案面对的问题是:

1.容量仍有buffer可以进行部分止损。期望能够在不超过容量保护的情况下进行尽可能的调度,减少对用户的影响。

2.即使按照容量进行调度,服务过载仍可能发生,容量数据本身存在一定误差,流量成分的变化以及变更等导致的容量退化,都可能导致原先容量无法完全可信。

【解决方案】

基于容量水位的动态均衡

在流量调度时,对于容量不准确存在的风险,我们划分两条容量警戒线。

安全水位线:流量处于在安全线以下则风险较小,可以一步进行切换。

水位上限:该水位线表明服务的最大承载能力,一旦流量超过故障水位线,很大概率会导致容量过载。

如果安全水位线提供的容量不足以满足止损,那我们期望使用上两条中间的容量buffer,同时流量调度过程中进行分步试探,避免一次性调度压垮服务。

基于快速熔断的过载保护

在流量调度时,建立快速的熔断机制作为防止服务过载的最后屏障。一旦出现过载风险,则快速停止流量调度,降低次生故障发生的概率。

基于降级功能的过载保护

在流量调度前,如果已经出现对应机房的容量过载情况,则动态联动对应机房的降级功能,实现故障的恢复。

2业务线止损策略需求差异大

【问题描述】

我们实现了基础的单机房故障流量调度止损算法,但在部分业务线中仍存在较大的需求差异,比如:

分步动态调度需求:业务存在充Cache的情况,过程中服务能力降低,需要控制切换速度。

优先级调度需求:产品对延迟敏感,止损时需要优先切到同地域机房;业务服务于多个上游,多个上游的重要程度不同,优先保证重要上游服务稳定。

容量负载计算需求:请求成分不同,不同成分请求带来的容量负载不同。

这部分需求一部分与业务强相关,不具备通用性,另一部分则存在不同产品线需求冲突的情况。

【解决方案】

针对以上问题,我们推出了故障止损流量调度策略开放框架。支持用户根据业务需求自定义策略实现。同时将较为通用的策略开放为插件,使业务线可以根据需求自由插拔策略。

基于以上两点,结合智能运维开发框架(详见AIOps时代,你准备好了吗?),单机房故障自愈框架无缝支持不同业务线,使得研发者可以更关注策略本身,而无需关注不同业务线运维模型、底层平台适配成本。

总结

通过单机房故障自愈系列文章,我们详细介绍了单机房故障止损的必要性、准备工作,并构建了基于容量动态分步流量调度的单机房故障自愈框架,实现自动化智能化故障止损。对整体单机房故障自愈解决方案不同阶段的改进总结如下:

相关文章推荐

发表评论