探索華為雲CCE敏捷版金融級高可用方案實踐案例

华为云开发者联盟發表於2024-03-28

本文分享自華為雲社群《華為雲CCE敏捷版金融級高可用方案實踐》,作者: 雲容器大未來。

一、背景

1.1. CCE 敏捷版介紹

雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和執行可彈性擴充套件的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和宣告式 API。這些技術能夠構建容錯性好、易於管理和便於觀察的松耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。

從實踐角度講,CCE 敏捷版是在大規模高可靠的雲服務和大量高效能金融級應用的驅動下產生的新一代軟體開發、整合、管理和運維的雲原生管理平臺。CCE 敏捷版,為企業提供數字化新基建的雲原生技術平臺,幫助企業實現業務敏捷上線、業務戰略快速落地。作為容器混合雲線上下的延伸,CCE 敏捷版提供了高效能可擴充套件的容器服務,快速構建高可靠的容器叢集,相容 Kubernetes 及 Docker 容器生態。幫助使用者輕鬆建立和管理多樣化的容器工作負載,並提供容器故障自愈,監控日誌採集,自動彈性擴容等高效運維能力。

1.2. 為什麼要兩地三中心

隨著網際網路技術的發展,雲平臺建設已經成為企業資訊化建設的重要組成部分。在實際的雲平臺建設過程中,為了保證系統的高可用性和可靠性,需要考慮到多個層次上的冗餘。一般透過多副本可以實現應用層面的冗餘,在地域級別的故障場景下,兩地三中心的高可用架構是一種常見的設計方案。

透過將系統部署在兩個地理位置,三個不同的資料中心,從而實現對系統的高可用性和容錯性的保障。在實際的應用場景中,兩地三中心的高可用架構主要適用於對系統可用性要求非常高的場景,例如金融、電信、醫療等行業。利用兩地三中心,可以有效地避免單點故障的風險,並在系統出現故障時快速切換到備中心,從而保證系統的持續穩定執行。

1.3. 適用場景

兩地三資料中心整體統一規劃,採用華為 CCE 敏捷版的產品構建微服務應用的兩地多中心的容災方案,從單中心開始分步驟實施建設。

二、方案說明

2.1. 整體容災方案

本方案描述兩地三中心的方案支援客戶的業務高可用;

1.png

方案說明:

  • 建立兩地三中心的容災架構,提供多叢集部署能力,以上圖為例,將 Region1 作為主區域提供同城雙活,Region2 作為災備站點。每個中心各自一套獨立叢集,對於核心業務可提供單中心雙叢集進一步提升高可用性,避免因為單叢集故障導致業務受損。業務根據實際情況分配。

  • 減小叢集規模,控制故障半徑:將大叢集拆解到多個小叢集中,單叢集規模建議不超過 200 節點。災備環境因為常態無真實業務,出於成本考慮可適當減小規模,但需要在災備流量切換前完成資料檢查和規模擴容。若無法保證規模擴容,建議按照生產環境高峰流量進行環境準備。

  • 每個資料中心的流量透過跨雲負載均衡走到雲平臺 SLB,再進一步將流量匯入到叢集中的業務閘道器。業務閘道器根據應用的註冊情況將流量分配到後端應用上。正常情況下 DNS 將流量全部導向主區域站點,在災備時將切換到容災中心。

  • 叢集中的閘道器將流量導向後端時,可根據應用的分佈和註冊情況,進行流量分配,可分階段實現叢集內流量分發,以及跨叢集的流量分發(需微服務框架改造)。透過業務層面的健康檢查,流量探測,可實現應用路由的全域性管理分發,避免單一叢集、單一 AZ、單一資料中心故障,引發大量流量異常。

  • 應用狀態資訊儲存到 DB 中,應用本身無狀態化,便於彈性、遷移等容災行為處理。根據業務框架資料庫可以採用同城雙中心的統一單邊讀寫機制,多中心的應用使用同一份資料庫,保證一致性。同時資料庫提供跨中心的實時同步到備節點,當同城雙中心間發生容災切換時,備升主,應用也切換到新的主資料庫上。核心業務資料支援異地複製,確保主站點區域級別故障時提供異地的容災拉起手段。

  • 後續可針對應用業務進行單元化改造,降低單應用的故障風險面。應用單元可透過雙叢集等多主架構實現容災高可用,並配套資料庫的同步與容災能力實現單元粒度的容災切換能力。

