写点什么

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

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

评论

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

Python|揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱

AXYZdong

Python 7月月更

数据库每日一题---第21天:员工花费的总时间

知心宝贝

数据库 云计算 后端 开发 7月月更

Android Wear开发步骤

芝麻粒儿

android 手机 7月月更

Spring 核心概念

说故事的五公子

Java spring

ORACLE进阶(十一)MERGE INTO学习总结

No Silver Bullet

oracle MERGE INTO 7月月更

电商系统微服务架构

泋清

#架构实战营

新星计划Day3【JavaSE】 集合 Part1

京与旧铺

7月月更

人最痛苦的时候就是没有目标的时候

KEY.L

7月月更

【愚公系列】2022年7月 Go教学课程 008-数据类型之整型

愚公搬代码

7月月更

14岁懂社会 - 《你没有那么笨》读书笔记

懒时小窝

读书笔记 14岁懂社会

Jenkins centOS搭建和task创建

沃德

ci 程序员 7月月更

C 语言入门(二)

逝缘~

c 7月月更

Node.js的非阻塞I/O

是乃德也是Ned

Node 7月月更

LeetCode-125. 验证回文串(java)

bug菌

Leet Code 7月月更

TCP拥塞控制详解 | 5. 回避算法

俞凡

算法 网络 TCP拥塞控制

iOS中的继承

NewBoy

前端 移动端 iOS 知识体系 7月月更

Python 入门指南之错误和异常

海拥(haiyong.site)

7月月更

双目立体匹配之匹配代价计算

秃头小苏

7月月更 双目立体匹配

关于 HTTP post 请求 form data 里的特殊符号,比如加号 plus symbol

汪子熙

HTTP web开发 7月月更 encoding form

前端异常监控平台对比

南城FE

前端 7月月更 异常监控

QT 实现生成压缩包

小肉球

qt 7月月更

C++|登录后通知各个显示页面,观察者模式

中国好公民st

c++ 7月月更

Hive说我变了,Spark说不你没变

怀瑾握瑜的嘉与嘉

spark 7月月更

架构实战营模块六作业

Geek_Q

Spring Cloud源码分析之Eureka篇第七章:续约

程序员欣宸

Java Spring Cloud Eureka 7月月更

内部排序——归并排序

乔乔

7月月更

java零基础入门-Number & Math 类

喵手

Java 7月月更

基于物联网设计的铂电阻气体测温仪(华为云IOT)

DS小龙哥

7月月更

Python反爬,JS反爬串讲,从MAOX眼X开始,本文优先解决反爬参数 signKey

梦想橡皮擦

Python 爬虫 7月月更

ORACLE进阶(十二)union(all)学习总结

No Silver Bullet

oracle 7月月更 union union all

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