網際網路應用程式的使用量可能會有極端的波動。雖然大多數企業應用程式不會面臨這項挑戰,許多企業仍必須處理不同的爆發工作負載:批次或 CI/CD 工作。
這個架構模式仰賴多個運算環境間的應用程式備援部署。目標是提高容量、彈性或兩者皆是。
雖然您可超額佈建資源,在以資料中心為基礎的運算環境中配合爆發的工作負載,這種方法可能並不符合成本效益。當工作有時效性的限制時,延遲工作是不切實際的做法,但透過批次工作,您可以將其執行項目延長到較長的時間範圍來最佳化使用率。
「雲端爆發」模式的概念是將私人運算環境用於基準負載,並在需要額外的能力時,暫時爆發至雲端。
在上圖中,當內部部署私有環境的資料容量達到上限時,系統可視需要從Google Cloud 環境取得額外容量。
這種模式的主要推動因素是節省金錢,以及減少因應規模需求變化所需的時間和精力。採用這種做法,您只需支付處理額外負載時使用的資源費用。也就是說,您不需要過度佈建基礎架構。您可以改用隨選雲端資源,並根據需求和任何預先定義的指標調整資源規模。因此,貴公司或許能避免在需求高峰期發生服務中斷。
雲端爆發情境的潛在需求是工作負載可攜性。當您允許將工作負載部署至多個環境時,必須去除不同環境之間的差異。舉例來說,Kubernetes 可讓您在不同基礎架構的各種環境中,達到工作負載層級的一致性。詳情請參閱 GKE Enterprise 混合式環境參考架構。
設計須知
雲端爆發模式適用於互動式和批次工作負載。不過,當您處理互動式工作負載時,必須判定如何將要求分散到多個環境:
您可以將傳入使用者要求轉送至現有資料中心內執行的負載平衡器,然後讓該負載平衡器將要求分散到本機和雲端資源。
這個方法需要負載平衡器或在現有資料中心內執行的另一個系統,也追蹤雲端中配置的資源。負載平衡器或其他系統也必須啟動資源的自動擴充或縮減。使用這個方法,您可以在活動量低時停用所有雲端資源。不過,實作機制來追蹤資源可能會超過負載平衡器解決方案的能力,因而增加整體複雜度。
您可以使用 Cloud Load Balancing,搭配混合式連線網路端點群組 (NEG) 後端,不必實作追蹤資源的機制。您可以使用這個負載平衡器,根據不同的指標 (例如以權重為準的流量分配),將內部用戶端要求或外部用戶端要求轉送至位於內部部署環境和Google Cloud 的後端。此外,您也可以根據 Google Cloud中工作負載的負載平衡服務規模,調度後端資源。詳情請參閱「全域外部應用程式負載平衡器的流量管理總覽」。
這種做法還有其他優點,例如可運用 Google Cloud Armor 的 DDoS 防護功能、網路應用程式防火牆,以及使用 Cloud CDN 在雲端邊緣快取內容。不過,您需要調整混合式網路連線的大小,才能處理額外流量。
如「工作負載可攜性」一節所述,應用程式可在進行最小幅度變更的情況下攜帶至不同的環境,以確保工作負載一致性,但這並不表示應用程式在兩種環境中的效能一樣好。運算、基礎架構安全防護功能或網路基礎架構的差異,以及與相依服務的距離遠近,通常會決定效能。透過測試,您可以更準確地掌握曝光度,並瞭解成效預期。
您可以使用雲端基礎架構服務建構環境,以便託管應用程式,但無法移植。在需求量高峰期間重新導向流量時,請使用下列方法處理用戶端要求:
- 使用一致的工具監控及管理這兩個環境。
- 確保工作負載版本一致,且資料來源為最新版本。
- 當需求增加,且雲端工作負載預計會接受應用程式的用戶端要求時,您可能需要新增自動化功能,以佈建雲端環境並重新導向流量。
如果您打算在低需求期間關閉所有 Google Cloud 資源,主要使用 DNS 轉送政策進行流量負載平衡可能不是最佳做法。主要原因如下:
- 資源可能需要一段時間才能初始化,之後才能為使用者提供服務。
- DNS 更新通常需要一段時間才會在網路上生效。
因此:
- 即使沒有資源可處理要求,使用者也可能會轉送至雲端環境。
- DNS 更新在網際網路上全面生效前,使用者可能會暫時持續被導向內部部署環境。
透過 Cloud DNS,您可以選擇符合解決方案架構和行為的 DNS 政策和轉送政策,例如地理位置 DNS 轉送政策。Cloud DNS 也支援內部直通式網路負載平衡器和內部應用程式負載平衡器的健康狀態檢查。在這種情況下,您可以根據這個模式,將其納入整體混合式 DNS 設定。
在某些情況下,您可以使用 Cloud DNS 搭配健康狀態檢查功能來分配用戶端要求 Google Cloud,例如使用內部應用程式負載平衡器或跨區域內部應用程式負載平衡器時。 在這種情況下,Cloud DNS 會檢查內部應用程式負載平衡器的整體健康狀態,而後者會檢查後端執行個體的健康狀態。詳情請參閱「管理 DNS 轉送政策和健康狀態檢查」。
您也可以使用 Cloud DNS 水平分割。Cloud DNS 水平分割是一種方法,可為相同網域名稱的 DNS 查詢發起者,設定特定位置或網路的 DNS 回應或記錄。這種做法通常用於滿足應用程式需求,也就是設計應用程式時,同時提供私人和公開體驗,且兩者各有獨特功能。這種方法也有助於在各環境之間分配流量負載。
考量到這些因素,相較於互動式工作負載,雲端爆發模式一般而言比較適合批次工作負載。
優點
雲端爆量架構模式的主要優點包括:
- 雲端爆發可讓您在資料中心和私人運算環境中重複使用現有的投資。這個重複使用的機制可以是永久的,或是直到現有設備到了替換的期限時才失效,這也是您可能會考慮完整遷移的時間點。
- 您不再需要維護額外的能力來滿足尖峰需求,因此可能可以提高私人運算環境的使用率和成本效益。
- 雲端爆發可適時地執行批次工作,無須超額佈建運算資源。
最佳做法
實作雲端爆發模式時,請考慮採用下列最佳做法:
- 為確保在雲端中執行的工作負載能夠與在地端環境中執行的工作負載採用相同的方式存取資源,請使用網狀式模式,並採用最低權限的安全性存取原則。如果工作負載設計允許,您可以僅允許從雲端存取地端運算環境,反向則不允許。
- 如要盡量減少環境之間的通訊延遲,請挑選地理位置靠近您私人運算環境的Google Cloud 區域。詳情請參閱「選擇 Compute Engine 地區的最佳做法」。
- 僅將雲端爆發模式用於批次工作負載時,可將所有 Google Cloud 資源設為私人資源,即使您使用 Google Cloud 外部負載平衡來提供工作負載的進入點,也請禁止外界透過網際網路直接存取這些資源。
選取符合架構模式和目標解決方案行為的 DNS 政策和路由政策。
- 在這個模式中,您可以永久套用 DNS 政策的設計,也可以在尖峰需求時段使用其他環境,以因應額外容量需求。
- 您可以透過地理位置 DNS 路由政策,為區域負載平衡器設定全域 DNS 端點。這項策略適用於許多地理位置 DNS 轉送政策,包括使用 Google Cloud 搭配內部部署的混合式應用程式,其中 Google Cloud 區域存在。
如要為相同的 DNS 查詢提供不同的記錄,可以使用水平分割 DNS,例如來自內部和外部用戶端的查詢。
詳情請參閱混合式 DNS 適用的參考架構。
為確保 DNS 變更能快速套用,請設定 DNS,並使用合理簡短的存留時間值,以便在需要使用雲端環境的額外容量時,將使用者重新轉送至待命系統。
如果工作對時間要求不高,且不會在本機儲存資料,請考慮使用Spot VM 執行個體,這會比一般 VM 執行個體便宜相當多。不過,有個必要條件是,如果 VM 工作遭到先占,系統必須能夠自動重新啟動工作。
視情況使用容器來移轉工作負載。此外,GKE Enterprise 也是這項設計的關鍵技術。詳情請參閱「GKE Enterprise 混合式環境參考架構」。
監控從 Google Cloud 傳送至不同運算環境的任何流量。這種流量會有輸出資料移轉費用。
如果您打算長期使用此架構,且輸出資料傳輸量很高,建議使用 Cloud Interconnect。Cloud Interconnect 有助於提升連線效能,且如果流量符合特定條件,還可降低傳出資料的移轉費用。詳情請參閱 Cloud Interconnect 定價。
使用 Cloud Load Balancing 時,應盡可能運用其應用程式容量最佳化功能 。這麼做有助於解決全域分散式應用程式可能發生的容量問題。
在環境之間建立通用身分識別,讓系統能夠跨越環境界線以安全的方式進行驗證,藉此驗證系統使用者身分。
為保護私密資訊,強烈建議您加密所有傳輸中的通訊內容。如果需要在連線層進行加密,您可以根據所選的混合式連線解決方案,選擇各種選項。這些選項包括 VPN 通道、採用 Cloud Interconnect 的高可用性 VPN,以及 Cloud Interconnect 的 MACsec。