Autoscale Oracle Cloud Infrastructure Container Instances

使用容器部署的應用程式必須根據需求進行擴展。例如,學生註冊申請需要在學期開始時縱向擴展,但在學期開始時縮減。Oracle Cloud Infrastructure Container Instances 可代管您的容器化應用系統,然後視需要自動調整這些應用系統。

OCI 容器執行處理可讓您在針對容器最佳化的無伺服器運算上輕鬆執行應用系統。您也可以輕鬆啟動一或多個具有指定運算型態、資源配置、網路及其他選擇性組態的容器。

使用此參照架構,根據資源使用量自動調整 OCI 容器執行處理

架構

此架構結合使用 Oracle 通知服務、警示及 Oracle 功能來自動調整 OCI 容器執行處理

下圖說明此參照架構。



autoscaling-container-instances-diagram-oracle.zip

架構具有下列元件:

  • 租用戶

    租用戶是指註冊 Oracle Cloud Infrastructure 時,Oracle 在 Oracle Cloud 內設定的安全獨立分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

  • 區域

    Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個資料中心 (稱為可用性網域)。區域與其他區域無關,因此廣大的距離可加以區隔 (跨國家或甚至洲)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織您在 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則來指定可存取資源的人員及可執行的動作。

  • 可用性網域

    可用性網域是區域內的獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域並不共用基礎設施,例如電力或冷卻系統或內部可用性網域網路。因此,一個可用性網域發生失敗並不會影響區域中的其他可用性網域。

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎設施。每個可用性網域都有三個容錯域,具備獨立電源和硬體。當您將資源分散到多個容錯域時,您的應用系統就可容忍容錯域中的實體伺服器故障、系統維護以及電源故障。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統的資料中心網路,VCN 可讓您完全控制網路環境。VCN 可以有多個非重疊 CIDR 區塊,而您可以在建立 VCN 之後進行變更。您可以將 VCN 區隔成子網路,然後對區域或可用性網域進行調整。每個子網路都是由不與 VCN 中其他子網路重疊的連續位址範圍所組成。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用子網路。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。

  • 網路位址轉譯 (NAT) 閘道

    NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,而不需將這些資源暴露給內送網際網路連線。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。VCN 到 Oracle 服務的流量會透過 Oracle 網路光纖通道,而一律不會周遊網際網路。

  • 網際網路閘道

    網際網路閘道可允許 VCN 中的公用子網路與公用網際網路之間的流量。

  • 雲端保全

    您可以使用 Oracle Cloud Guard 來監控及維護 Oracle Cloud Infrastructure 中資源的安全性。雲端保全使用偵測器處方,您可以定義檢查資源是否有安全漏洞,以及監控操作員和使用者是否有風險活動。偵測到任何組態錯誤或不安全活動時,雲端保全會根據您可以定義的回應器處方,建議更正動作並協助採取這些動作。

  • 負載平衡程式

    Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動化流量分配。

  • 安全區域

    安全區域會強制執行加密資料等原則,並防止對整個區間的網路進行公用存取,以確保 Oracle 的安全最佳做法。安全區域會與相同名稱的區間關聯,並包含適用於區間與其子區間的安全區域原則或「處方」。您不能將標準區間新增或移動到安全區域區間。

  • 登錄

    Oracle Cloud Infrastructure Registry 是 Oracle 管理的登錄,可讓您簡化開發到生產的工作流程。登錄可讓您輕鬆儲存、共用及管理開發使用者自建物件,例如 Docker 映像檔。Oracle Cloud Infrastructure 的高可用性擴充架構可確保您可以可靠地部署和管理應用程式。

  • 記錄日誌
    日誌記錄是一種可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
    • 稽核日誌:與稽核服務發出之事件相關的日誌。
    • 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
    • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則可指定誰可以存取哪些資源,以及存取方式。您會在群組和區間層次授予存取權,這表示您可以撰寫一個原則,讓群組在特定區間或租用戶內具有特定類型的存取權。

  • 保存庫

    Oracle Cloud Infrastructure Vault 可讓您集中管理加密金鑰,保護您的資料和用於保護雲端資源安全存取的機密證明資料。您可以使用保存庫服務建立及管理保存庫、金鑰及加密密碼。

建議

