在您自己的基礎結構上建立混合式部署的標準邏輯應用程式工作流程

適用於:Azure Logic Apps (標準)

在需要使用、控制和管理自身基礎架構的情況下,請使用 Azure Logic Apps 中的混合部署模型來建立標準邏輯應用程式的工作流程。 此模型提供各種功能,讓您可以針對需要本機處理、儲存和網路存取的部分連接環境,建立和託管整合解決方案。 您的基礎結構可以包含內部部署系統、私人雲端和公用雲端。 透過混合模式,您的標準邏輯應用工作流程由 Azure Logic Apps 執行環境驅動,該執行環境作為 Azure 容器應用程式 擴充功能的一部分託管在您的基礎架構上。

如需顯示標準邏輯應用程式工作流程在部分連線環境中裝載和執行的架構概觀,請參閱設定標準邏輯應用程式混合式部署的基礎結構需求。

這份操作指南展示了如何在設定好應用程式所需資源後,利用混合部署模式建立並部署標準邏輯應用程式的工作流程。

Important

本地 Azure Logic Apps 的執行時與僅使用本地可用相依關係的工作流程,即使 Azure 連線中斷,仍可繼續運行。 Azure 依賴的管理、部署、監控、身份操作和管理連接器在斷線時可能會無法使用。 24 小時後,你可能會失去日誌資料,但本地執行時的執行仍會繼續。 欲了解更多資訊,請參閱 混合部署的限制。

限制

關於目前支援的 Azure 區域、支援的 Kubernetes 叢集,以及平台範圍的限制,請參見混合部署的限制。

當你建立並操作混合邏輯應用程式時,會受到以下限制:

限度 說明
管理式身份驗證用於受管理 API 連線 目前,受管 API 連線在混合邏輯應用程式中不支援受管身份驗證。 您必須使用 Microsoft Entra ID 自行註冊應用程式。 如需詳細資訊,請遵循本指南稍後提供的步驟。
函式型觸發程序 某些函式型觸發程序 (例如 Azure Blob、Cosmos DB 和事件中樞) 需要連接到標準邏輯應用程式相關聯的 Azure 儲存體帳戶。 如果您使用任何以函式為基礎的觸發程式,請在 Azure 入口網站的標準邏輯應用程式環境變數或邏輯應用程式專案的 Visual Studio Code local.settings.json 檔案中,新增名為 AzureWebJobsStorage 的應用程式設定,並提供記憶體帳戶連接字串:

"Values": {
"name": "AzureWebJobsStorage",
"value": "{storage-account-connection-string}"
}

Azure 連線中斷期間的行為

  • 只要執行時及所有必要的工作流程相依關係仍可在本地使用,工作流程仍可能持續運行。
  • 內建操作會與本地執行時一起執行,但操作呼叫的任何外部服務必須保持可達性。
  • 受控連接器作業需要連線到其託管於 Azure 的服務。
  • Azure 入口網站管理、基於 Azure 的部署、身份操作及遙測傳輸可能會無法使用或延遲。
  • 如果執行階段持續中斷連線達 24 小時,您可能會遺失在此之後產生的記錄資料。

如果您的工作負載在長時間中斷連線期間需要進行部署、監視、警示、重新提交執行,或身分識別作業,請針對您的特定組態,向您的 Microsoft 業務窗口或產品團隊確認其運作行為。

先決條件

  • Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶。

  • 以下由客戶管理的資源,必須全部存在於同一網路中才能達到所需的連接性:

    • 一個支援的 Kubernetes 叢集,連接至 Azure Arc
    • 一個 SQL 資料庫,用於本地儲存工作流程的執行歷史、輸入與輸出以便處理
    • 伺服器訊息區 (SMB) 檔案共用,用以在本機儲存工作流程所使用的成品

    為滿足這些需求, 請設定這些資源以支援標準工作流程的混合部署。

  • 若要使用 Visual Studio Code,您需要適用於 Visual Studio Code 的 Azure Logic Apps (標準) 延伸模組與相關必要條件。

    秘訣

    如果您有新的 Visual Studio Code 安裝,請在嘗試部署到自己的基礎結構之前,確認您可以在本機執行基本標準工作流程。 此測試執行可協助找出可能存在於標準工作流程專案中的任何錯誤。

