開發與維運

阿里高可用架構建設實踐經驗

本文始發於:雲棲社區
時間:2020-06-02
原文鏈接:https://yq.aliyun.com/articles/763336

1 背景

隨著業務在線化互聯網化的高速發展,企業對核心業務系統的穩定性、可靠性、有效性、業務連續性等有了更高的要求。採用高可用系統架構支持重要系統、為關鍵業務提供7x24的不間斷服務,已經成為眾多企業保障業務穩定、持續運轉的主要選擇。但如何從海量實踐中提煉出值得借鑑複製的高可用架構之道,實現適合自身的高可用系統架構,是需要企業深思熟慮的問題。阿里巴巴在多年雙11高併發、高可用和高客戶體驗要求背景下積累了相應的技術體系,本文將依據高併發用戶、突發高流量場景下的真實案例,分享阿里在高可用架構建設過程中的經驗總結,以期待幫助更多企業做好業務高可用建設。

2 存在的問題

2.1 非常複雜的服務端

通常從客戶端到達服務端會涉及到的關鍵節點有CDN、動態加速、高防、應用防火牆、4/7層負載均衡、前後端服務集、緩存、數據庫存儲、中間件、基礎設施層等等,整個鏈路都面臨著不確定性。後端服務的服務規模化問題更是複雜和難以評估檢驗,這其中任何一個節點出現問題都會導致服務不可用。如何能有效地全面檢驗服務端吞吐能力、發現所有問題甚至是做好容量規劃,具備對峰值的流控調度能力是所有企業都需要思考和應對的。

2.2 缺乏提前規劃的服務能力

如果企業沒有對自己的服務能力進行提前規劃,沒有提前做好關鍵節點的規劃,對線上的應急措施如彈性擴容、線上防護、熔斷降級等都不具備,那麼在面對突發問題時,就很難保證核心接口能夠穩定對外服務。一旦出現問題,很多企業無法採取正確的手段,匆匆擴容非但不能解決問題,反而帶來更多不可預期的問題,導致問題進一步的惡化。此外,運維側的隱患問題如故障影響面、配置一致性、監控和根因分析相關工具、複雜人員組織的高可用程度等,如果沒有足夠的演練和驗證方案,同樣會在關鍵時刻出現問題。

3 高可用架構建設

3.1 架構設計

首先要實現架構可視化。服務器、存儲、網絡是現代雲平臺的基礎設施。隨著上雲戰略的推進,越來越多的企業將業務、服務、系統構建在雲平臺上。利用阿里AHAS的架構感知可以全面瞭解雲上系統架構,以可視化的方式直觀呈現雲資源、容器和應用間分層依賴關係。

開源軟件和雲服務的多樣性、開發語言的異構性,以及企業IT團隊的組織和能力差異,都提高了標準化的複雜性。架構感知功能應運而生,通過採集和分析操作系統及第三方標準接口,捕捉進程級的調用關係,並使用特徵庫算法識別進程所使用的技術組件,最後在服務器、容器和進程這三個維度上以可視化的方式展示應用架構,給用戶一張全面清晰的雲上架構地圖。圍繞這張基礎的視圖,會持續衍生出雲資源、容器和應用架構多維度的架構視圖,還有搬站、重構梳理和資產管理等場景化的視圖,真正做到CMDB可視化,驅動問題發現助推業務增長,釋放雲上的更多維度的紅利。

而關於強弱依賴治理,因為強依賴本身意味著一榮俱榮,一損俱損。結合AHAS SDK的引入和預埋,一旦當平臺最大吞吐能力到達瓶頸時,除了入口或者web類應用的業務峰值流量限流可以起到第一層的保護作用外,還可以將預先標記為弱依賴的服務平滑下線,從而達到節省更多資源保障核心計算能力的目的,同時還可以去除非核心對核心服務的影響,最終通過合理高效的服務降級最大程度獲得業務和成本的平衡。而使用了AHAS SDK之後在編碼時,只需要關心如何定義資源,即哪些方法/代碼塊需要保護,而不需要關注如何保護這個資源。然後通過添加規則來保護資源,規則添加即時生效。
image.png

圖1:AHAS架構感知及可視化

3.2 容量規劃

外網仿真壓測:首先可以通過PTS高效快速構建同模型和量級的業務流量,對於開源主流的JMeter腳本可以直接100%兼容,對於沒有現成腳本的情況可以使用PTS自研的可視化交互進行0編碼編排,編排完成後從公網的各地域運營商發起,真實模擬特定業務場景下的外網流量,從而全面驗證和探測雲上或雲下整體架構(從網絡接入到應用服務內再到存儲層和基礎設施)的瓶頸和問題。

全鏈路壓測:更進一步的,如果在生產環境想直接精準衡量業務容量,可以通過PTS相關解決方案使生產環境具備壓測流量識別和路由到指定影子存儲區域的能力,結合相關影子存儲區域的準備,然後做到同樣規模基礎數據上的業務流量壓測同樣的生產環境,最終達到精準衡量線上生產環境的能力。當然,對於壓測流水數據由於已經隔離開,所以可以方便安全地清理和維護。
image.png

圖2:全鏈路壓測核心流程

3.3 業務監控

