使用雲端原生服務實行負載平衡器的自訂錯誤頁面
使用雲端原生監督、通知及函數服務建立的自訂錯誤訊息取代預設負載平衡器錯誤訊息,以改善使用者的體驗。
Oracle Cloud Infrastructure Load Balancing 服務可改善資源使用量、協助縮放,以及確保高可用性。您可以設定多個負載平衡原則和應用程式特定的狀況檢查,以確保負載平衡器只將流量導向正常的執行處理。如果一或多個後端伺服器報告為不正常,則嘗試存取負載平衡器監聽器的使用者會收到標準錯誤代碼和訊息作為回應。不過,透過使用 Oracle Cloud Infrastructure Monitoring、Oracle Cloud Infrastructure Notifications 和 Oracle Functions 服務,一般使用者可以使用 Oracle Cloud Infrastructure Object Storage 服務所代管的自訂錯誤頁面來提供服務。此參照架構顯示案例,以提供更好的一般使用者體驗。
架構
此參照架構使用原生 Oracle Cloud Infrastructure Monitoring 與通知服務來回應負載平衡器臨界值條件,並呼叫 Oracle Functions 來評估條件,以及使用重新導向規則來轉送儲存在 Oracle Cloud Infrastructure Object Storage 中的自訂錯誤訊息。
Oracle Cloud Infrastructure Monitoring 定義每次不正常的負載平衡器後端伺服器達到臨界值時即觸發的警示。Oracle Cloud Infrastructure Notifications 服務會將警示訊息傳送給訂閱者,在此情況下,會包含函數。通知後,函數會實行必要的邏輯,以啟用或停用附加至負載平衡器監聽器的規則集。URL 重新導向規則會評估內送 URL,並將它重新導向至 Oracle Cloud Infrastructure Object Storage 中負載平衡器監聽器轉寄給一般使用者的自訂錯誤頁面。
下圖說明此參考架構。
Oracle Functions 架構包含下列元件:
- 區域
Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而且許多距離可以區分 (跨國家或甚至大陸)。
- 可用性網域
可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用像電源或冷卻等基礎架構,或內部可用性網域網路。因此,某個可用性網域發生失敗,並不會影響該區域中的其他可用性網域。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統資料中心網路一樣,VCN 也可讓您完全控制網路環境。一個 VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 區隔為子網路 (可為區域或可用性網域的作用領域)。每個子網路均包含一個不與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立之後變更子網路的大小。子網路可以是公用或專用。
- 負載平衡器
Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動流量分佈。
- 功能
Oracle Functions 是一個完全受管理的多租用戶、高度擴展、隨選、隨用函數即服務平台。由 Fn 專案開放原始碼引擎支援。您可以使用函數來建置程式碼,以及直接呼叫程式碼或觸發它來回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。
- 通知
Oracle Cloud Infrastructure Notifications 服務會透過發布/訂閱樣式將訊息廣播至分散式元件,為 Oracle Cloud Infrastructure 上代管的應用程式提供安全、高度可靠、低延遲和持續性訊息。
- 監督
Oracle Cloud Infrastructure Monitoring 服務會使用測量結果主動和被動監督您的雲端資源,以監督資源和警示,在這些測量結果符合警示指定的觸發程式時通知您。
- 物件儲存
物件儲存可讓您快速存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料以及豐富的內容,例如影像和視訊。使用標準儲存體來儲存快速、立即且頻繁地存取的「熱」儲存體。使用封存儲存體來儲存長期 (很少或很少存取) 的「冷」儲存體。
建議
您的需求可能會與此處描述的架構不同。請使用下列建議作為起點。
- VCN
建立 VCN 時,請根據您打算連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目以及每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
在此架構中,此函數由 VCN 的專用區域子網路代管。後端伺服器由公用子網路的負載平衡器存取的專用子網路代管。
- 功能
Oracle Functions 支援 Python、Java、Node、Go 以及 Ruby。使用您選擇的程式設計語言。如果發生錯誤,請一律啟用記錄以允許除錯。在此架構中,Python 程式設計可用來開發新增或移除規則集的函數邏輯。
- 物件儲存
此架構使用標準 Oracle Cloud Infrastructure Object Storage 來代管自訂網頁,此網頁可作為一般使用者要求的回應。
- 監督
Oracle Cloud Infrastructure Monitoring 會使用測量結果來監督資源和警示,以便在這些測量結果符合警示指定的觸發程式時通知您。在此架構中,負載平衡器會發佈測量結果,當
UnHealthyBackendServers
測量結果等於可用後端總數超過三分鐘時,就會觸發警示。當UnHealthyBackendServers
測量結果小於可用的後端總數超過三分鐘時,個別的警示會移除自訂網頁回應。 - 通知
當事件規則被觸發、警示被違反或有人直接發布訊息時,Oracle Cloud Infrastructure Notifications 便會發布訊息。在此情況下,Oracle Cloud Infrastructure Notifications 會在觸發警示時觸發函數。
考量
- 使用狀態
Oracle 可確保功能、監督與通知服務的高可用性,這些功能、監督與通知服務都是雲端原生且完全受管理的。Oracle Functions 會自動並順暢地調整規模,以服務所有內送要求。
- 管理功能
此架構使用 Python 來撰寫函數邏輯。基礎架構是使用 Terraform 來啟動設定。
- 安全性
使用原則來限制可以存取您公司所擁有之 Oracle Cloud Infrastructure 資源的人員及其存取方式。
對於物件儲存,預設會啟用加密,且無法關閉。
在 Oracle Functions 中部署之函數的所有存取權都是透過 Oracle Cloud Infrastructure Identity and Access Management (IAM) 控制的。IAM 允許將功能管理和使用者呼叫權限指派給特定使用者和使用者群組。
- 成本
您只需支付執行函數時使用的資源。
部署
GitHub 中會提供此參照架構的 Terraform 和功能代碼。
GitHub 儲存區域包括建立此參照架構之基礎架構的 Terraform 程式碼。GitHub 也包含根據通知與規則集提供決策邏輯的函數代碼。
- 移至 GitHub。
- 將儲存區域複製或下載至您的本機電腦。
- 依照
README
文件中的指示進行。