建立您的標準邏輯應用程式

依照下列步驟建立混合式部署的標準邏輯應用程式:

  1. 在 Azure 入口網站搜尋方塊中輸入邏輯應用程式,然後選取 [邏輯應用程式]。

  2. 在 [邏輯應用程式] 頁面工具列上,選取 [新增]。

  3. 在 [建立邏輯應用程式] 頁面的 [標準] 下方,選取 [混合式]。

  4. 在 [建立邏輯應用程式 (混合式)] 頁面,提供下列資訊:

    屬性 必要 值 說明
    訂用帳戶 是的 < Azure-訂閱-名稱> 您的 Azure 訂用帳戶名稱。

    此範例使用隨用隨付。
    資源群組 是的 < Azure-資源-群組-名稱> Azure 資源群組,您可在其中建立混合式應用程式和相關資源。 此名稱在各區域中必須是唯一的,而且只能包含字母、數字、連字號 (-)、底線 (_)、括弧(()) 和句點 (.)。

    此範例會建立名為 Hybrid-RG 的資源群組。
    邏輯應用程式名稱 是的 < 邏輯應用程式名稱> 您的邏輯應用程式名稱,此名稱在各區域中不得重複,且只能包含小寫字母、數字或連字號 (-)。

    此範例使用 my-logic-app-hybrid。
    區域 是的 < Azure Region> 一個支援混合部署的 Azure 區域。

    此範例使用美國東部。
    容器應用程式已連線的環境 是的 < 連線環境名稱> 您建立作為邏輯應用程式的部署環境的已啟用 Arc 的 Kubernetes 叢集。 如需詳細資訊,請參閱教學課程:在已啟用 Azure Arc 的 Kubernetes 上啟用 Azure 容器應用程式。
    設定儲存體設定 是的 已啟用或停用 繼續前往 [建立邏輯應用程式 (混合式)] 頁面上的 [儲存體] 索引標籤。

    下列範例顯示 Azure 入口網站中的邏輯應用程式建立頁面並提供範例值:

    此螢幕擷取畫面顯示 Azure 入口網站和邏輯應用程式建立頁面。

  5. 在 [儲存體] 頁面,提供您先前設定的儲存提供者和 SMB 檔案共用的下列相關資訊:

    屬性 必要 值 說明
    SQL 連接字串 是的 < SQL-SERVER-CONNECTION-STRING> 您先前儲存的 SQL Server 連接字串。 如需詳細資訊,請參閱建立 SQL Server 儲存提供者。
    主機名稱 是的 < 文件共享主機名稱> SMB 檔案共用的主機名稱。
    檔案共用路徑 是的 < 檔案共享路徑> SMB 檔案共用的檔案共用路徑。
    使用者名稱 是的 < 文件共享用戶名稱> SMB 檔案共用的使用者名稱。
    密碼 是的 < 檔案共用密碼> SMB 檔案共用的密碼。
  6. 當您完成時,請選取 [檢視 + 建立]。 確認提供的資訊,然後選取 [建立]。

  7. Azure 部署完成後,選取 [移至資源]。

    Azure 入口網站會開啟您的邏輯應用程式資源,例如:

    螢幕擷取畫面顯示了 Azure 入口網站,其中包含作為容器應用程式建立的用於混合式部署的標準邏輯應用程式。

  8. 在邏輯應用程式資源功能表上的 [ 工作流程] 底下,選取 [ 工作流程]。

  9. 在 [工作流程] 頁面工具列中,選取 [新增] 以新增空白的具狀態或無狀態工作流程。

  10. 設計工具開啟之後,新增觸發程序和動作以建立工作流程。

    如需詳細資訊,請參閱使用觸發程序和動作建置工作流程。

混合式部署的版本控制

每當您儲存對子工作流程的變更時,具有混合式裝載選項的標準邏輯應用程式都會自動建立新的修訂,這是來自 Azure 容器應用程式的版本控制概念。 此修訂可能需要一些時間才能啟動,這表示在您儲存任何變更之後,可能要稍候片刻,才能測試工作流程。

如果您的變更仍未出現在工作流程中,可以檢查修訂是否存在:

  1. 在 Azure 入口網站中,開啟您的資源。 在資源功能表的 [修訂] 下方,選取 [修訂與複本]。

  2. 在 [修訂與複本] 頁面的 [使用中的修訂] 索引標籤中,檢查新修訂是否出現在清單中。

如需詳細資訊,請參閱下列資源:

設定加增強遙測或 OpenTelemetry 進行效能監控

您可以在 Standard 邏輯應用程式的 Application Insights 中設定增強的遙測收集,然後在工作流程完成執行之後檢視收集的數據。 這項功能可讓您更輕鬆體驗,以取得工作流程的深入解析,並更能控制數據源上的篩選事件,以協助您降低儲存成本。 這些改善措施的重點在於即時效能指標,為系統的健康情況和行為提供深入解析。

針對部分連線和內部部署的情境,您可以設定您的標準邏輯應用程式,以便根據您為特定環境定義的 OpenTelemetry 支援 的應用程式設定來發送遙測資料。 根據預設,此遙測數據會傳送至 Application Insights。 如需詳細資訊,請參閱 在 Azure Logic Apps 中為 Standard 工作流程啟用 Application Insights 中的增強遙測。

Application Insights 需要 Azure 連線。 在連線中斷期間,遙測傳輸可能會遇到延遲,且你可能會遺失24小時後產生的日誌資料。 請根據您使用的遙測目的地與組態,驗證是否有任何本機監控與警示需求。

在 Azure 入口網站中變更 vCPU 和記憶體配置

您可以編輯標準邏輯應用程式資源的 vCPU 和記憶體設定。 這些變更會影響標準邏輯應用程式工作負載的 計費費用 。

  1. 在 Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在資源功能表的 [設定] 下方,選取 [容器]。

  3. 在 [容器] 頁面的工具列中,選取 [編輯和部署],開啟 [編輯容器] 窗格。

  4. 在 [屬性] 索引標籤的 [容器資源配置] 下方,變更下列值以符合您的案例需求:

    屬性 值 說明
    CPU 核心 - 預設值:1
    - 最小值:0.25
    - 最大值:2
    決定要指派給容器實例的 vCPU 核心。 您可以將此值增加 0.25 個核心,上限為最大值。 此邏輯應用程式的所有容器執行個體總數上限為 2 個核心。
    記憶體 - 預設值:2
    - 最小值:0.1
    - 最大值:4
    決定要指派給容器執行個體的記憶體容量 (以 GiB 為單位)。 您可以將此值增加 0.1 GiB 到最大值。 此邏輯應用程式所有容器實例的總容量限製為 4 GiB。
  5. 完成時,請選取 [儲存]。

在 Azure 入口網站中變更複本調整

您可以控制部署以回應觸發事件之複本範圍的自動調整。 複本是邏輯應用程式資源修訂或版本的新實例。 若要變更此範圍的最小值和最大值,您可以修改縮放規則,決定觸發縮放的事件類型。 如需詳細資訊,請參閱在 Azure 容器應用程式中設定調整規則 (機器翻譯)。

  1. 在 Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在資源功能表上,選取 [設定] 下的 [縮放]。

  3. 在 [縮放] 頁面的 [縮放規則設定] 下方,變更下列值以符合您的案例需求:

    屬性 值 說明
    最小複本數 - 預設值:1
    - 最小值:0
    - 最大值:1000
    決定在任何指定時間允許修訂的複本數目下限。 此值會覆寫縮放規則,且必須小於複本數目上限。
    最大複本數 - 預設值:30
    - 最小值:0
    - 最大值:1000
    決定在任何指定時間允許修訂的複本數目上限。 此值會覆寫縮放規則。
  4. 完成時,請選取 [儲存]。

在 Azure 入口網站中控制邏輯應用程式的輸入流量

您可以啟用輸入,將邏輯應用程式公開到公用網站、虛擬網路,以及環境中的其他邏輯應用程式。 Azure 會透過一組規則來強制執行輸入設定,以控制將外部和內部流量路由傳送至邏輯應用程式。 當您啟用輸入時,您不需要建立 Azure Load Balancer、公用 IP 位址或任何其他 Azure 資源,來啟用傳入的 HTTP 要求或 TCP 流量。 如需詳細資訊,請參閱容器應用程式中的輸入。