面對複雜的應用環境和高速增長的業務,ARMS能幫助用戶快速構建各種環境下完整的監控體系,實現從頁面到數據庫、從應用性能到基礎架構資源、從IT到業務的端到端監控。減少故障排查時間,降低跨部門溝通成本,最終降低因為故障和體驗差給企業帶來的損失。
image.png

圖3:ARMS業務監控體系

3.4 線上管控

對於運行態或已有應用可以通過AHAS探針形態(除AHAS SDK外更輕的方案)在不修改代碼的情況下進行業務洪峰的流量強力控制、消息場景的削峰填谷,而對於結構複雜的可以將系統內或外不穩定的因素迅速降級讓業務保持穩定,同時還有單機過載保護(根據RT動態調節入口流量)的兜底能力,甚至很多時候系統來不及壓測或者不知道配置什麼規則的時候單機智能過載保護是個很好的功能和方法。以上都在運行態和運維側即可完成引入和控制。對於線上配置項和業務屬性值通過AHAS開關模塊的輕量級方案進行安全和統一管控,這部分能力即將開放,敬請期待。
image.png

圖4:線上高可用防護佈局

3.5 日常巡檢

風險的提前暴露,通過Advisor智能顧問對雲上主要雲資源進行全面的巡檢和風險識別,規則都來自於阿里雲一線運維同學面向客戶的技術體3系積累及阿里生態內SRE最佳實踐的融合。基於前述的架構地圖和用戶的輸入,可進行更深層次的應用/業務架構層面的巡檢和建議。

3.6 常態化演練

AHAS的故障演練模塊遵循混沌工程實驗原理並融合了阿里巴巴內部實踐的經驗,基於此用戶可以建立流程完整且可視化程度很高的故障演練體系,可方便地對基礎資源、應用服務、容器服務和雲平臺4層進行超多維度的編排和定製,同時產品還提供了豐富的成熟故障經驗庫。從而幫助用戶實現包括架構、業務、人員的全面高可用提升。故障演練在依賴治理、業務連續性提升和故障修復驗證等場景中都有巨大作用。
image.png

圖5:故障演練體系

4 阿里高可用工具

4.1 應用高可用服務AHAS

專注於提高應用高可用能力的雲工具產品,提供應用架構自動探測,故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本地提升應用可用性。
https://www.aliyun.com/product/ahas

4.2 性能測試PTS

面向所有技術背景人員的雲化測試工具。有別於傳統工具的繁複,PTS以互聯網化的交互,提供性能測試、API調試和監測等多種能力。自研和適配開源的功能都可以輕鬆模擬任意體量的用戶訪問業務的場景,任務隨時發起,免去繁瑣的搭建和維護成本。更是緊密結合監控、流控等兄弟產品提供一站式高可用能力,高效檢驗和管理業務性能。
https://www.aliyun.com/product/pts

4.3 智能顧問Advisor

智能顧問Advisor根據用戶情況,結合阿里雲長期以來的客戶側最佳實踐,基於TAM(Technical Account Management)服務體系的核心基礎能力,全方位地為用戶提供雲資源、應用架構、業務性能及安全上的診斷和優化建議。現在,越來越多的阿里云云原生客戶可以通過Advisor便捷地享受專業的TAM基礎服務,更好地用好雲。同時,我們也會圍繞Advisor為有相關需求的客戶提供專項深度的TAM服務。
https://www.aliyun.com/product/advisor

4.4 企業級高可用架構解決方案

脫胎於阿里巴巴電商業務下的高可用技術體系,經過所有的雙11流量洪峰考驗、日常穩定性考驗,已經服務於阿里全生態並開始服務外部的企業客戶,為企業提供包括營銷活動支撐、整體成本控制(全鏈路壓測、容量規劃、流量控制、調度)、應急應對能力(開關和預案)、容災逃逸能力(架構感知、故障演練、異地多活、單元化)等在內的解決方案。
https://www.aliyun.com/solution/ehasl

4.5 混沌測試工具ChaosBlade

ChaosBlade是一款遵循混沌工程實驗原理,建立在阿里巴巴近十年故障測試和演練實踐基礎上,並結合了集團各業務的最佳創意和實踐,提供豐富故障場景實現,幫助分佈式系統提升容錯性和可恢復性的混沌工程工具。
https://github.com/chaosblade-io/chaosblade

4.6 輕量級流量控制框架sentinel

以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度來幫助客戶保護服務的穩定性。
https://github.com/alibaba/Sentinel/wiki

5 總結

以上便是阿里高可用架構建設的實踐經驗分享。一個好的高可用架構可以以最低的成本、更靈活的方式滿足企業的相關需求。而在各種各樣、紛繁複雜的技術中構建最適合企業的高可用技術架構,是需要逐漸摸索和持續積累的。

作者:丁傑

阿里雲智能GTS-SRE團隊解決方案架構師

阿里雲智能GTS-SRE團隊架構師,長年負責阿里生態內支付寶、釘釘、旺旺和阿里音樂的SRE工作,近幾年專注於阿里雲應用高可用技術體系的產品化工作和解決方案體系構建事宜。

我們是阿里雲智能全球技術服務-SRE團隊,我們致力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基於雲構建更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運行更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里雲SRE技術學院釘釘圈子,和更多雲上人交流關於雲平臺的那些事。
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *