應用高可用服務AHAS及故障演練AHAS Chaos
應用高可用服務(Application High Availability Service)是阿裡雲一款專注于提高應用及業務高可用的工具平台,目前主要提供應用架構探測感覺、故障注入式高可用能力評測和流控降級高可用防護三大核心能力,通過各自的工具子產品可以快速低成本地在營銷活動場景、業務核心場景全面提升業務穩定性和韌性。

圖1:AHAS服務體系
故障演練AHAS Chaos是一款遵循混沌工程實驗原理并融合了阿裡巴巴内部實踐的産品,提供豐富的故障場景實作,能夠幫助分布式系統提升容錯性和可恢複性。故障演練建立了一套标準的演練流程,包含準備階段、執行階段、檢查階段和恢複階段。通過四階段的流程,覆寫使用者從計劃到還原的完整演練過程,并通過可視化的方式清晰地呈現給使用者。
圖2:故障演練流程
AHAS Chaos的适用場景
衡量微服務的容錯能力
通過模拟調用延遲、服務不可用、機器資源滿載等,檢視發生故障的節點或執行個體是否被自動隔離、下線,流量排程是否正确,預案是否有效,同時觀察系統整體的QPS或RT是否受影響。在此基礎上可以緩慢增加故障節點範圍,驗證上遊服務限流降級、熔斷等是否有效。最終故障節點增加到請求服務逾時,估算系統容錯紅線,衡量系統容錯能力。
驗證容器編排配置是否合理
通過模拟殺服務Pod、殺節點、增大Pod資源負載,觀察系統服務可用性,驗證副本配置、資源限制配置以及Pod下部署的容器是否合理。
測試PaaS層是否健壯
通過模拟上層資源負載,驗證排程系統的有效性;模拟依賴的分布式存儲不可用,驗證系統的容錯能力;模拟排程節點不可用,測試排程任務是否自動遷移到可用節點;模拟主備節點故障,測試主備切換是否正常。
驗證監控告警的時效性
通過對系統注入故障,驗證監控名額是否準确,監控次元是否完善,告警門檻值是否合理,告警是否快速,告警接收人是否正确,通知管道是否可用等,提升監控告警的準确性和時效性。
定位與解決問題的應急能力
通過故障突襲,随機對系統注入故障,考察相關人員對問題的應急能力,以及問題上報、處理流程是否合理,達到以戰養戰,鍛煉人定位與解決問題的能力。
AHAS Chaos的功能優勢
靈活的流程編排
AHAS Chaos将故障演練的環節分為了準備、注入、檢查以及恢複四個階段,每個階段除了系統初始化完成的必要節點之外,使用者也可以根據需要添加自己的流程節點。
AHAS Chaos支援一次演練定義包含多個故障場景,同時使用者可以定制這些場景的運作方式,選擇依次進行故障注入或同時注入多個場景,通過不同的政策配置來達到不同的故障注入效果。
豐富的故障場景
豐富的故障場景也是AHAS Chaos的一大特色,包括以下場景:
- 常見的基礎設施資源例如CPU、記憶體、磁盤等。
- 應用級别的故障注入,目前支援Java應用,後續将陸續推出對于NodeJs和C++的應用故障注入。
- 雲原生領域的演練場景。
無論使用者是需要設定叢集級别的大規模故障還是應用級别的請求級别細粒度故障,都可以在AHAS Chaos找到适合的場景,下圖是AHAS Chaos提供的部分故障場景。
圖3:AHAS Chaos提供的部分故障場景
多樣的專家經驗
AHAS Chaos将阿裡内部多年的故障演練經驗濃縮成了專家經驗,專家經驗具有以下優點:
- 專家經驗都來自于阿裡内部經常演練的場景,保證了演練場景的真實性以及實用性。
- 專家經驗不但包括了可執行的演練流程,還描述了專家經驗試圖解決的問題以及針對的系統架構弱點。
- 專家經驗極大地提升了演練建立的效率,使用者可以基于專家經驗配置好的流程一鍵生成自己的演練。
安全的演練防護
在保護使用者的演練安全性上AHAS Chaos也做了非常多的防護措施:
- 在演練的任意一個環節,使用者都可以随時終止演練,每一個終止操作都會自動恢複注入的場景。
- 使用者可以一鍵終止所有正在運作當中的演練。
- 使用者可以配置演練的自動恢複時間,防止因演練時間過長而忘記恢複演練引發不必要的問題。
- 使用者可以通過全局恢複功能來配置自動恢複的政策,當某個名額符合某個要求時自動恢複演練。
深度內建的阿裡雲産品
AHAS Chaos和阿裡雲的許多産品如ARMS、SLS、EDAS、OTS以及架構感覺服務等做了深度內建,通過授權使用者可以實作以下功能:
- 對依賴的阿裡雲元件進行故障注入。
- 基于接入的阿裡雲監控系統資料如ARMS來豐富演練檢查和恢複的手段。
- 通過RAM服務來授權不同賬号的演練權限,提升演練的安全性。
演練實踐
網絡不穩定對業務系統的影響
經驗描述:通過注入多種網絡故障,來檢測網絡不穩定對系統造成的影響,以及系統的應對情況。
背景:網絡環境不好,可能會對業務造成比較大的影響,特别是系統依賴較多的外部服務,比如緩存Redis、消息中間件等,是以需要通過網絡層面的故障注入來考察系統的逾時處理能力。
架構弱點:1.對第三方系統的調用逾時設定不合理;2.缺乏對依賴逾時時候的重試能力;3.缺乏對依賴逾時問題的兜底政策,比如異常處理、功能降級等措施。
評測:1.系統設定了合理的逾時時間,不會因為依賴系統的網絡不穩定導緻請求逾時;2.針對第三方調用逾時或者失敗的情況,系統配置了監控,并且具備一定的重試能力。
java應用發生oom異常
經驗描述:1.通過填滿jvm的記憶體空間,來觸發fullgc和oom異常,使得應用的響應時間變長,甚至無響應,來觀察業務的處理效率以及監控的發現情況;2.oom存在一定風險無法自動恢複,需要重新開機應用。
背景:新生代是jvm内部一塊重要的記憶體區域,由于建立對象過多等因素導緻該區域記憶體被占用到一定額度,會觸發MiniGc操作進行回收,但是如果建立的對象一直被引用,那麼會導緻MiniGc無法回收,進而上升到老年代,如果老年代也被占用滿,那麼就會觸發fullgc,頻繁的gc操作會導緻應用的cpu以及請求響應都變得很高,對業務應用造成比較大的影響。
架構弱點:1.監控缺失,當應用發生fullgc之後,無法及時定位問題,特别是現在很多的jvm監控系統都采用了metric的規範,通過應用提供的http接口來擷取監控資料,一旦應用無響應,那麼會導緻監控資料無法及時擷取,進而不能觸發報警;2.不能及時下線問題機器,由于頻繁的gc,應用已經無法響應業務請求,是以需要及時下線掉問題機器。
評測:1.當應用發生了fullgc,問題機器迅速被隔離掉,不再接受業務請求。2.當應用發生了fullgc,監控系統可以迅速報警并且定位問題。
總結
AHAS Chaos作為
AHAS的一部分,在其中承擔了問題發現、問題驗證、高可用經驗沉澱的作用,并與AHAS其他功能組成了一套完善的高可用保障服務,可以幫助使用者實作包括架構、業務、人員的全面高可用提升。更多有關AHAS Chaos以及
其他功能如
架構探測感覺、流控降級高可用防護的内容可點選連結或掃描下方二維碼進行詳細了解。
作者:樓海斌
阿裡雲智能SRE混沌工程團隊技術專家
混沌團隊技術專家,從理論到平台建設、落地實施都有豐富的經驗,目前主要負責阿裡巴巴集團混沌工程的基礎設施建設以及雲上混沌工程産品AHAS-Chaos的開發,緻力于通過混沌工程來提升使用者系統的高可用性,保障業務的穩定性。
我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。