你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure 逻辑应用(标准)
对于需要使用、控制和管理自己的基础结构的方案,可以使用 Azure 逻辑应用中的混合部署模型创建标准逻辑应用工作流。 此模型为需要本地处理、存储和网络访问的部分连接的环境提供生成和托管集成解决方案的功能。 基础结构可以包括本地系统、私有云和公有云。 使用混合模型时,标准逻辑应用工作流由 Azure 逻辑应用运行时提供支持,该运行时作为 Azure 容器应用扩展的一部分托管在本地。
有关介绍标准逻辑应用工作流在部分连接的环境中托管和运行位置的体系结构概述,请参阅为标准逻辑应用的混合部署设置基础设施要求。
本操作指南介绍如何在为托管应用设置必要的本地资源后,使用混合部署模型创建和部署标准逻辑应用工作流。
限制
以下部分介绍混合部署选项的限制:
限度 | 说明 |
---|---|
支持的 Azure 区域 | 混合部署目前可用,仅在以下 Azure 区域中受支持: - 美国中部 -东亚 - 美国东部 - 美国中北部 -东南亚 - 瑞典中部 - 英国南部 - 西欧 - 美国西部 |
使用断开连接的运行时进行数据日志记录 | 在部分连接模式下,Azure 逻辑应用运行时最多可以保持断开连接 24 小时,并且仍保留数据日志。 但是,超过此持续时间的任何日志记录数据可能会丢失。 |
单租户 Azure 逻辑应用(标准)和相关 Azure 服务中不支持的功能 | - 部署槽位 - Azure 业务流程跟踪 - Azure 门户中 支持 + 故障排除 下的资源运行状况 - 连接器操作的托管标识身份验证。 Azure Arc-enabled Kubernetes 群集目前不支持对托管 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 Arc 的 Azure Kubernetes 服务群集
- 用于本地存储工作流运行历史记录、输入和输出的 SQL 数据库,用于处理
- 用于本地存储工作流使用的项目的服务器消息块 (SMB) 文件共享
为了满足这些要求,请设置这些本地资源以支持标准逻辑应用的混合部署。
若要在 Visual Studio Code 中工作,需要适用于 Visual Studio Code 的 Azure 逻辑应用(标准)扩展以及相关先决条件。
提示
如果有新的 Visual Studio Code 安装,请在尝试部署到自己的基础结构之前,确认可以在本地运行基本标准工作流。 此测试运行有助于隔离标准工作流项目中可能存在的任何错误。
创建标准逻辑应用
按照以下步骤创建用于混合部署的标准逻辑应用:
在 Azure 门户搜索框中,输入“逻辑应用”,,并选择“逻辑应用”。
在“逻辑应用”页工具栏上,选择“添加”。
在“创建逻辑应用”页面上的“标准”下,选择“混合”。
在“创建逻辑应用(混合)”页面上,提供以下信息:
properties 需要 值 说明 订阅 是 <Azure-subscription-name> Azure 订阅名称。
此示例使用“即用即付”。资源组 是 <Azure-resource-group-name> 你在其中创建混合应用和相关资源的 Azure 资源组。 该名称在各个区域中必须独一无二,并且只能包含字母、数字、连字符 (-)、下划线 (_)、括号 (()) 和句点 (.)。
此示例创建一个名为 Hybrid-RG 的资源组。逻辑应用名称 是 <logic-app-name> 逻辑应用名称,在区域中必须是唯一的,并且只能包含小写字母、数字或连字符 (-)。
此示例使用 my-logic-app-hybrid。区域 是 <Azure-region> 已启用 Azure Arc 的 AKS 上的 Azure 容器应用支持的 Azure 区域。
此示例使用美国东部。容器应用连接的环境 是 <connected-environment-name> 为逻辑应用创建为部署环境的 Arc-enabled Kubernetes 群集。 有关详细信息,请参阅教程:在 Azure Arc-enabled Kubernetes 上启用 Azure 容器应用。 配置存储设置 是 启用或禁用 继续访问“创建逻辑应用(混合)”页面上的“存储”选项卡。 以下示例显示了 Azure 门户中的逻辑应用创建页面以及示例值:
在“存储”页面上,提供有关之前设置的存储提供程序和 SMB 文件共享的以下信息:
properties 需要 值 说明 SQL 连接字符串 是 <sql-server-connection-string> 以前保存的 SQL Server 连接字符串。 有关详细信息,请参阅创建 SQL Server 存储提供程序。 主机名 是 <file-share-host-name> SMB 文件共享的主机名。 文件共享路径 是 <file-share-path> SMB 文件共享的文件共享路径。 用户名 是 <file-share-user-name> SMB 文件共享的用户名。 密码 是 <file-share-password> SMB 文件共享的密码。 完成后,选择“查看 + 创建”。 确认提供的信息,然后选择“创建”。
Azure 完成部署后,选择“转到资源”。
Azure 门户将打开逻辑应用资源,例如:
在逻辑应用资源菜单上的 “工作流”下,选择“ 工作流”。
在“工作流”页面工具栏上,选择“添加”以添加空的有状态或无状态工作流。
设计器打开后,通过添加触发器和操作来生成工作流。
有关详细信息,请参阅使用触发器和操作构建工作流。
混合部署的版本控制
使用混合托管选项的标准逻辑应用会在将更改保存到子工作流时自动创建新的修订,这是 Azure 容器应用版本控制概念。 此修订可能需要一些时间才能生效,这意味着保存任何更改后,可能需要稍等片刻,再测试工作流。
如果更改仍未显示在工作流中,则可以检查修订是否存在:
在 Azure 门户中打开资源。 在资源菜单上的“修订”下,选择“修订和副本”。
在“修订和副本”页面的“活动修订”选项卡上,检查新修订是否显示在列表中。
有关更多信息,请参阅以下资源:
设置增强的遥测功能或使用 OpenTelemetry 来监控性能
可以在 Application Insights 中为标准逻辑应用设置增强的遥测收集,然后在工作流完成运行后查看收集的数据。 此功能提供更简单的体验来获取有关工作流的见解,并更好地控制数据源中的筛选事件,这有助于降低存储成本。 这些改进侧重于实时性能指标,通过指标可以了解系统运行状况和行为。
对于部分连接和本地方案,可以将标准逻辑应用设置为根据为特定环境定义的 OpenTelemetry 支持的应用设置来发出遥测。 默认情况下,此遥测数据将发送到 Application Insights。 有关详细信息,请参阅 在 Azure 逻辑应用中为标准工作流启用 Application Insights 的增强遥测功能。
在 Azure 门户中更改 vCPU 和内存分配
可以编辑标准逻辑应用资源的 vCPU 和内存设置。 这些更改会影响标准逻辑应用工作负荷的 计费费用 。
在 Azure 门户中,打开你的标准逻辑应用资源。
在资源菜单上的“设置”下,选择“容器”。
在“容器”页面工具栏上,选择“编辑并部署”,这将打开“编辑容器”窗格。
在“属性”选项卡上的“容器资源分配”下,更改以下值以适应你的方案:
properties 值 说明 CPU 核心数 - 默认值:1
- 最小值:0.25
- 最大值:2确定要分配给容器实例的 vCPU 核心。 可将此值增加 0.25 个核心,直至达到最大值。 此逻辑应用的所有容器实例的总数限制为 2 个核心。 内存 - 默认值:2
- 最小值:0.1
- 最大值:4确定要分配给容器实例的内存容量(GiB)。 可将此值增大 0.1 GiB,直到最大值。 此逻辑应用的所有容器实例的总容量限制为 4 GiB。 完成后,选择“保存”。
在 Azure 门户中更改副本缩放
可以控制在响应触发器事件时部署的副本范围的自动缩放。 副本是逻辑应用资源修订或版本的新实例。 若要更改此范围的最小值和最大值,可以修改缩放规则以确定触发缩放的事件类型。 有关详细信息,请参阅在 Azure 容器应用中设置缩放规则。
在 Azure 门户中,打开你的标准逻辑应用资源。
在资源菜单上的“设置”下,选择“缩放”。
在“缩放”页面上的“缩放规则设置”下,更改以下值以适应你的方案:
properties 值 说明 副本数下限 - 默认值:1
- 最小值:0
- 最大值:1000确定在任何给定时间允许修订的最小副本数。 此值将替代缩放规则,并且必须小于最大副本数。 副本数上限 - 默认值:30
- 最小值:0
- 最大值:1000确定在任何给定时间允许修订的最大副本数。 此值替代缩放规则。 完成后,选择“保存”。
在 Azure 门户中控制逻辑应用的入站流量
可以通过启用入口,向公共 Web、虚拟网络和环境中的其他逻辑应用公开你的逻辑应用。 Azure 通过一组规则强制实施入口设置,这些规则可控制连接到逻辑应用的外部和内部流量的路由。 启用入口时,无需创建 Azure 负载均衡器、公共 IP 地址或任何其他 Azure 资源来启用传入 HTTP 请求或 TCP 流量。 有关详细信息,请参阅容器应用中的入口。
注意
启用入口时,默认情况下会将所有流量定向到最新修订。 转到“修订管理”页面以更改流量设置。
在资源菜单上的“设置”下,选择“入口”。
在“入口”页面上的“入口”旁边,选中“已启用”框。
根据方案配置剩余选项。
有关详细信息,请参阅以下文档:
为托管 API 连接设置身份验证
若要在 Azure Arc-enabled Kubernetes 群集上托管的标准逻辑应用工作流中对托管 API 连接进行身份验证,必须使用 Microsoft Entra ID 创建自己的应用注册。 然后,可以将此应用注册的值添加为标准逻辑应用资源中的环境变量,以改为对 API 连接进行身份验证。
使用 Microsoft Entra ID 创建应用注册
Azure 门户
在 Azure 门户中,按照快速入门:将应用程序注册到 Microsoft 标识平台来创建应用注册。
创建完成后,在门户中找到新的应用注册。
在资源菜单上,选择“概述”并保存以下值,稍后需要使用这些值进行连接身份验证:
- 客户端 ID
- 租户 ID
- 客户端机密
对于对象 ID,请执行以下步骤:
在“概述”页面上,选择“本地目录中的托管应用程序”链接进行应用注册,如下所示:
在打开的页面上,复制并保存“对象 ID”值:
现在,将保存的值作为环境变量添加到标准逻辑应用资源。
Azure 命令行接口 (CLI)
在这两个命令的输出中,查找并保存以下值,稍后需要使用这些值进行连接身份验证:
- 客户端 ID
- 对象 ID
- 租户 ID
- 客户端机密
现在,将保存的值作为环境变量添加到标准逻辑应用资源。
将应用注册值添加到标准逻辑应用
在Azure 门户中,转到标准逻辑应用资源。
在资源菜单上的“设置”下,选择“容器”,然后选择“环境变量”选项卡。
有关应用设置和主机设置的详细信息,请参阅编辑应用设置和主机设置。
在工具栏上,选择“编辑并部署”。
在“编辑容器”窗格中,选择“环境变量”,然后选择“添加”。
在下表中,添加具有指定值的每个环境变量:
环境变量 值 WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_OBJECTID <my-object-ID> WORKFLOWAPP_AAD_TENANTID <my-tenant-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret> 完成后,选择“保存”。
存储和引用客户端 ID 和客户端密码
可以将客户端 ID 和客户端密码值作为机密存储在逻辑应用资源中,然后改为在“环境变量”选项卡上引用这些值。
在 Azure 门户中,转到你的逻辑应用资源。
在资源菜单上的“设置”下,选择“机密”。
在工具栏上,选择 添加。
在“添加机密”窗格中,为每个机密提供以下信息,然后选择“添加”:
密钥 值 WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret>
已知问题和疑难解答
以下部分介绍当前已知问题和排查常见问题的指导。
常规环境设置或门户部署问题
为了帮助你诊断和调试环境配置或门户部署失败的问题,可以尝试运行为混合部署选项提供的 troubleshoot.ps1 PowerShell 脚本。
将 troubleshoot.ps1 文件复制到逻辑应用部署所在的同一本地位置的文件夹。
使用 PowerShell 运行脚本。
已启用 Arc 的 Kubernetes 群集
在极少数情况下,群集中的内存占用量可能会很高。 若要防止此问题,请横向扩展或为节点池添加自动缩放。
函数主机未运行
部署标准逻辑应用后,确认应用正常运行。
在 Azure 门户中,打开逻辑应用资源。
在资源菜单中,选择“概述”。
在“概述”页面上,在“应用程序 URL”字段旁边,选择资源 URL。
如果应用正常运行,浏览器窗口将打开并显示以下消息:
否则,如果应用出现任何故障,请检查 AKS Pod 是否正常运行。 对于 Windows PowerShell,请运行以下命令:
az aks get-credentials {resource-group-name} --name {aks-cluster-name} --admin kubectl get ns kubectl get pods -n logicapps-aca-ns kubectl describe pod {logic-app-pod-name} -n logicapps-aca-ns
有关详细信息,请参阅以下文档:
群集没有足够的节点
如果运行了上一个命令并收到类似于以下示例的警告,则说明群集没有足够的节点进行处理:
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.
若要增加节点数并设置自动缩放,请执行以下步骤:
在 Azure 门户中,转到 Kubernetes 服务实例。
在实例菜单上的“设置”下,选择“节点池”。
在“节点工具”页面工具栏上,选择“+ 添加节点池”。
有关详细信息,请参阅以下文档:
- 在 Azure Kubernetes 服务 (AKS) 中创建群集的节点池
- 在 Azure Kubernetes 服务 (AKS) 中管理群集的节点池
- Azure Kubernetes 服务 (AKS) 中的群集自动缩放概述
- 使用 Azure Kubernetes 服务 (AKS) 中的群集自动缩放程序
未安装 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
若要确认,请从 Windows PowerShell 窗口运行以下命令:
kubectl get csidrivers
如果显示的结果列表不包含 smb.csi.k8s.io,请从 Windows 命令提示符处运行以下命令:
helm repo add csi-driver-smb
helm repo update
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.15.0
若要检查 CSI SMB 驱动程序 Pod 状态,请从 Windows 命令提示符运行以下命令:
kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=csi-driver-smb" --watch
有关详细信息,请参阅在 Azure Kubernetes 服务 (AKS) 中启用容器存储接口 (CSI) 驱动程序。