附註:

根據 OCI 負載平衡器 HTTP 要求自動調整 Oracle Cloud Infrastructure 執行處理集區

簡介

在本教學課程中,我們將瞭解如何根據 OCI 負載平衡器收到的 HTTP 要求數目自動調整 Oracle Cloud Infrastructure (OCI) 執行處理集區。我們將涵蓋三個主要主題。

OCI 監控:使用 OCI 監控服務,使用度量和警訊功能主動和被動監控雲端資源。OCI Monitoring 服務使用指標監控資源和警報,以在這些指標符合警報指定的觸發器時通知您。

OCI 通知:當您在 OCI 中的資源發生問題時,您可以使用警訊、事件規則和連接器,透過支援的端點 (包括電子郵件和簡訊 (SMS) 取得可讀訊息。您也可以透過自訂 HTTPS 端點和 OCI 函數將工作自動化。

OCI 函數: OCI Functions 是一個完全託管的多租用戶,可高度擴展,可隨選函數即服務平台。它是以企業級 OCI 為基礎,由 Fn Project 開放原始碼引擎提供技術支援。當您想要專注於撰寫程式碼以滿足業務需求時,請使用 OCI Functions (有時縮寫為 Functions,之前稱為 Oracle Functions)。

高階架構

T3_1

注意:

目標

必要條件

作業 1:設定動態群組

移至您的網域,按一下動態群組並建立下列群組。

動態群組名稱:MyFunctions

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

作業 2:建立原則

請前往原則並建立下列原則。

原則名稱: FunctionsPolicies

Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage compute-management-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage load-balancers in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read metrics in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read alarms in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-pools in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME

作業 3:建立 OCI 容器登錄

  1. 前往開發人員服務,按一下容器登錄,然後為 Fn 映像檔建立專用儲存區域。

    儲存庫名稱:lab/fn-autoscale-instance-pool

    T3_1

  2. 檢查儲存區域並記下命名空間

    T3_1

  3. 開啟已安裝 OCI CLI 和 Docker 的終端機 Shell,然後繼續登入登錄。請檢查您區域的正確 URL。在本教學課程中,我們正在使用登錄 URL 為 gru.ocir.io巴西東部 (聖保羅) 區域。

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

作業 4:建立 Python OCI 函數以自動調整執行處理集區

注意: 請確定您選取的專用子網路與串流集區的子網路相同。

  1. 移至 OCI 主控台,然後按一下開發人員服務。在函數下方,按一下應用程式建立應用程式

    T9_1

  2. 建立一些組態以設定調整大小。

    注意:這些組態變數是用來決定函數用來橫向縮減及橫向擴展執行處理集區的值。

    加密密碼名稱 數值
    INSTANCE_POOL_TARGET_SIZE 設定新執行處理集區大小的值
    INSTANCE_POOL_DESIRED_SIZE 設定執行處理集區的一般大小

    本教學課程使用 1 個執行處理的執行處理集區並擴展至 2

    T4_2

  3. 移至已安裝 Docker、OCI CLI、Fn Project CLI 的終端機 Shell,然後執行下列命令來初始化函數。

    注意:如果您遵循這些作業,現在已經執行您的 Docker 登入命令 (如果沒有的話),請繼續執行作業 3.3 中的 Docker 日誌。

    mkdir lab
    cd lab
    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn init --runtime python fn-autoscale-instance-pool
    cd fn-autoscale-instance-pool
    ls -lrt
    

    注意:在本教學課程中,我們將使用 Brazil East (Sao Paulo) 區域,如果您使用其他區域,則需要變更 api-urlregistry 位置。

    T4_3

    init 命令會在 func.py 上建立 Hello World 函數。我們將覆寫此驗證碼。

  4. 從此處取得 Python 函數範例程式碼:func.py 並覆寫在函數 init 命令期間建立的本機 func.py

    # Copy the function code from this lab and save it on /tmp/func.py in your shell machine
    ls -lrt /tmp/func.py
    
    # Overwrite the func.py with tha lab's code
    cp /tmp/func.py func.py
    
    # Add the OCI package on the requirements.txt file, this will be needed to work with OCI.
    echo -e "\noci" >> requirements.txt
    
    # Check if requirements.txt has two lines
    cat requirements.txt
    

    T9_1

  5. 建立新程式碼並部署函數。

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

作業 5:建立 OCI 通知

  1. 移至 OCI 主控台,然後按一下開發人員服務。在應用程式整合下,選取通知,然後按一下建立主題

    名稱:AutoScaleTopic

    T5_1

  2. 按一下訂閱以建立新訂閱,然後選取在「任務 4」中建立的函數。

    T5_2

工作 6:建立要橫向擴展的警示定義 (將執行處理集區大小調整為目標值)

  1. 前往 OCI 主控台,然後按一下可觀測性與管理。在監督底下,選取警示定義,然後按一下建立警示

    注意:此警示的臨界值 (間隔) 是針對教學課程所定義,您可以根據應用程式,根據自己的需求加以自訂。

    警示名稱:instance_pool_scale_OUT

  2. 輸入下列資訊以定義警示。

    1. 測量結果描述段落中,輸入下列資訊。

      • 測量結果命名空間:oci_lbaas
      • 測量結果名稱: HttpRequests
      • 間隔:1 minute
      • 統計資料:Max
    2. 測量結果維度區段中,輸入下列資訊。

      • 第一個測量結果維度:

        • 維度名稱:resourceID
        • 維度值:選取您的負載平衡器 OCID。
      • 第二個測量結果維度:

        • 維度名稱:backendSetName
        • 維度值:選取您的 backendSet 名稱。

      T6_1

    3. 觸發程式規則 1 區段中,輸入下列資訊。

      • 運算子:greater than
      • 值: 30
      • 警示主體:連線數目高於預期,起始調整處理作業。

      T6_1

  3. 輸入下列資訊以定義警示通知。

    1. 目標區段中,輸入以下資訊。

      • 目的地服務:選取通知
      • 區間:選取您的區間。
      • 主題:選取您的主題。
    2. 訊息格式區段中,選取傳送 Pretty JSON 訊息 (含分行符號的原始文字) ,並選取重複通知? (含通知頻率的 1 分鐘)。

    T6_1

  4. 按一下進階選項,然後新增標記。

    備註:此為必要標記,以定義縮放類型 (進出)。

    標記命名空間:選取無 (套用自由格式標記)
    標記金鑰:autoscaling_type值:out

    T6_1

工作 7:建立縮放的警示定義 (將執行處理集區大小調整回想要的大小)

  1. 前往 OCI 主控台,然後按一下可觀測性與管理。在監督底下,選取警示定義,然後按一下建立警示

    注意:此警示的臨界值 (間隔) 是針對教學課程所定義,您可以根據應用程式,根據自己的需求加以自訂。

    警示名稱:instance_pool_scale_IN

  2. 輸入下列資訊以定義警示。

    1. 測量結果描述段落中,輸入下列資訊。

      • 測量結果命名空間:oci_lbaas
      • 測量結果名稱: HttpRequests
      • 間隔:1 minute
      • 統計資料:Max
    2. 測量結果維度區段中,輸入下列資訊。

      • 第一個測量結果維度:

        • 維度名稱:resourceID
        • 維度值:選取您的負載平衡器 OCID。
      • 第二個測量結果維度:

        • 維度名稱:backendSetName
        • 維度值:選取您的 backendSet 名稱。
    3. 觸發程式規則 1 區段中,輸入下列資訊。

      • 運算子:less than
      • 值: 30
      • 警示主體:連線計數會回到可接受的值,呼叫縮減以將執行處理數目減少回所需的值。

      T7_1

  3. 輸入下列資訊以定義警示通知。

    1. 目標區段中,輸入以下資訊。

      • 目的地服務:選取通知
      • 區間:選取您的區間。
      • 主題:選取您的主題。
    2. 訊息格式區段中,選取傳送 Pretty JSON 訊息 (含換行符號的原始文字)

  4. 按一下進階選項,然後新增標記。

    備註:此為必要標記,以定義縮放類型 (進出)。

    標記命名空間:選取無 (套用自由格式標記)
    標記金鑰:autoscaling_type值:in

    T7_1

作業 8:建立裝貨並檢查警示作業中

  1. 取得您的 LoadBalancer IP,並在連接埠 80 上對應用程式執行數次呼叫。開啟您的 Shell 主控台,然後執行下列程式碼來呼叫您的負載平衡器。

    i=1
    while true
    do
    echo "Request $i"
       curl http://your-ip-here
       ((i++))
       echo ""  # Prints a newline for better readability between requests
    done
    

    簡單應用程式載入的輸出。

    T8_1

    注意:這是示範分析藍本的簡單 HTTP Apache Web 伺服器。

  2. 檢查執行處理集區的實際大小和狀態。本教學課程的執行處理集區大小為 1

    T8_1

  3. 開啟警示定義以檢視度量,並檢查是否會觸發警示。

    T8_1

    T8_1

  4. 視度量間隔而定,經過數分鐘後,將會觸發橫向擴展函數。

    開啟執行處理集區並檢查狀態 ( 調整規模目標執行處理計數2)。

    T8_1

    調整處理之後,您可以看到執行處理集區大小是 2

    T8_1

  5. 停止 Shell 命令檔,並等待橫向擴展轉換的警示回復至確定,然後觀察到縮減警示。等待數分鐘,直到兩個警示都更新為止,並且觀察是否會觸發橫向縮減警示。

    T8_1

    現在,縮小型警報處於火災狀態。

    T8_1

    請注意,HttpRequests 已捨棄至低於 30 臨界值的數字。

    T8_1

    執行處理集區橫向縮減已啟動。

    T8_1

    請注意,執行處理集區大小會回到想要的值 1

    T8_1

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center