作者简介
郭晓敏 百度高级研发工程师
负责百度智能运维产品(Noah)故障自愈平台的设计和研发工作,在智能监控、智能故障自愈方向有广泛实践。
干货概览
时隔一年,单机房故障自愈又和各位新老朋友见面了,在《单机房故障自愈—黎明之战》中,我们介绍了单机房故障自愈的基础设施建设,包括容灾能力、智能监控平台以及流量调度平台。对于容灾能力的容量建设,需保证服务常态容量满足N+1冗余,即在任何一个机房故障情况下,该机房流量能够被其他机房剩余容量所承载。那么当业务流量增长,但资源成本有限,容量无法满足N+1冗余时,如何尽可能止损呢?这就是今天要和大家聊的话题,借助服务降级平衡可用性、资源成本和业务效果,实现最大化收益。
重温单机房故障自愈
在大型互联网公司,单机房故障因为其故障时间长,影响范围大,一直是互联网公司及运维人员心头之痛。构成单机房故障的原因,除了常见的物理机房、运营商、链路等基础设施层面故障,也包括突增的用户请求、业务服务的容量不足、程序Bug、异常的运维变更操作等,都会触发单机房级业务故障的发生。在传统的运维方式中,由于故障感知判断与容量&流量调度决策的复杂性,通常是人为进行有效止损,但人工介入的时效性会影响服务的恢复速度,而人工决策的不可靠性则可能导致问题的扩大。
为解决这类问题,针对百度内外部网络环境建设了基于智能流量调度的单机房故障自愈能力。结合外网运营商链路监测、内网链路质量监测与业务指标监控构建了全方位故障发现能力,基于百度统一前端(BFE)与内网资源定位服务(BNS)实现了智能流量调度与自动止损能力。同时,基于实时容量预测与实时水位流量来调度自动止损策略与管控风险,从而实现任意单机房故障时业务均可快速自愈的效果。
单机房故障自愈流量调度过程
发生单机房故障时,根据请求流量、服务容量执行流量调度。当服务满足N+1冗余时,任何故障机房的流量可全部调度到健康机房,调度完成后没有流量损失。
图1 满足N+1冗余的流量调度
但由于业务使用量的增长,或活动等带来的业务流量突增,机房容量的建设速度并不能完全满足流量的上涨速度。发生单机房故障后,当服务不满足N+1冗余时,为了避免过载诱发次生灾害,故障机房的流量不能全部调度到健康机房