使用下列建議作為建立安全健全環境的起點。 您的需求可能與此處所述的架構不同。
  • VCN

    建立 VCN 時,請根據您計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    選取未與欲設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。

    您可以在建立 VCN 之後,變更、新增及移除其 CIDR 區塊。

    設計子網路時,請考慮您的流量與安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 雲端保全

    複製並自訂 Oracle 提供的預設處方,以建立自訂偵測器與回應器處方。這些處方可讓您指定哪些類型的安全違規會產生警告,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用的物件儲存的儲存桶。

    在租用戶層次套用雲端保全以涵蓋最廣的範圍,並減少維護多個組態的管理負擔。

    您也可以使用「受管理清單」功能,將特定組態套用至偵測器。

  • 安全區域

    對於需要最高安全性的資源,Oracle 建議您使用安全區域。安全區域是一個與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰進行加密。當您建立和更新安全區域中的資源時,Oracle Cloud Infrastructure 會根據安全區域處方中的原則驗證作業,並且拒絕違反任何原則的作業。

  • 網路安全群組 (NSG)

    您可以使用 NSG 定義一組套用至特定 VNIC 的輸入和輸出規則。我們建議您使用 NSG 而非安全清單,因為 NSG 可讓您將 VCN 的子網路架構與應用程式的安全需求分開。

注意事項

部署此參照架構時,請考量以下各點。

  • 效能

    此解決方案的速度比建立新容器執行處理更快,並將它新增至函數本身的後端集,因為我們不需要等待容器執行處理建立 API 呼叫,以傳回容器執行處理的 IP 位址,將它新增至負載平衡器的後端集。Oracle Cloud Infrastructure Functions 在每個呼叫中,執行限制為 5 分鐘。

  • 安全

    請務必將所有容器執行處理放在專用子網路,且只有公用子網路中的公用負載平衡器。

  • 擴展性

    請務必設定容器執行處理的數目下限和上限。請徹底測試解決方案,以擴展大量的執行處理。

  • 成本

    使用 Oracle Cloud Infrastructure Registry 的費用完全免費。容器執行處理會產生成本,但函數只會花費在執行時間長短。

部署

請依照這些高階步驟自動調整容器執行處理。

  1. Oracle Cloud Infrastructure Resource Manager 上建立堆疊以建立容器執行處理、建立負載平衡器,以及使用容器執行處理的 IP 將容器執行處理新增至負載平衡器後端集。
  2. 建立堆疊,以便於下列參數中使用:
    • Compartment_OCID
    • Region
    • Tenancy_OCID
    • Container_Instances_Count
    • Is_Public_IP_Assigned
    • Container_instance_registry_secret
    • Container_Instance_Image_URL
    • Private_Subnet_OCID
    • Public_Subnet_OCID
  3. 建立從上述「資源管理程式」堆疊讀取 Container_Instance_Count 的 Oracle 函數,並根據容器執行處理的擴大或縮小呼叫的必要進行更新。
  4. 在 Oracle 函數中更新 Container_Instance_Count 之後,請以更新的 Container_Instance_Count 在「資源管理程式」套用 Terraform 堆疊,然後結束函數。
    資源管理程式堆疊會負責根據呼叫新增或終止 OCI 容器執行處理,然後從負載平衡器後端集新增或移除該執行處理。
  5. 將下列組態新增至您的 Oracle 功能:
    • Min_Container_Instance
    • Max_Container_Instance
    • Compartment_ID
    • Resource_Manager_Stack_ID
  6. 將新建立的 Oracle 函數映像檔推送到 Oracle Cloud Infrastructure Registry (OCIR)。
  7. 在通知服務底下建立主題,並提供適當的名稱。
  8. 在建立的主題底下建立訂閱,然後選取函數作為協定。

    注意:

    選取正確的區間和應用程式所建立的函數。
  9. oci_computecontainerinstance 命名空間中建立警示定義。
    1. 選取 CPU_utilizationMem_Utilization 作為「測量結果」。
    2. 選取「容器執行處理」名稱作為維度。
    3. 警示所需的臨界值設為 Fire
  10. 測試此自動調整架構,以縱向擴展並縮減 OCI 容器執行處理

探索更多

進一步瞭解 OCI 容器執行處理

檢閱下列額外資源:

確認書

Authors: Christophe Pruvost, Karthic Ravindran, Chandrashekar Avadhani

Contributors: John Sulyok