附註:

使用 OCI 事件服務規則以 OCI 函數更新專用區域的跨區域 DNS 記錄

簡介

在本教學課程中,我們將瞭解如何在建立新運算執行處理時,或在 Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 計畫的切換案例期間,自動更新兩個區域中運算執行處理的網域名稱系統 (DNS) 記錄。本教學課程涵蓋兩個特定的 OCI 服務。

此使用案例最初是針對在 OCI Full Stack DR 切換計畫期間使用,執行處理會在區域之間移動。基本上,「災難復原 (DR)」切換處理作業牽涉到在新區域中建立新執行處理,然後終止先前區域中的執行處理。此教學課程以此案例為基礎,著重於啟動 - 執行處理結束事件類型,這會觸發 OCI 函數來更新兩個區域中專用區域的 DNS 記錄。

此解決方案也可以做為預設 OCI DNS 專用區域自動化。系統會為您在所選區間中建立的每個新執行處理,或您指定用來識別目標執行處理的任何其他篩選條件建立 DNS 記錄。如需詳細資訊,請參閱產生事件的服務

高階架構

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 use 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
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME

作業 3:建立 OCI 容器登錄

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

    儲存庫名稱:lab/fnpy-event-dns-update

    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 函數以更新專用區域上的 DNS

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

    T9_1

  2. 建立受影響 OCI DNS 專用區域的組態。

    注意:此組態變數指定要更新的專用區域 OCID。您可以列出多個 OCID,並以逗號區隔。

    加密密碼名稱 數值
    TARGET_ZONES_OCID 將 PRIVATE ZONES OCID 清單設為以逗號區隔

    在本教學課程中,我們將設定兩個專用區域:一個用於 GRU 區域,另一個用於 VCP 區域。

    範例:

    ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
    
    ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
    

    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 fnpy-event-dns-update
    cd fnpy-event-dns-update
    ls -lrt
    

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

    T4_3

    init 指令將在 func.py 上建立 hello 世界函數。我們將覆寫此驗證碼。

  4. 從此處取得 Python 函數範例程式碼: fnpy-event-dns-update.zip 、解壓縮並在 init 指令期間覆寫檔案。

    1. 將 zip 檔案複製到您執行 fn init 命令的 lab 目錄中,然後檢查目錄中的檔案。

      ls -lrt
      
    2. 解壓縮檔案並覆寫現有的檔案。

      unzip fnpy-event-dns-update.zip
      

    T9_1

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

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

工作 5:建立 OCI 事件服務規則

  1. 前往 OCI 主控台,然後按一下可觀測性與管理。在事件服務下,選取規則,然後按一下建立規則

  2. 請輸入下列資訊。

    • 名稱:輸入 MyAutoDNSRule
    • 規則條件:
      • 條件 1:
        • 條件:選取 Event Type
        • 服務名稱:選取 Compute
        • 事件類型:選取 Instance - Launch End
      • 條件 2:
        • 條件:選取 Attribute
        • 屬性名稱:選取 compartmentId
        • 屬性值: 輸入您的區間 OCID。
    • 動作:
      • 動作類型:選取 Functions
      • 函數區間: 選取您的區間。
      • 函數應用程式:選取 MyApp
      • 函數:選取 fnpy-event-dns-update

    T5_1

    注意:在此範例中,我們以 compartmentID 篩選執行處理,表示該區間中任何新啟動的執行處理都會觸發選取的函數。您可以根據需求指定不同的篩選條件與條件。

工作 6:驗證解決方案

在本教學課程中,我們已在 GRU 和 VCP 區域中建立 DNS 專用區域,並記錄了每個 DNS 專用區域的 OCID。這些 OCID 將用於設定 OCI 函數。

  1. 確定您的 OCI 函數可供使用並啟用日誌記錄。

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

      T6_1

    2. 按一下日誌,然後選取啟用日誌

      T6_1

  2. 檢查目前的 DNS 專用區域。我們已在兩個區域中設定名為 UBUNTUAPPS.COM 的網域,如下圖所示。

    T6_1

    T6_1

  3. 建立新的運算執行處理以模擬 OCI 全端 DR 切換。這將會觸發 Instance Launch - END 事件,然後呼叫 OCI 函數來更新兩個區域中的 DNS 專用區域。

    T6_2

    T6_2

  4. 建立執行處理之後,請確認兩個區域中的 DNS 專用區域都已正確更新。

    T6_3

    T6_3

  5. 複查 OCI 函數日誌以確認執行之函數的詳細資訊。

    T6_4

認可

其他學習資源

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

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