在 Azure 容器应用中为 Durable Task SDK 应用配置自动缩放

在 Azure 容器应用 中托管 Durable Task SDK 应用时,可以配置自动缩放,以便平台根据业务流程、活动或实体工作负荷自动调整副本数。

在这篇文章中,你将学会如何:

  • 为容器应用设置最小和最大副本计数。
  • 添加响应 Durable Task Scheduler 工作项的规模规则。
  • 使用Azure开发人员 CLI 部署和验证自动缩放示例。

注意

使用 Durable Task SDK 构建并在 Azure 容器应用中托管的应用支持自动缩放。 此功能使用 azure-durabletask-scheduler KEDA 缩放器。

Important

minReplicas设置为0启用缩放到零,这样可以节省空闲时的成本,但在新的工作项到达时引入冷启动延迟。 minReplicas如果工作负荷对延迟敏感,则设置为1或更高。

配置自动缩放程序

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

  1. Azure 门户中,导航到容器应用。

  2. 在左侧菜单中,选择 “应用程序>缩放”。

  3. 为修订设置 最小副本最大副本 值。

    Azure 门户中缩放器的最小和最大副本配置的截图。

  4. 选择 “添加” 以创建新的缩放规则。 将 “类型 ”设置为 “自定义 ”并配置“持久任务计划程序”字段。

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

  5. 确保选中“使用托管标识进行身份验证”复选框,然后选择与你的计划程序和任务中心资源相关联的标识。

  6. 选择“保存”

领域 Description 示例
副本数下限 任何给定时间允许容器修订的最小副本数。 1
副本数上限 任何给定时间允许容器修订的最大副本数。 10
终结点 缩放程序连接到的持久任务计划程序终结点。 https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount 单个副本同时处理的最大工作项数。 较低的值会导致缩放程序更快地添加副本。 1从 CPU 密集型工作开始;增加 I/O 绑定工作负荷。 1
taskhubName 连接到计划程序的任务中心的名称。 taskhub-ID
工作项类型 正在调度的工作项类型。 选项包括 OrchestrationActivityEntity Orchestration
托管标识 链接到计划程序和任务中心资源的用户指定或系统指定的托管身份。 /subscriptions/<SUB_ID>/resourceGroups/<RG>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<IDENTITY_NAME>

教程:部署自动缩放容器应用

已在现有应用上配置自动缩放? 可以跳过本部分。 如果需要动手演练,请按照以下步骤使用 Azure 开发人员 CLI 在 Azure 容器应用 示例中部署 Autoscaling。 此示例部署.NET Durable Task SDK 应用,该应用使用函数链模式,并包括预配置的 KEDA 缩放程序。

注意

尽管此示例使用 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. 初始化Azure开发人员 CLI 环境(只需要第一次):

    azd init
    
  3. 预配资源并部署应用程序:

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

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

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

    • 使用位于 ./infra 目录中的 Bicep 文件,通过 azd provision 创建和配置所有必要的 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. 选择“ 副本 ”选项卡,验证应用程序是否横向扩展。

    在 Azure portal 中显示缩放副本的修订和副本页面的截图。

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

  5. 选择缩放规则名称以查看缩放器设置。