写点什么

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

  • 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:551754

评论

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

字节、阿里等大厂的技术如何?看看这些Java程序员的自学笔记

进击的王小二

程序员 面试

构建制品不一致,后续工作都是白费 | 研发效能提升36计

阿里云云效

阿里云 云原生 持续交付 云平台 研发

网络安全kali渗透学习 web渗透入门 Google搜索引擎的使用技巧

学神来啦

恒源云(GPUSHARE)_可构建AI的「AI」诞生?

恒源云

神经网络 深度学习

使用craco对cra项目进行构建优化

CRMEB

无障碍读屏出错了

admin

小程序 性能优化 瀑布流 relations 无障碍

Web Components系列(三) —— 创建 Custom Elements

编程三昧

前端 组件化 2月月更 WebContents

Spring Boot Serverless 实战系列 | 性能调优

Serverless Devs

springboot Java web 2月月更

有了堡垒机,运维工程师们不再是背锅侠啦!

行云管家

效能时代,数栈专属DevOps跑出加速度

袋鼠云数栈

DevOps 智能运维

ClickHouse 在UBA系统中的字典编码优化实践

字节跳动数据平台

大数据 字节跳动 Clickhouse 用户行为分析

11亿条数据压缩到12GB,TDengine在陕煤矿山项目的落地实践

TDengine

数据库 大数据 tdengine 开源 物联网

微信朋友圈高性能复杂度分析

王大胖

Hive往表写入数据的八种方法

编程江湖

C#中的数据字典Dictionary

Andy阿辉

C# 程序员 程序人生 2月日更

15倍提升 & 40倍存储优化,TDengine在领益智造的实践

TDengine

数据库 大数据 tdengine 开源 物联网

做到这4点,才是真正的持续交付| 研发效能提升36计

阿里云云效

阿里云 云原生 持续交付 云平台 研发

如何提升本地开发联调效率|阿里巴巴DevOps实践指南

阿里云云效

阿里云 DevOps 云原生 研发 本地开发

我的云原生学习方法 | 社区征文

大菠萝

新春征文

SAP 移动开发技术综述 | 社区征文

汪子熙

android 移动开发 cordova 新春征文 2月月更

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

阿里云云效

阿里云 云原生 云平台 研发工具 云端开发

APICloud AVM框架列表组件list-view的使用、flex布局教程

YonBuilder低代码开发平台

前端开发 前端框架 APP开发 APICloud 跨端开发

DDD[1]·区分系统与业务行为

陆乘风

领域驱动设计 领域驱动设计DDD 领域驱动

恒业资本江一:ToB长期主义不是经营无能的遮羞布

ToB行业头条

跨站脚本攻击xss利用-beef攻击-演示

喀拉峻

网络安全 XSS

TiDB 在国信证券海量数据高并发场景中的实践

陈培新

TiDB

Swagger通过拦截器(Interceptor)配置默认请求头

为自己带盐

swagger 2月月更

阿里巴巴移动技术 2021 年终盘点

阿里巴巴终端技术

ios android 客户端 移动应用开发 年终盘点

react源码解析2.react的设计理念

buchila11

React React Hooks

国内堡垒机品牌你给推荐哪款?我推荐行云管家!

行云管家

高性能系统开发的几个手段

漫游指南

性能优化

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