写点什么

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

  • 2019-09-10
  • 本文字数:2358 字

    阅读完需:约 8 分钟

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

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


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

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

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

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

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


自愈能力等级标准划分为 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 时代,你准备好了吗?),单机房故障自愈框架无缝支持不同业务线,使得研发者可以更关注策略本身,而无需关注不同业务线运维模型、底层平台适配成本。

总结

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



若您有任何疑问或想进一步了解百度单机房故障自愈相关问题,欢迎给我们评论、留言!


作者介绍:


运小辰,百度高级研发工程师,负责百度运维智能故障自愈方案相关设计研发工作,致力于降低单机房故障自愈风险、提高故障自愈效率,为业务可用性保驾护航。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/2UdpQxSkj4iqsD1IzvyrSA


2019-09-10 09:551884

评论

发布
暂无评论
发现更多内容

京东商品详情API接口全攻略

tbapi

京东商品详情数据接口 京东API接口 京东商品详情接口

专为中小企业量身定制!华为云Flexus云会议重塑会议体验

轶天下事

供应链大屏设计实践

京东科技开发者

「Trading星周二」 Space精华回顾 | 牛市启动倒计时?五大关键议题激辩与未来展望

TechubNews

加密市场 经济趋势 交易分析

华为云Flexus云会议多种规格任意选,最低仅需139元_年!

轶天下事

使用Langflow和AstraDB构建AI助手:从架构设计到与NocoBase的集成

NocoBase

开源 AI 低代码 #LangChain AI 助手

使用门槛大幅降低!华为云Flexus云会议引领中小企业会议变革

轶天下事

Java 转 Go 秘诀大放送!

CodeBuddy

数字化人类:人工智能能否复刻大脑的每个细节?

天津汇柏科技有限公司

人工智能 AI

降本增效新路径!华为云Flexus云会议打破距离限制、革新会议体验

轶天下事

【莓创Chart】基于鸿蒙原生ArkTS语法开发的图表组件--柱状图

莓创技术

华为云Flexus云会议无需部署、注册即用,带来随时随地的会议体验!

轶天下事

打破地域限制!华为云Flexus云会议助力中小企业远程协作

轶天下事

中小企业必备!华为云Flexus云会议重塑会议协作体验

轶天下事

Vue3组合式API终极指南:从原理到实战,彻底掌握高效开发!

不在线第一只蜗牛

vue.js 前端

浏览器崩溃的第一性原理:内存管理的艺术

京东科技开发者

【McCharts】基于鸿蒙ArkTS语法开发的图表组件--折线图

莓创技术

Cartesia 升级 TTS 模型,可在音频中无缝填充内容;索尼 AI 游戏角色原型:结合语音与动画,与玩家实时对话丨日报

声网

Solr 可观测性最佳实践

观测云

solr

跟大家一起来总结我半年内参加三次鸿蒙比赛,失利了两次的经验,这体验真刺激!!!

莓创技术

5 分钟搞定 Golang 错误处理

俞凡

golang

人工智能丨领域建模与知识图谱测试用例生成

测试人

人工智能 软件测试

距离无限制,办公更灵活!华为云Flexus云会议无需部署,注册即用

轶天下事

分享之前使用HarmonyOS NEXT Canvas做的动态GIF视频的一个案例,没有感情,全是技术。

莓创技术

开源啦!!!基于鸿蒙ArkTS封装的图表组件《McCharts》,大家快来一起共创

莓创技术

注册即用,一天不到1元!华为云Flexus云会议助力企业降本增效

轶天下事

NocoBase vs OutSystems:低代码平台,开源还是闭源?

NocoBase

开源 开发者 低代码 开发工具 无代码

单机房故障自愈--运维的春天_软件工程_运小辰_InfoQ精选文章