藉助邊緣節點服務部署應用,可以讓終端使用者訪問服務時延遲大幅降低,提升體驗。但提升體驗的同時,關注應用的連續性也是非常重要的。本文將介紹一些關鍵能力,協助您構建高可用的邊緣計算應用。
責任共擔
實現雲上的業務連續不中斷是阿里雲和阿里雲客戶的共同責任。
阿里雲負責邊緣節點服務 ENS 本身的穩定性,確保其可用性不低於服務等級協議中的承諾值。
阿里雲的客戶需要負責業務系統的架構設計合理性,確保能在必要時實現容錯移轉,保障業務連續不中斷。
建議您根據本文介紹的相關方案,來建設您的邊緣計算應用的商務持續性能力。
最佳實務
多執行個體容災
為了確保高可用,應用必須能處理高負載、避免單節點故障造成業務中斷。這些可以通過邊緣負載平衡 ELB來實現。為此,您可以先在多個 ENS 執行個體上部署應用,然後結合ELB來實現流量負載平衡。這樣即使某個 ENS 執行個體出現故障,ELB 仍然可以將流量分配到其他 ENS 執行個體上,保障業務持續可用。
跨地區主備容災
應用的主備切換
為了避免地區層級的故障造成業務中斷,在某個邊緣節點上部署應用之外,還應該在其他邊緣節點或公用雲地區部署備份應用。
您可以藉助全域流量管理服務,在出現地區層級故障時,自動將網域名稱解析指向到其他地區的應用上,實現故障時的流量切換,保障業務持續可用。
在設計備服務時,您可以考慮將應用部署到其他邊緣節點服務地區上,甚至也可以部署到其他就近的公用雲地區上。不過需要注意的是,啟用備服務時,終端使用者訪問服務的延遲可能會增大。
資料的備份和恢複
故障時流量轉移可以很好地避免地區層級故障造成業務中斷,但此時故障地區的資料服務也可能同樣不可用。
為了讓業務在備地區的應用啟用期間也能正常運轉,您需要根據自身的業務設計合適的方案,在非故障期間將資料從主地區同步到備地區中。
比如,您可以:
在應用程式中雙寫,向當前地區的儲存服務上寫入資料,同時也向備地區寫入資料。這麼做的好處是備地區的資料和主地區幾乎是一致的,但代價是寫入的延遲會增大。
向主地區的儲存服務中寫入資料後,非同步地將主服務資料同步到備地區的儲存服務中。這麼做的好處是寫入延遲不會增大,但啟用備地區服務時,資料可能和主地區有一些差異。
此外,您還需要設計好應用程式的恢複機制。在主地區故障消除後,應該將備地區服務在故障期間記錄的新增資料同步到主地區,確保主地區恢複時,使用者看到的業務資料不會丟失。
部署架構示意圖
為了儘可能地提升可用性以確保業務連續不中斷,上述實踐是可以組合使用的。下圖是一個同時採用了負載平衡、應用主備切換、資料備份和恢複能力的系統部署架構示意圖。
您可以結合自身業務的需要,來有選擇地參考。
該系統的主服務是部署在瑞士的 ENS 節點,主服務採用了多執行個體加負載平衡的架構,以規避 ENS 執行個體單點故障引起的業務中斷。
備服務部署在就近的德國 ENS 節點(備服務也可以選擇就近的公用雲端地區中),備服務同樣採用了多執行個體加負載平衡的架構。同時,主地區正常期間會將資料同步到備地區,以確保啟用備地區服務時,資料儘可能的和主地區保持一致。
該系統的網域名稱解析引入了全域流量管理服務:
全域流量管理服務會跟進設定的頻率,周期性地對主服務進行健全狀態檢查。
主服務工作正常時,網域名稱解析會指向主服務。
主服務異常時,全域流量管理服務執行的健全狀態檢查失敗指定的次數後,會自動將網域名稱解析指向備服務,從而實現自動的主備切換。
主服務故障期間,流量切換到了備服務,資料會記錄在備服務的儲存服務中。因此在故障恢複後,還需要將備地區的資料同步回主地區。