为 Azure 容器应用中托管的持久任务 SDK 应用配置自动缩放(预览版)

可以在使用 Durable Task Scheduler 的容器应用中实现自动缩放。 自动缩放通过适应不断变化的需求来维护长时间运行的工作流的可靠性和可伸缩性,而无需手动干预。

通过设置应用程序副本的部署范围来控制自动缩放,以响应触发的业务流程、活动或实体。 缩放程序动态调整该范围内的容器应用副本数,使解决方案能够处理工作负荷中的峰值,并防止资源耗尽。

注释

使用 Durable Task SDK 构建并在 Azure 容器应用中托管的应用支持自动缩放。

配置自动缩放程序

可以通过 Azure 门户、Bicep 模板和 Azure CLI 设置自动缩放程序配置。

Azure 门户中缩放程序最小和最大副本配置的屏幕截图。

Azure 门户中与缩放器相关的持久任务计划程序配置的屏幕截图。

领域 DESCRIPTION 示例:
副本数下限 任何给定时间允许容器修订的最小副本数。 1
副本数上限 任何给定时间允许容器修订的最大副本数。 10
端点 缩放程序连接到的持久任务计划程序终结点。 https://dts-ID.chinanorth.durabletask.io
maxConcurrentWorkItemsCount 作为事件调度到计算的最大并发工作项数量,例如告知计算运行业务流程。 1
taskhubName 连接到计划程序的任务中心的名称。 taskhub-ID
工作项类型 正在调度的工作项类型。 选项包括业务流程、活动或实体。 统筹
托管标识 链接到计划程序和任务中心资源的用户分配或系统分配的托管标识。 确保选中“ 使用托管标识进行身份验证 ”复选框。 someone@example.com

用样品进行实验

Azure 容器应用示例中的自动缩放示例中,使用 Azure 开发人员 CLI 为使用 .NET Durable Task SDK 构建并在 Azure 容器应用中托管的容器应用实现自动缩放。 该示例使用函数链模式展示业务流程。

注释

尽管此示例使用 Durable Task .NET SDK,但自动缩放与语言无关。

先决条件

配置你的环境

  1. 克隆Azure-Samples/Durable-Task-Scheduler目录。

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. 使用 Azure 开发人员 CLI 向 Azure 进行身份验证。

    azd auth login
    

使用 Azure 开发人员 CLI 部署解决方案

  1. 导航到 AutoscalingInACA 示例目录。

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. 预配资源并部署应用程序:

    azd up
    
  3. 当终端中出现提示时,请提供以下参数。

    参数 DESCRIPTION
    环境名称 为保存所有 Azure 资源而创建的资源组的前缀。
    Azure 位置 资源的 Azure 位置。
    Azure 订阅 资源的 Azure 订阅。

    此过程可能需要一段时间才能完成。 完成 azd up 命令后,CLI 输出将显示两个用于监视部署进度的 Azure 门户链接。 输出还演示了如何运行 azd up

    • 使用 ./infra 通过 azd provision 目录中提供的 Bicep 文件创建和配置所有必要的 Azure 资源。 Azure Developer CLI 预配这些资源后,你可以通过 Azure 门户访问这些资源。 用于预配 Azure 资源的文件包括:
      • main.parameters.json
      • main.bicep
      • 按功能组织的 app 资源目录
      • 一个 core 参考库,其中包含 azd 模板使用的 Bicep 模块
    • 使用 azd deploy 部署代码

    预期输出

    Packaging services (azd package)
    
    (✓) Done: Packaging service client
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    (✓) Done: Packaging service worker
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time.
    
    Subscription: SUBSCRIPTION_NAME (SUBSCRIPTION_ID)
    Location: China North 3
    
     You can view detailed progress in the Azure Portal:
     https://portal.azure.cn/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%SUBSCRIPTION_ID%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2FCONTAINER_APP_ENVIRONMENT
    
     (✓) Done: Resource group: GENERATED_RESOURCE_GROUP (1.385s)
     (✓) Done: Virtual Network: VNET_ID (862ms)
     (✓) Done: Container Apps Environment: GENERATED_CONTAINER_APP_ENVIRONMENT (54.125s)
     (✓) Done: Container Registry: GENERATED_REGISTRY (1m27.747s)
     (✓) Done: Container App: SAMPLE_CLIENT_APP (21.39s)
     (✓) Done: Container App: SAMPLE_WORKER_APP (24.136s)   
    
    Deploying services (azd deploy)
    
     (✓) Done: Deploying service client
     - Endpoint: https://SAMPLE_CLIENT_APP.chinanorth3.azurecontainerapps.io/
    
     (✓) Done: Deploying service worker
     - Endpoint: https://SAMPLE_WORKER_APP.chinanorth3.azurecontainerapps.io/
    
    
    SUCCESS: Your up workflow to provision and deploy to Azure completed in 10 minutes 34 seconds.   
    

确认部署是否成功

在 Azure 门户中,验证业务流程是否成功运行。

  1. 从终端输出复制资源组名称。

  2. 登录到 Azure 门户 并搜索该资源组名称。

  3. 在资源组概述页中,单击客户端容器应用资源。

  4. 选择“ 监视>日志流”。

  5. 确认客户端容器正在记录函数链任务。

    Azure 门户中客户端容器日志流的屏幕截图。

  6. 导航回资源组页以选择 worker 容器。

  7. 选择“ 监视>日志流”。

  8. 确认辅助角色容器正在记录函数链任务。

    Azure 门户中工作容器日志流的屏幕截图。

了解自定义缩放工具

此示例包含配置文件 azure.yaml 。 运行 azd up后,已将整个示例解决方案部署到 Azure,包括容器应用的自定义缩放程序,该缩放程序根据 Durable Task Scheduler 的工作负荷自动缩放。

自定义缩放程序:

  • 监视任务中心内挂起的业务流程数。
  • 随着工作负载的增加,增加辅助角色副本的数量。
  • 在负载减少时缩减。
  • 通过将容量与需求相匹配来提供高效的资源利用率。

确认是否已配置缩放程序

验证自动缩放是否在已部署的解决方案中正常运行。

  1. 在 Azure 门户中,访问您的工作应用。

  2. 在左侧菜单中,单击“应用程序”>“修订和副本”

  3. 单击“ 副本 ”选项卡,验证应用程序是否横向扩展。

  4. 在左侧菜单中,单击 “应用程序>缩放”。

  5. 单击缩放名称以查看缩放程序设置。