次の方法で共有

使用运行状况检查监视 Azure 逻辑应用标准工作流的状态

适用于:Azure 逻辑应用(标准)

为了帮助标准逻辑应用工作流以高可用性和性能运行,请在逻辑应用上设置运行状况检查功能以监视工作流运行状况。 通过提供以下优势,此功能可确保应用保持复原能力:

  • 主动监视,以便在问题影响客户之前找到并解决它们。

  • 从 Azure 的负载均衡器中删除不正常的实例以提高可用性。

  • 通过替换不正常的实例自动恢复。

运行状况检查在 Azure 逻辑应用中如何工作?

运行状况检查是一项 Azure 应用服务平台功能,可将请求从不正常的实例重定向,并在这些实例保持不正常时替换它们。 对于标准逻辑应用,可以指定为此目的和应用服务平台创建的“运行状况”工作流的路径,以定期执行 ping 操作。 例如,以下示例显示了基本最低工作流:

屏幕截图显示了一个标准逻辑应用工作流,用于作为健康状况工作流。

启用运行状况检查后,应用服务平台会按 1 分钟间隔对所有逻辑应用实例的指定工作流路径执行 ping 操作。 如果逻辑应用需要横向扩展,则 Azure 会立即新建实例。 应用服务平台再次对工作流路径执行 ping 操作,以确保新实例准备就绪。

如果实例上运行的工作流在 10 个请求后未响应 ping,则应用服务平台会确定该实例不正常,并从 Azure 的负载均衡器中删除该特定逻辑应用的实例。 您可以指定失败请求的数量以确定实例是否不健康,最低需要两个请求。 有关替代默认行为的详细信息,请参阅配置:使用运行状况检查监视应用服务实例

运行状况检查删除不正常的实例后,该功能会继续对实例执行 ping 操作。 如果实例使用正常状态代码(包括 200 到 299)做出响应,则运行状况检查会将实例返回到负载均衡器。 但是,如果实例在一小时内保持不正常,则运行状况检查会将实例替换为新的实例。 有关详细信息,请参阅应用服务利用运行状况检查进行哪些方面的监视

先决条件

  • Azure 帐户和订阅。 如果没有订阅,可以注册 Azure 帐户

  • 具有以下属性的标准逻辑应用资源:

    • 已扩展到两个或更多实例的应用服务计划。

    • 专门执行健康检查以及以下元素的“健康”工作流:

      • 从名为收到 HTTP 请求时请求触发器开始。

      • 包括名为响应请求操作。 将此操作设置为返回包含在200299之间的状态代码。

      还可以选择让此工作流运行其他检查,以确保依赖服务可用且按预期工作。 最佳做法是确保运行状况检查路径监视工作流中的关键组件。 例如,如果应用依赖于数据库和消息传送系统,请确保健康检查能够访问这些组件。

限制

  • 指定的路径长度必须少于 65 个字符。

  • 指定路径中的更改在运行状况检查时会导致逻辑应用程序重启。 为了减少对生产应用的影响,请设置和使用部署槽位

  • 运行状况检查不遵循 302 状态代码的重定向。 因此,请避免重定向,并确保选择应用中存在的路径。

设置运行状况检查

  1. Azure 门户中,转到标准逻辑应用资源。

  2. 在逻辑应用菜单上的 “监视”下,选择“ 运行状况检查”。 在 “运行状况检查 ”页上的“ 运行状况检查 ”选项卡上,选择“ 启用”。

    屏幕截图显示了 Azure 门户、运行状况检查页和“启用”选项。

  3. 在“运行状况探测路径”的“路径”框中,输入工作流的有效 URL 路径,例如

    /api/<workflow-name>/triggers/<request-trigger-name>/invoke?api-version=2022-05-01

  4. 保存所做更改。 在工具栏上选择“保存”。

  5. 在逻辑应用资源中,按照以下步骤更新host.json文件:

    1. 在逻辑应用菜单的“开发工具”下,选择“高级工具”>,然后点击转到

    2. 在“KuduPlus”工具栏上,打开“调试控制台”菜单,然后选择“CMD”

    3. 浏览到site/wwwroot文件夹,然后在host.json文件旁边选择“编辑”

    4. host.json文件编辑器中,添加Workflows.HealthCheckWorkflowName属性和运行状况工作流名称以启用运行状况检查身份验证和授权,例如:

      "extensions": {
          "workflow": {
              "settings": {
                  "Workflows.HealthCheckWorkflowName" : "<workflow-name>"
              }
          }
      }
      
    5. 完成后,选择“保存”。

故障排除

设置健康路径后,我的健康工作流不会触发。

  1. 在逻辑应用菜单上,选择“诊断并解决问题”

  2. 在“故障排除类别”下,选择“可用性和性能”

    屏幕截图显示了 Azure 门户、诊断和解决问题页,以及可用性和性能的选定选项。

  3. 查找并查看状态代码部分。

    如果状态代码为401,请检查以下项:

    • 确认Workflows.HealthCheckWorkflowName属性和您的运行状况工作流名称是否正确出现。

    • 确认指定的路径与工作流和请求触发器名称匹配。

常见健康状况问题

我的逻辑应用资源没有任何工作流,但资源仍横向扩展到多个实例,这会产生成本。

如果逻辑应用资源不正常,或者当资源无法访问关联的存储帐户时,可能会发生此行为。 尝试检查存储帐户是否有阻止访问的网络设置,或者你是否有阻止访问的网络防火墙策略。

我的逻辑应用资源具有工作流,但未运行或运行频率不高。 但是,资源仍会横向扩展到多个实例,这会带来成本。

  1. 检查资源是否可以访问关联的存储帐户。

    例如,存储帐户是否有阻止访问的网络设置? 你是否有阻止访问的网络防火墙策略?

  2. 如果工作流以基于服务提供程序的触发器开头,请确保触发器按预期成功工作。

    • 基于服务提供商的失败触发机制可能会导致不必要的扩展,从而显著增加成本。

      例如,一个常见的失误是设置触发器而不向逻辑应用授予对目标(例如服务总线队列、存储 blob 容器等)的权限或访问权限。

    • 请确保随时监视此类触发器,以便可以及时检测和修复任何问题。

我的工作流间歇性地停止处理消息几个小时,但其他大多数时间运行良好。

如果标准逻辑应用使用名为 “工作流服务计划”的托管选项,请确保启用 运行时缩放监视 ,并将 Always Ready 实例 设置为至少 1

  1. Azure 门户中,打开逻辑应用。

  2. 在逻辑应用边栏的 “设置”下,选择“ 配置”。

  3. “工作流运行时设置 ”选项卡上的 “运行时缩放监视”旁边,选择“ 打开”,然后选择“ 应用”。

  4. 在逻辑应用边栏上的 “应用服务计划”下,选择“ 横向扩展”。

  5. 在“应用横向扩展”下,确保“始终就绪实例数”值未设置为 0。

如果标准逻辑应用托管在应用服务环境中,请确保 已启用 Always on

  1. Azure 门户中,找到并打开逻辑应用。

  2. 在逻辑应用边栏的 “设置”下,选择“ 配置”。

  3. “常规设置 ”选项卡上,选择 “始终 打开”以启用,然后选择“ 应用”。