附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 OCI 事件服務規則以 OCI 函數更新專用區域的跨區域 DNS 記錄
簡介
在本教學課程中,我們將瞭解如何在建立新運算執行處理時,或在 Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 計畫的切換案例期間,自動更新兩個區域中運算執行處理的網域名稱系統 (DNS) 記錄。本教學課程涵蓋兩個特定的 OCI 服務。
-
OCI 事件服務規則:觸發 OCI 環境內變更和事件自動回應的服務。
-
OCI 函數:無伺服器運算服務可讓您在不管理基礎架構的情況下,執行回應事件的程式碼。
此使用案例最初是針對在 OCI Full Stack DR 切換計畫期間使用,執行處理會在區域之間移動。基本上,「災難復原 (DR)」切換處理作業牽涉到在新區域中建立新執行處理,然後終止先前區域中的執行處理。此教學課程以此案例為基礎,著重於啟動 - 執行處理結束事件類型,這會觸發 OCI 函數來更新兩個區域中專用區域的 DNS 記錄。
此解決方案也可以做為預設 OCI DNS 專用區域自動化。系統會為您在所選區間中建立的每個新執行處理,或您指定用來識別目標執行處理的任何其他篩選條件建立 DNS 記錄。如需詳細資訊,請參閱產生事件的服務。
高階架構
注意:
本教程僅供教育和學習之用。它為學員提供一個實驗環境,並在受控制的環境中獲得實際經驗。請特別注意,本教學課程中使用的安全組態和實務可能不適用於實際情況。
真實世界應用程式的安全考量通常更複雜且動態。因此,在實際執行環境中實行此處示範的任何技術或組態之前,必須先進行全面性的安全評估和複查。此檢閱應涵蓋安全的所有層面,包括存取控制、加密、監督以及規範,以確保系統符合組織的安全原則和標準。
從實驗室環境轉換成實際部署時,安全性應始終是首要任務。
目標
-
設定 OCI 事件服務規則以觸發提供的 OCI 函數。每當在選取的區間中建立新執行處理時,此功能將會更新兩個區域中的 DNS 專用區域記錄。
注意:本教學課程將不涵蓋 OCI Full Stack DR 的設定。它將著重於在兩個或多個區域中將 DNS 專用區域自動化。如需詳細資訊,請參閱將 OCI Full Stack Disaster Recovery 服務與 Oracle WebLogic Server 網域搭配使用。
必要條件
-
OCI Environment
-
具有管理員權限的 OCI 帳戶。
-
建立資源的區間。
注意:請注意區間名稱和區間 ID。
-
OCI DNS 專用區域 Oracle Cloud Identifier (OCID) 清單,新啟動的執行處理在每個您可能需要的區域中都會有 DNS 記錄。在本教學課程中,有兩個 DNS 專用區域:一個用於 GRU 區域,一個用於 VCP 區域。
-
-
本機機器環境
-
設定本機 Oracle Cloud Infrastructure 命令行介面 (OCI CLI)。如需詳細資訊,請參閱安裝 OCI CLI 。
-
本機 Docker 能夠建置映像檔。如果您使用的是 Oracle Linux,請參閱Docker:Install Docker on Oracle Linux 8 (OL8) 。
-
本機 Fn Project CLI 可將您的功能部署到 OCI。如需詳細資訊,請參閱安裝 Fn 專案 CLI 。
-
作業 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 容器登錄
-
前往開發人員服務,按一下容器登錄,然後為 Fn 映像檔建立專用儲存區域。
儲存庫名稱:
lab/fnpy-event-dns-update
。 -
檢查儲存區域並記下命名空間。
-
開啟已安裝 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
作業 4:建立 Python OCI 函數以更新專用區域上的 DNS
-
移至 OCI 主控台,然後按一下開發人員服務。在函數下方,按一下應用程式和建立應用程式。
-
建立受影響 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
-
移至已安裝 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-url
和registry
位置。init
指令將在func.py
上建立 hello 世界函數。我們將覆寫此驗證碼。 -
從此處取得 Python 函數範例程式碼: fnpy-event-dns-update.zip 、解壓縮並在
init
指令期間覆寫檔案。-
將 zip 檔案複製到您執行
fn init
命令的 lab 目錄中,然後檢查目錄中的檔案。ls -lrt
-
解壓縮檔案並覆寫現有的檔案。
unzip fnpy-event-dns-update.zip
-
-
建置新程式碼並部署函數。
ls -lrt fn deploy --app MyApp
工作 5:建立 OCI 事件服務規則
-
前往 OCI 主控台,然後按一下可觀測性與管理。在事件服務下,選取規則,然後按一下建立規則。
-
請輸入下列資訊。
- 名稱:輸入
MyAutoDNSRule
。 - 規則條件:
- 條件 1:
- 條件:選取
Event Type
。 - 服務名稱:選取
Compute
。 - 事件類型:選取
Instance - Launch End
。
- 條件:選取
- 條件 2:
- 條件:選取
Attribute
。 - 屬性名稱:選取
compartmentId
。 - 屬性值: 輸入您的區間 OCID。
- 條件:選取
- 條件 1:
- 動作:
- 動作類型:選取
Functions
。 - 函數區間: 選取您的區間。
- 函數應用程式:選取
MyApp
。 - 函數:選取
fnpy-event-dns-update
。
- 動作類型:選取
注意:在此範例中,我們以 compartmentID 篩選執行處理,表示該區間中任何新啟動的執行處理都會觸發選取的函數。您可以根據需求指定不同的篩選條件與條件。
- 名稱:輸入
工作 6:驗證解決方案
在本教學課程中,我們已在 GRU 和 VCP 區域中建立 DNS 專用區域,並記錄了每個 DNS 專用區域的 OCID。這些 OCID 將用於設定 OCI 函數。
-
確定您的 OCI 函數可供使用並啟用日誌記錄。
-
移至 OCI 主控台,然後按一下開發人員服務。在函數底下,按一下應用程式,然後選取您建立的應用程式
MyApp
。 -
按一下日誌,然後選取啟用日誌。
-
-
檢查目前的 DNS 專用區域。我們已在兩個區域中設定名為
UBUNTUAPPS.COM
的網域,如下圖所示。 -
建立新的運算執行處理以模擬 OCI 全端 DR 切換。這將會觸發
Instance Launch - END
事件,然後呼叫 OCI 函數來更新兩個區域中的 DNS 專用區域。 -
建立執行處理之後,請確認兩個區域中的 DNS 專用區域都已正確更新。
-
複查 OCI 函數日誌以確認執行之函數的詳細資訊。
相關連結
認可
- 作者 - Joao Tarla (Oracle LAD A 團隊解決方案工程師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Use OCI Events Service Rule to Update Cross Region DNS Records for a Private Zone with OCI Functions
G11045-01
July 2024