在 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 设置自动缩放程序配置。
在 Azure 门户中,导航到容器应用。
在左侧菜单中,选择 “应用程序>缩放”。
为修订设置 最小副本 和 最大副本 值。
选择 “添加” 以创建新的缩放规则。 将 “类型 ”设置为 “自定义 ”并配置“持久任务计划程序”字段。
确保选中“使用托管标识进行身份验证”复选框,然后选择与你的计划程序和任务中心资源相关联的标识。
选择“保存”。
| 领域 | Description | 示例 |
|---|---|---|
| 副本数下限 | 任何给定时间允许容器修订的最小副本数。 | 1 |
| 副本数上限 | 任何给定时间允许容器修订的最大副本数。 | 10 |
| 终结点 | 缩放程序连接到的持久任务计划程序终结点。 | https://dts-ID.centralus.durabletask.io |
| maxConcurrentWorkItemsCount | 单个副本同时处理的最大工作项数。 较低的值会导致缩放程序更快地添加副本。
1从 CPU 密集型工作开始;增加 I/O 绑定工作负荷。 |
1 |
| taskhubName | 连接到计划程序的任务中心的名称。 | taskhub-ID |
| 工作项类型 | 正在调度的工作项类型。 选项包括 Orchestration、Activity 或 Entity。 |
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,但自动缩放与语言无关。
先决条件
- .NET 8 SDK 或更高版本
- Docker (用于生成映像)
- Azure 开发者命令行界面 (CLI)
配置您的环境
克隆
Azure-Samples/Durable-Task-Scheduler目录。git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git使用 Azure 开发人员 CLI 进行 Azure 身份验证。
azd auth login
使用 Azure 开发人员 CLI 部署解决方案
导航到
AutoscalingInACA示例目录。cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA初始化Azure开发人员 CLI 环境(只需要第一次):
azd init预配资源并部署应用程序:
azd up当终端中出现提示时,请提供以下参数。
参数 Description 环境名称 为保存所有 Azure 资源而创建的资源组的前缀。 Azure 位置 您资源的 Azure 位置。 Azure订阅 用于您的资源的 Azure 订阅。 此过程可能需要一段时间才能完成。 完成
azd up命令后,CLI 输出将显示两个用于监视部署进度的 Azure 门户链接。 输出还演示了如何使用azd up:- 使用位于
./infra目录中的 Bicep 文件,通过azd provision创建和配置所有必要的 Azure 资源。 Azure Developer CLI 预配这些资源后,你可以通过 Azure 门户访问这些资源。 用于预配 Azure 资源的文件包括:main.parameters.jsonmain.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门户中,验证业务流程是否成功运行。
从终端输出复制资源组名称。
登录到 Azure 门户 并搜索该资源组名称。
在资源组概述页中,单击客户端容器应用资源。
选择“ 监视>日志流”。
确认客户端容器正在记录函数链任务。
导航回资源组页以选择
worker容器。选择“ 监视>日志流”。
确认辅助角色容器正在记录函数链任务。
了解自定义缩放器
此示例包含配置文件 azure.yaml 。 运行 azd up后,已将整个示例解决方案部署到 Azure,包括容器应用的自定义缩放程序,该缩放程序根据 Durable Task Scheduler 的工作负荷自动缩放。
自定义缩放程序:
- 监视任务中心内挂起的业务流程数。
- 随着工作负载的增加,增加辅助角色副本的数量。
- 在负载减少时缩减。
- 通过将容量与需求相匹配来提供高效的资源利用率。
验证缩放器配置
验证自动缩放是否在已部署的解决方案中正常运行。
在 Azure 门户中,访问您的工作应用。
在左侧菜单中,选择 “应用程序>修订”和“副本”。
选择“ 副本 ”选项卡,验证应用程序是否横向扩展。
在 Azure portal 中显示缩放副本的修订和副本页面的截图。
在左侧菜单中,选择 “应用程序>缩放”。
选择缩放规则名称以查看缩放器设置。