附註

當您啟用輸入時,所有流量預設都會導向至您的最新修訂。 前往 [修訂管理] 頁面以變更流量設定。

  1. 在資源功能表的 [設定] 下方,選取 [輸入]。

  2. 在 [輸入] 頁面的 [輸入] 旁,選取 [啟用] 方塊。

  3. 根據您的案例,設定其餘選項。

    如需詳細資訊,請參閱下列文件:

設定受控 API 連線的驗證

目前,混合邏輯應用程式中的託管 API 連線並不支援管理身份認證。 要驗證這些連線,您必須使用 Microsoft Entra ID 自行建立應用程式註冊。 接著你可以將這個應用程式註冊的值作為環境變數加入你的標準邏輯應用程式資源中。 此認證模型需要連接 Microsoft Entra ID。

使用 Microsoft Entra ID 建立應用程式註冊

Azure 入口網站

  1. 在 Azure 入口網站中,遵循快速入門:使用 Microsoft 身分識別平台註冊應用程式的指示來建立應用程式註冊。

  2. 建立完成後,在入口網站中找出新的應用程式註冊。

  3. 在資源功能表中,選取 [概觀],然後儲存下列值,以便稍後用於連線驗證:

    • 用戶端識別碼
    • 租用戶識別碼
  4. 在資源側邊欄,選擇 憑證與秘密>客戶端秘密>新客戶端秘密。

  5. 建立客戶端秘密,並立即儲存秘密的 值。 離開頁面後,該數值不會再出現。

  6. 針對物件識別碼,請遵循下列步驟:

    1. 在 [概觀] 頁面上,選取您的應用程式註冊適用的 [本機目錄中受控的應用程式] 連結,如下所示:

      螢幕擷取畫面顯示了應用程式註冊以及本機目錄中受控應用程式的選定連結。

    2. 在開啟的頁面上,複製並儲存 [物件識別碼] 值:

      螢幕擷取畫面顯示含有所選物件識別碼的應用程式註冊。

  7. 現在,將儲存的值作為環境變數新增到標準邏輯應用程式資源。

Azure CLI

  1. 若要建立應用程式註冊及其服務主體,且不指派 Azure 角色,請執行以下指令:

    az ad sp create-for-rbac \
       --name <app-registration-name> \
       --skip-assignment
    
  2. 從指令輸出中,將 password、tenant 和 appId 的值分別儲存為用戶端 ID、用戶端密碼和租用戶 ID。 客戶端秘密只會出現在指令輸出中。

  3. 取得服務主體物件識別碼:

    az ad sp show \
       --id <client-ID> \
       --query id \
       --output tsv
    
  4. 現在,將儲存的值作為環境變數新增到標準邏輯應用程式資源。

欲了解更多資訊,請參閱:

將應用程式註冊值新增至標準邏輯應用程式

  1. 在 Azure 入口網站中,移至您的標準邏輯應用程式資源。

  2. 在資源功能表的 [設定] 下方,選取 [容器],然後選取 [環境變數] 索引標籤。

    如需應用程式設定和主機設定的詳細資訊,請參閱編輯應用程式設定和主機設定。

  3. 在工具列上,選取 [編輯和部署]。

  4. 在 [編輯容器] 窗格中,選取 [環境變數],然後選取 [新增]。

  5. 新增下表中的每一個環境變數與指定值:

    環境變數 值
    WORKFLOWAPP_AAD_CLIENTID < 我的用戶端識別碼>
    WORKFLOWAPP_AAD_OBJECTID (工作流程應用程式_AAD_物件識別碼) < 我的物件識別碼>
    WORKFLOWAPP_AAD_TENANTID < 我的租戶識別碼>
  6. 完成時,請選取 [儲存]。

儲存並引用用戶端密鑰

把客戶端秘密存成秘密,存放在你的 Logic App 資源中。 從 WORKFLOWAPP_AAD_CLIENTSECRET 環境變數引用該秘密值。

Important