2.2. 高可用關鍵技術

從容災分層的角度,可以從接入層、應用層、資料層和基礎設施層,分別進行高可用的設計分析。

2.png

接入層流量高可用

核心要點:兩層容災,覆蓋區域級別、單中心級別故障的流量切換。

關鍵技術一:利用 DNS 實現路由高可用解析策略管理

1、透過 DNS A 記錄權重進行輪詢分流

2、支援健康檢查,故障自動切換。某一地區 IP 故障,自動切換到其他可用 IP

關鍵技術二:單區域負載均衡權重管理

1、負載均衡同城跨中心排程流量

2、支援健康檢查,根據後端負載例項情況,動態調整叢集流量權重

如下圖所示,當檢測到故障時,公網流量切換到災備。

3.png

應用層容災高可靠

核心要點,多叢集多副本部署,應用路由閘道器實現單應用、單中心故障的業務無損,主要針對同城雙活。

關鍵技術一:多叢集多副本部署

透過多叢集部署,避免單叢集故障影響。

關鍵技術二:應用路由管理

1、閘道器基於註冊資訊進行流量轉發。

2、Ingress、nodeport 流量基於 k8s 的 service 註冊進行流量轉發。

3、業務僅在單叢集內訪問,減少跨叢集依賴。

4.png

關鍵技術三:跨叢集路由(可逐步演進)

透過註冊中心雙寫等機制,實現應用路由在兩邊叢集均完整具備,當某一叢集的應用全故障時可將流量導向其他的健康叢集業務。在應用間互訪前先讀取路由,基於就近訪問優先等策略進行業務間的呼叫轉發。

1、註冊中心路由註冊時,將自動實現叢集內的短路徑以及跨叢集的長路徑的註冊和區分。

2、叢集內呼叫,時延最低;叢集間呼叫,1)透過閘道器對外提供服務類,跨叢集需透過業務閘道器繞行,時延有所增加,2)對於 ingress、nodeport 等 k8s 對外提供服務類, SLB 需提供健康檢查機制,將流量導到對端健康的叢集上。

5.png

資料庫容災高可靠

核心要點:資料庫多中心部署,跨中心同步。

提供給單元化切片能力。

6.png

關鍵技術一:跨 AZ 高可用支援秒級切換

支援跨 AZ 部署,生產站點部署主庫,同城站點部署備庫,主備庫切換為秒級

關鍵技術二:資料同步

支援半同步和非同步兩種。關注資料安全,建議選擇半同步,關注效能,建議選擇非同步。

關鍵技術三:讀寫分離,支援多個只讀例項

支援多個只讀例項,分擔讀流量;提升查詢業務吞吐能力。

關鍵技術四:提供對外訪問的統一地址,主備切換對應用無感知

跨AZ部署的高可用例項對外採用統一的地址訪問,當站點故障時,訪問地址不發生變化。當主例項所在區域發生突發生自然災害等狀況,主節點(Master)和備節點(Slave)均無法連線時,可將異地災備例項切換為主例項,在應用端修改資料庫連結地址後,即可快速恢復應用的業務訪問。

基礎設施容災高可靠

基礎設施主要包括 IaaS、容器、儲存、網路等基礎資源。

對於容器而言,可以在兩邊的資料中心各自部署一套完整的容器平臺,容器平臺不跨資料中心,可以避免容器管理等業務因為跨中心的專線網路故障導致的管理受損情況。對於 IaaS、儲存等基礎設施,特別是儲存持久化資料,則需要提供跨機房、資料中心的容災能力。

關鍵技術一:資料雙活高可靠

對於在機房 A 執行的應用,所有資料持久化後都會立刻寫入機房 B 的 NAS 儲存。當機房 A 儲存故障時,機房 B 儲存有全量最新資料,且立即可用;業務即可快速由機房 B 接管,效能快速恢復。

7.png

關鍵技術二:IaaS 跨 AZ 高可用

IaaS 建設規劃,需要保證資料中心內的多 AZ 建設,在多 AZ 上提供虛機、網路的高可用能力。同時,IaaS 需要評估是否需要在同城跨資料中心建設,並提供相應的技術要求。

應用單元化改造

核心要點:透過單元化改造,每個單元承擔全業務,從使用者維度進行切分,單元包含應用+資料。

優點:故障不出單元,故障半徑小;提供極致的效能和線性擴充套件。可透過增加單元進行水平擴充套件。

