使用运行状况检查在 Azure 逻辑应用中监视标准工作流的运行状况(预览版)

适用于: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. 在逻辑应用菜单上,选择“诊断并解决问题”

  3. 诊断并解决问题页的搜索框中,找到并选择“运行状况检查功能”

    屏幕截图显示了 Azure 门户、诊断和解决问题页、输入了运行状况检查的搜索框,以及运行状况检查功能的选定选项。

  4. 运行状况检查功能部分中,选择“查看解决方案”

  5. 在打开的窗格中,选择“配置和启用运行状况检查功能”

  6. 在“运行状况检查”选项卡的“运行状况检查”旁边,选择“启用”

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

    /api/{workflow-name}/triggers/{request-trigger-name}/invoke?api-version=2022-05-01

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

  9. 在逻辑应用资源中,按照以下步骤更新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 容器等)的权限或访问权限。

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

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

如果标准逻辑应用使用名为“工作流服务计划”且未托管在应用服务环境中的托管选项,请确保打开“运行时规模监视”,并且“始终就绪实例数”至少设置为 1。

  1. Azure 门户中,找到并打开你的逻辑应用(如果尚未打开)。

  2. 在逻辑应用菜单上的“设置”下,选择“配置” 。

  3. 在“工作流运行时设置”选项卡上,选择“运行时缩放监视”旁边的“启用”。

  4. 在“配置”页面工具栏上,选择“保存”。

  5. 在逻辑应用菜单的“设置”下,选择“横向扩展(应用服务计划)”

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