1. 背景
當前微服務架構下,各個服務間依賴高,呼叫關系復雜,業務場景很少可以通過一個系統來實作,常見的業務場景實作基本涉及多個上下游系統,要保證整體鏈路的穩定性,需要盡量減少系統之間的耦合性,避免因為單點失效引起整個鏈路的故障,
2. 目標
通過混沌演練驗證鏈路中部分系統發生故障時候的整體鏈路的表現,對鏈路保持正常運作的能力進行校驗和評估,提前識別未知隱患并進行修復,進而保障整個鏈路更好地抵御生產環境中的失控條件,提升整體場景功能的穩定性,
3. 演練鏈路
對真實的業務場景進行混沌演練,就需要對業務場景的相關服務和呼叫關系進行鏈路梳理,一般需要根據實際業務場景,畫出系統互動圖,通過鏈路串聯、資料追蹤、和上下游確認等方式整理鏈路圖,
4. 演練計劃
混沌演練之前,一定要好可行性評估,評估可以演練的服務部署環境、演練工具的成熟度、演練場景的爆炸半徑等,然后決策演練場景,進行實踐操作,
5. 內容加載演練實踐
5.1 鏈路梳理
內容加載鏈路演練,通過內容加載的系統互動梳理出加載鏈路:摹略引擎執行-AB分流-CMS資源獲取-鷹眼內容發送
5.2 介面梳理
根據調鏈路呼叫關系用梳理出具體的介面:
5.3 制定演練計劃
演練時間:2023.03.28 14:00-22:00
演練攻擊人員:孫X英、陳X然; 演練防守人員:張X雷、付X軍、劉X、韓X
針對鏈路介面設計演練場景,一般根據系統特色來設計更容易發生的故障,比如應用偏計算比較消耗CPU的話,故障設計包含CPU滿載,應用對于回應的時效有嚴格的要求的話一般包含方法延遲故障設計,
本次鏈路故障場景設計如下:
具體演練場景設計可參考:混沌實戰演練(一)
5.4 演練執行
目前借助天權自動化運維平臺進行混沌攻防演練,進入工具市場—演練類,選擇不同的故障方案,點擊“立即執行”;
如選擇Java行程滿載場景演練,選擇滿載率100%,滿載核數為演練應用部署服務的CPU核數,演練時長是執行滿載的持續時間,選擇演練的具體應用和指定IP,執行演練計劃,
演練示例,根據演練的場景配置好故障引數,如下圖為精準觸達系統-訊息觸達方法延遲增加30ms引數設定:
演練執行結果檢查,下圖為分流服務-JAVA行程滿載,指定分流行程CPU滿載,故障執行結果:
5.5 演練監控
使用監控工具實時收集服務器在混沌演練運行期間的性能狀態,如系統層面的 CPU、記憶體等使用情況,觀察方法的回應時間、成功率等指標,一方面驗證在混沌場景執行期間系統狀態是否達到預期的效果,同時記錄演練期間發生的問題,記錄現場,另一方面通過監控發現有風險問題進行人工干預,立刻終止演練,
場景一:精準觸達系統-訊息觸達方法延遲增加30ms
演練監控方法執行的成功率和 TP 999:
場景二:分流服務-JAVA行程滿載,指定分流行程CPU滿載
監控平臺實時觀測系統的CPU使用率:
5.6 演練反饋
檢查系統故障發生時候監控手段是否完善,研發人員是否可以根據系統告警,快速的定位并解決問題,檢查團隊的回應、協同效率,
郵件事故告警:
事故恢復告警:
5.7 環境恢復
場景演練可等待演練時長結束后自行中止,也可根據手工取消、終止演練場景,
演練完成后建議需要重啟容器,保證服務恢復正常狀態,
5.8 演練復盤
演練結束之后,我們需要對演練進行復盤,不同的故障下,系統的表現以及整體業務場景所受到的影響,演練程序中所發現的問題,需要在復盤報告中呈現出來,
6.總結
鏈路演練通過提前主動注入故障,發現系統之間的強弱依賴,對鏈路進行檢驗,降低生產環境中故障發生的概率,
“居安思危,思則有備,有備無患,”
作者:京東科技 孫民英
內容來源:京東云開發者社區
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553289.html
標籤:其他
上一篇:HTB ACADEMY-Hacking WordPress WRITE UP
下一篇:返回列表