依賴:要求業務模型固定;應用和資料庫耦合度高,需要有合適的業務分片構建全域性路由,跨單元透過 API 訪問,需要應用側聚合;成本高,應用、資料需要一體化規劃設計。

8.png

統一運維

核心要點:分層運維,提供應用的統一運維管理檢視。

關鍵技術一:統一登入 SSO

對於 IaaS、容器、儲存、資料庫等多管理平臺,需要與企業內部 SSO 系統打通,統一登入,統一管理,避免出現不同地域的平臺登入不同的情況。

關鍵技術二:日誌監控統一管理

多叢集的應用日誌、監控、鏈路資訊,統一收集到運維服務平臺,提供監控大盤、全鏈路分析、運營報表等能力。

9.png

三、高可用容災系統建設

基於整體容災方案,在基礎設施建設就緒後,可以在各資料中心,進行 CCE 敏捷版的規劃建設。

3.1. 叢集容災規劃建設

採用多叢集模式,一個資料中心一套獨立的管控面,避免跨資料中心的依賴。在每個資料中心,存在一個管控叢集,和基於業務情況規劃的業務叢集。

管控叢集

管控叢集主要功能

承擔一個資料中心內部多個業務叢集管理,主要包含叢集管理、應用管理、運維管理等作用。

管控叢集部署位置

運管區。管控叢集與業務叢集所有節點進行網路打通(22, 5443埠等)

管控叢集執行服務

  • 管控叢集本質是一個K8S叢集,在K8S叢集上執行容器化管控服務

  • 管控服務主要包含:管理控制檯、租戶管理、鑑權服務、API閘道器、監控管理服務、叢集管理服務、平臺資料庫、平臺映象倉庫等

管控叢集部署關注點

  • 滿足K8S叢集本身元件的分散式高可用需求,3RU部署

  • 滿足管控服務的分散式高可用需求,3RU部署

管控叢集節點規劃

管理節點

  • 虛擬機器/物理機*3;分佈在3RU中

  • 部署服務:K8S管理元件(apiserver,controller,scheduler,etcd);平臺資料庫

計算節點(無狀態服務)

  • 虛擬機器/物理機*2;分佈在2RU中

  • 部署服務:管理控制檯、租戶管理、API閘道器

  • 服務特點:無狀態,支援彈性擴縮容

管控叢集支援規模

支援1000+個節點規模的管理,大規模時建議獨立出業務叢集管理。節點數增加後,需要同步對有狀態服務節點進行擴容(增加物理機個數),需要做資料遷移。

業務叢集

業務叢集主要功能

作為容器化應用的執行環境

業務叢集部署位置

  • 按照網路分割槽進行規劃

  • 每個分割槽叢集根據業務屬性劃分,例如管理類應用叢集和對客類應用叢集

業務叢集執行服務

  • 無狀態服務:資料無持久化要求,多副本機制。例如Java應用、TongWeb、Nginx等

業務叢集部署關注點

  • 滿足K8S叢集本身元件的分散式高可用需求,3RU部署

  • 上層應用根據K8S叢集部署2RU特性進行高可用保障

業務叢集節點規劃

管理節點

  • 3臺節點;分佈在3RU中;部署K8S管理元件(apiserver,controller,scheduler,etcd)

計算節點

  • 2*N臺節點;分佈在2RU中;部署應用服務

業務叢集形態

虛擬機器叢集:適用於通用應用場景,目前執行在虛擬機器上的應用均可以使用虛擬機器叢集

物理機叢集:適用於高效能要求或者專用叢集要求場景,例如ES、資料庫等

業務叢集規模規劃

支援1000+個節點規模的管理,從控制爆炸半徑的角度看,建議在規模控制在200節點以內。

3.2. 高可用建設演進策略

技術中臺建設的高可用的基礎設施建設可以分三個階段進行分批建設和演進:第一階段進行同城雙活階段的高可用,第二階段演進成三地雙活異地災備高可用體系。

在高可用架構的演進過程中,在層次上需要從下往上逐步演進,即首先完成基礎設施,即第二資料中心的機房、IaaS 基礎建設;然後完成資料庫、中介軟體的雙中心高可用演進;再建設新叢集,將業務釋出到新的資料中心叢集上;在應用釋出到閘道器層並驗證透過後,即達到雙中心多活的效果。在雙中心向異地容災演進時,也是類似的流程。

9.jpg

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章