請在密鑰到期前加以輪換。

  1. 在 Azure 入口網站中,前往您的邏輯應用程式資源。

  2. 在 Logic App 側邊欄的 設定裡,選擇 秘密。

  3. 在工具列上,選取 [新增]。

  4. 在 新增秘密 面板中,提供以下資訊,然後選擇 新增:

    Key 值
    WORKFLOWAPP_AAD_CLIENTSECRET < 我的客戶端密碼>
  5. 在 Logic App 側邊欄的設定中,選擇容器,然後選擇環境變數標籤。

  6. 在工具列上,選取 [編輯和部署]。

  7. 新增 WORKFLOWAPP_AAD_CLIENTSECRET 環境變數,選擇參考祕密的選項,然後選擇你所建立的祕密。

  8. 完成時,請選取 [儲存]。

已知問題和疑難排解

下節說明目前已知問題,以及常見問題疑難排解指引。

一般環境設定或入口網站部署問題

若要協助您診斷和偵錯環境設定或入口網站部署失敗的問題,您可以嘗試執行針對混合式部署選項提供的 troubleshoot.ps1 PowerShell 腳本。

  1. 移至 Azure Logic Apps GitHub 存放庫: scripts/hybrid 資料夾。

  2. 將 troubleshoot.ps1 檔案複製到與邏輯應用程式部署位於相同內部部署位置的資料夾。

  3. 使用 PowerShell 執行腳本。

已啟用 Arc 的 Kubernetes 叢集

在少數情況下,您可能會注意到叢集中的磁碟使用量很高。 若要避免此問題,請向外延展節點集取或新增自動調整功能。

函式主機未執行

部署標準邏輯應用程式之後,請確認應用程式已正確執行。

  1. 在 Azure 入口網站中,開啟邏輯應用程式資源。

  2. 在資源功能表上,選取 [概觀]。

  3. 在 [概觀] 頁面的 [應用程式 URL] 欄位旁,選取資源 URL。

    如果應用程式正確執行,即會開啟瀏覽器視窗,並顯示下列訊息:

    螢幕擷取畫面顯示瀏覽器和作為網站執行的邏輯應用程式。

    否則,如果你的應用程式有任何故障,請檢查你的 Kubernetes Pods 是否正常運作。 確保 kubectl 使用您叢集的內容,然後執行下列指令:

    kubectl get ns
    kubectl get pods -n logicapps-aca-ns
    kubectl describe pod {logic-app-pod-name} -n logicapps-aca-ns 
    

    如需詳細資訊,請參閱下列文件:

Cluster 容量不夠

如果您執行前一個命令並收到類似下列範例的警告,表示您的叢集沒有足夠的節點進行處理:

Warning: FailedScheduling  4m52s (x29 over 46m)  default-scheduler  0/2 nodes are available: 2 Too many pods. preemption: 0/2 nodes are available: 2 No preemption victims found for incoming pod.

對於 AKS,請增加節點數量,並依照以下步驟設定自動縮放:

  1. 在 Azure 入口網站中,前往您的 Kubernetes 服務執行個體。

  2. 在執行個體功能表的 [設定] 下方,選取 [節點集區]。

  3. 在 [節點工具] 頁面的工具列上,選取 [+新增節點集區]。

如需詳細資訊,請參閱下列文件:

對於 OpenShift 或 RKE2,請使用你 Kubernetes 發行版所支援的程序來增加容量。

未安裝 SMB 容器儲存體介面 (CSI) 驅動程式

執行先前的 kubectl describe pod 命令之後,如果出現下列警告,請確認是否已正確安裝 SMB 檔案共用的 CSI 驅動程式:

Warning FailedScheduling 5m16s (x2 over 5m27s)  default-scheduler 0/14 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/14 nodes are available: 14 Preemption is not helpful for scheduling.

Normal NotTriggerScaleUp 9m49s (x31 over 14m) cluster-autoscaler pod didn't trigger scale-up: 3 pod has unbound immediate PersistentVolumeClaims

要確認,請執行以下指令:

kubectl get csidrivers

如果結果沒有包含 smb.csi.k8s.io,請依照發行版專屬的指示 安裝 SMB 驅動程式。

要檢查 CSI SMB 驅動單元狀態,請執行以下指令:

kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=csi-driver-smb" --watch