本文做者:AIOps智能運維算法
乾貨概覽安全
在單機房故障自愈--黎明之戰中,咱們介紹了單機房故障自愈的準備工做和基礎設施,包括容災能力建設、監控平臺以及流量調度平臺。本篇主要介紹單機房故障自愈的具體解決方案,內容包括:網絡
單機房故障止損的能力標準架構
單機房故障自愈的總體架構框架
單機房故障自愈的常見問題和解決方案運維
單機房故障止損的能力標準spa
在單機房容災能力、故障發現能力、流量調度能力基礎上,業務線具有了經過流量調度進行單機房故障止損的條件。理想狀況下,咱們但願構建一套完整、自動、智能的自愈方案,但各個業務線的服務特色不一樣和基礎能力良莠不齊,很難一蹴而就,因此咱們創建起一套自愈能力的等級標準,業務線根據自身狀況制定相應建設計劃,逐步提高自愈能力。插件
自愈能力等級標準劃分爲5級,從Level 0的徹底人工止損,到Level 4的自動化、智能化止損。對於Level0、Level1,人工感知止損面臨着速度慢、誤操做、場景覆蓋不全、風險控制能力不足等問題;、Level2則實現了止損操做的平臺化、預案化,必定程度上提高了止損效率;Level3則實現了自動化報警聯動故障止損,實現了止損效率的進一步提高。2016年,百度大部分核心產品線已經實現了Level 二、Level 3的自動止損能力,但在場景覆蓋與風險控制上仍存在不足。由此,Level 4智能自愈方案應運而生。設計
單機房故障自愈的架構code
針對傳統故障自愈方案中存在的問題,咱們構建了單機房故障自愈總體解決方案。
自愈方案經過抽象、規範處理流程實現單機房故障自愈的自動化,即將止損過程劃分爲統一的感知、決策、執行三個階段;同時經過運維知識庫解決基礎數據、基礎設施差別化問題;經過策略框架支持智能化異常檢測、策略編排、流量調度問題,同時支持用戶自定義策略需求。實現單機房故障自愈的標準化、智能化。
在單機房故障自愈--黎明之戰提到的百度網絡與業務架構狀況,咱們將總體流量調度止損架構拆分爲3層:接入層、服務層、依賴層。
針對這3層的監控感知、止損決策與故障止損方式的不一樣,將止損自動決策拆分爲外網止損自動決策與內網止損自動決策。
外網止損自動決策:覆蓋接入層。基於外網、內網監控信號;觸發外網止損決策器進行止損決策;執行DNS流量調度止損。
內網止損自動決策:覆蓋服務層、依賴層。基於內網監控、基礎監控、業務監控提供的故障信號;觸發內網止損決策器進行止損決策;執行流量調度、主備切換、彈性降級等止損操做。
單機房故障自愈的常見問題和解決方案
傳統的流量調度自動止損方案存在以下問題:
1容量風險控制能力不足
【問題描述】
傳統流量調度的模式有兩種:固定比例模式與容量保護模式。
固定比例模式:按照預先設定的固定預案,一個機房故障,該機房的流量按照預先設定的比例分配到其餘的機房。極可能某個機房的容量或剩餘機房的總容量不足,切流量後致使多個機房發生故障。
容量保護模式:針對固定比例模式存在的容量風險問題,改進的流量調度方式爲執行前判斷容量是否充足,容量充足則進行流量調度,不然不進行調度並通知人工介入處理。但此種方案面對的問題是:
1.容量仍有buffer能夠進行部分止損。指望可以在不超過容量保護的狀況下進行儘量的調度,減小對用戶的影響。
2.即便按照容量進行調度,服務過載仍可能發生,容量數據自己存在必定偏差,流量成分的變化以及變動等致使的容量退化,均可能致使原先容量沒法徹底可信。
【解決方案】
基於容量水位的動態均衡
在流量調度時,對於容量不許確存在的風險,咱們劃分兩條容量警惕線。
安全水位線:流量處於在安全線如下則風險較小,能夠一步進行切換。
水位上限:該水位線代表服務的最大承載能力,一旦流量超過故障水位線,很大機率會致使容量過載。
若是安全水位線提供的容量不足以知足止損,那咱們指望使用上兩條中間的容量buffer,同時流量調度過程當中進行分步試探,避免一次性調度壓垮服務。
基於快速熔斷的過載保護
在流量調度時,創建快速的熔斷機制做爲防止服務過載的最後屏障。一旦出現過載風險,則快速中止流量調度,下降次生故障發生的機率。
基於降級功能的過載保護
在流量調度前,若是已經出現對應機房的容量過載狀況,則動態聯動對應機房的降級功能,實現故障的恢復。
2業務線止損策略需求差別大
【問題描述】
咱們實現了基礎的單機房故障流量調度止損算法,但在部分業務線中仍存在較大的需求差別,好比:
分步動態調度需求:業務存在充Cache的狀況,過程當中服務能力下降,須要控制切換速度。
優先級調度需求:產品對延遲敏感,止損時須要優先切到同地域機房;業務服務於多個上游,多個上游的重要程度不一樣,優先保證重要上游服務穩定。
容量負載計算需求:請求成分不一樣,不一樣成分請求帶來的容量負載不一樣。
這部分需求一部分與業務強相關,不具有通用性,另外一部分則存在不一樣產品線需求衝突的狀況。
【解決方案】
針對以上問題,咱們推出了故障止損流量調度策略開放框架。支持用戶根據業務需求自定義策略實現。同時將較爲通用的策略開放爲插件,使業務線能夠根據需求自由插拔策略。
基於以上兩點,結合智能運維開發框架(詳見AIOps時代,你準備好了嗎?),單機房故障自愈框架無縫支持不一樣業務線,使得研發者能夠更關注策略自己,而無需關注不一樣業務線運維模型、底層平臺適配成本。
總結
經過單機房故障自愈系列文章,咱們詳細介紹了單機房故障止損的必要性、準備工做,並構建了基於容量動態分步流量調度的單機房故障自愈框架,實現自動化智能化故障止損。對總體單機房故障自愈解決方案不一樣階段的改進總結以下: