你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用已启用 Azure Arc 的逻辑应用(预览版)创建和部署基于单租户的逻辑应用工作流

注意

此功能为预览版,受 Microsoft Azure 预览版补充使用条款限制。

通过已启用 Azure Arc 的逻辑应用,可创建基于单租户的逻辑应用工作流,并将其部署到你运行和管理的 Kubernetes 基础结构。 逻辑应用在自定义位置运行,此位置映射到已启用 Azure Arc 的 Kubernetes 群集,其中已安装并启用了 Azure 应用服务平台扩展捆绑

例如,此群集可以是 Azure Kubernetes 服务、裸机 Kubernetes 或其他设置。 通过扩展捆绑包,可在 Kubernetes 群集上运行 Azure 逻辑应用、Azure 应用服务和 Azure Functions 等平台服务。

有关详细信息,请查看以下文档:

先决条件

本部分介绍所有可用于创建和部署逻辑应用工作流的方法和工具的常见先决条件。 特定于工具的先决条件及其相应的步骤一同显示。

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,可以创建一个免费帐户

  • 具有已启用 Azure Arc 的 Kubernetes 群集和自定义位置的 Kubernetes 环境,可在其中托管和运行 Azure 逻辑应用、Azure 应用服务和 Azure Functions。

    重要

    对于 Kubernetes 环境、自定义位置和逻辑应用,请确保使用相同的资源位置。

    在 Kubernetes 群集上创建应用服务捆绑扩展时,可以更改默认缩放行为用于运行逻辑应用工作流。 使用 Azure CLI 命令 az k8s-extension create 创建扩展时,请确保添加配置设置 keda.enabled=true

    az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"

    有关详细信息,请查看以下文档:

  • 你自己的 Microsoft Entra 标识

    如果工作流需要使用 Azure 托管的连接(如 Office 365 Outlook 或 Azure 存储),则逻辑应用必须使用 Microsoft Entra 标识进行身份验证。 已启用 Azure Arc 的逻辑应用可以在任何基础结构上运行,但需要有权使用 Azure 托管连接的标识。 若要设置此标识,请在 Microsoft Entra ID 中创建一个应用注册,逻辑应用将其用作所需的标识。

    注意

    对于已启用 Azure Arc 的逻辑应用,托管标识支持当前不可用。

    若要使用 Azure CLI 创建 Microsoft Entra 应用注册,请遵循以下步骤:

    1. 使用 az ad sp create 命令创建应用注册。

    2. 若要查看所有详细信息,请运行 az ad sp show 命令。

    3. 从这两个命令的输出中,查找并保存需要保留供稍后使用的客户端 ID、对象 ID、租户 ID 和客户端密码值。

    若要使用 Azure 门户创建 Microsoft Entra 应用注册,请遵循以下步骤:

    1. 使用 Azure 门户创建新的 Microsoft Entra 应用注册。

    2. 创建完成后,在门户中找到新的应用注册。

    3. 在注册菜单中,选择“概述”,然后保存客户端 ID、租户 ID 和客户端密码值。

    4. 若要查找对象 ID,请在“本地目录中的托管应用程序”字段旁边选择自己应用注册的名称。 在属性视图中,复制对象 ID。

创建和部署逻辑应用

根据是要使用 Azure CLI 还是 Visual Studio Code,选择匹配的选项卡来查看特定的先决条件和步骤。

在开始之前,需要具有以下项:

  • 在本地计算机上安装了最新的 Azure CLI 扩展。

  • Azure CLI 的预览版 Azure 逻辑应用(标准)扩展。

    虽然单租户 Azure 逻辑应用已正式发布,但 Azure 逻辑应用扩展仍处于预览状态。

  • 可用于在其中创建逻辑应用的 Azure 资源组

    如果没有此资源组,请按照创建资源组的步骤操作。

  • Azure 存储帐户(用于与逻辑应用一起保留数据和运行历史记录)。

    如果没有此存储帐户,可以在创建逻辑应用时创建此帐户,也可以按照创建存储帐户的步骤操作。

检查环境和 CLI 版本

  1. 登录到 Azure 门户。 运行以下命令,检查订阅是否处于活动状态:

    az login
    
  2. 运行以下命令,在终端或命令窗口中检查 Azure CLI 版本:

    az --version
    

    有关最新版本,请参阅最新发行说明

  3. 如果没有最新版本,请按照适用于你操作系统或平台的安装指南来更新安装。

安装 Azure CLI Azure 逻辑应用(标准)扩展

通过运行以下命令,安装 Azure CLI 的预览版单租户 Azure 逻辑应用(标准)扩展:

az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"

创建资源组

如果还没有用于逻辑应用的资源组,请运行命令 az group create 创建该组。 除非你已为 Azure 帐户设置了一个默认订阅,否则请确保将 --subscription 参数与订阅名称或标识符一起使用。 否则,无需使用 --subscription 参数。

提示

若要设置默认订阅,请运行以下命令,将 MySubscription 替换为订阅名称或标识符。

az account set --subscription MySubscription

例如,以下命令使用位置 eastus 中名为 MySubscription 的 Azure 订阅创建一个名为 MyResourceGroupName 的资源组:

az group create --name MyResourceGroupName 
   --subscription MySubscription 
   --location eastus

如果已成功创建资源组,输出会将 provisioningState 显示为 Succeeded

<...>
   "name": "testResourceGroup",
   "properties": {
      "provisioningState": "Succeeded"
    },
<...>

创建逻辑应用

若要创建已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp create。 逻辑应用资源位置、自定义位置和 Kubernetes 环境必须相同。

parameters 说明
--name -n 逻辑应用的唯一名称
--resource-group -g 要在其中创建逻辑应用的资源组。 如果没有可用的资源组,请创建一个资源组
--storage-account -s 要用于逻辑应用的存储帐户。 对于同一资源组中的存储帐户,请使用字符串值。 对于不同资源组中的存储帐户,请使用资源 ID。
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

若要使用专用 Azure 容器注册表 (ACR) 映像创建已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp create

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   --deployment-container-image-name myacr.azurecr.io/myimage:tag
   --docker-registry-server-password MyPassword 
   --docker-registry-server-user MyUsername

显示逻辑应用详细信息

若要显示已启用 Azure Arc 的逻辑应用的详细信息,请使用以下必需参数运行命令 az logicapp show

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

部署逻辑应用

若要使用 Azure 应用服务的 Kudu zip 部署来部署已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp deployment source config-zip

重要

请确保 zip 文件在根级别包含项目的生成工件。 这些生成工件包括所有工作流文件夹、配置文件(如 host.json、connections.json)和任何其他相关文件。 不要添加任何额外的文件夹,也不要将任何生成工件放入项目结构中不存在的文件夹。 例如,下面的列表显示示例 MyBuildArtifacts.zip 文件结构:

MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --src MyBuildArtifact.zip

启动逻辑应用

若要启动已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp start

az logicapp start --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

停止逻辑应用

若要停止已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp stop

az logicapp stop --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

重启逻辑应用

若要重启已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp restart

az logicapp restart --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

删除逻辑应用

若要删除已启用 Azure Arc 的逻辑应用,请使用以下必需参数运行命令 az logicapp delete

az logicapp delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

设置连接身份验证

目前,已启用 Azure Arc 的 Kubernetes 群集不支持使用逻辑应用托管标识对托管 API 连接进行身份验证。 在工作流中使用托管连接器时,你需要创建这些 Azure 托管和管理的连接。

你必须在 Microsoft Entra ID 中创建自己的应用注册。 然后,可使用此应用注册作为在已启用 Azure Arc 的逻辑应用中部署和运行的逻辑应用的标识。 有关详细信息,请查看顶级先决条件

在应用注册中,需要客户端 ID、对象 ID、租户 ID 和客户端密码。 如果使用 Visual Studio Code 进行部署,可拥有使用 Microsoft Entra 标识设置逻辑应用的内置体验。 有关详细信息,请查看创建和部署逻辑应用工作流 - Visual Studio Code

然而,如果使用 Visual Studio Code 进行开发,而使用 Azure CLI 或自动化管道进行部署,请按照这些步骤进行操作。

在项目中配置连接和应用设置

  1. 在逻辑应用项目的 connections.js 文件中,找到托管连接的 authentication 对象。 将此对象的内容替换为之前在顶级先决条件中生成的应用注册信息:

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. 在逻辑应用项目的 local.settings.js 文件中,添加客户端 ID、对象 ID、租户 ID 和客户端密码。 部署完成后,这些设置会成为逻辑应用设置。

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>",
          "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID",
          "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>",
          "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>"
       }
    }
    

重要

对于生产场景或生产环境,请确保可以保护此类机密和敏感信息的安全,例如使用密钥保管库提供保护。

添加访问策略

在单租户 Azure 逻辑应用中,每个逻辑应用都具有一个由访问策略授权使用 Azure 托管和管理的连接的标识。 可使用 Azure 门户或基础结构部署设置这些访问策略。

ARM 模板

在 Azure 资源管理器模板(ARM 模板)中,为每个托管 API 连接添加以下资源定义并提供以下信息:

参数 说明
<connection-name> 托管 API 连接的名称,例如 office365
<object-ID> Microsoft Entra 标识的对象 ID(之前在应用注册中保存)
<租户 ID> Microsoft Entra 标识的租户 ID(之前在应用注册中保存)
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

有关详细信息,请查看 Microsoft.Web/connections/accesspolicies(ARM 模板)文档。

Azure 门户

对于此任务,请使用之前保存的客户端 ID 作为应用程序 ID。

  1. 在 Azure 门户中,查找并打开逻辑应用。 在逻辑应用菜单的“工作流”下,选择“连接”,其中列出了逻辑应用资源工作流中的所有连接

  2. 在“API 连接”下,选择一个连接,在本例中为 office365

  3. 在连接的菜单的“设置”下,选择“访问策略”>“添加” 。

  4. 在“添加访问策略”窗格的搜索框中,找到并选择以前保存的客户端 ID。

  5. 完成后,选择“添加”。

  6. 为逻辑应用中每个 Azure 托管的连接重复这些步骤。

自动进行 DevOps 部署

若要生成和部署已启用 Azure Arc 的逻辑应用,可使用与基于单租户的逻辑应用相同的管道和过程。 若要使用 DevOps 的管道自动进行基础结构部署,请针对非容器部署和容器部署在基础结构级别进行以下更改。

标准部署(非容器)

如果使用 zip 部署进行逻辑应用部署,则无需设置用于托管容器映像的 Docker 注册表。 尽管从技术上讲,Kubernetes 上的逻辑应用在容器中运行,但已启用 Azure Arc 的逻辑应用会为你管理这些容器。 针对这种场景,请在设置基础结构后完成以下任务:

  • 通知资源提供程序,你正在 Kubernetes 上创建逻辑应用。
  • 在部署中添加应用服务计划。 有关详细信息,请参阅在部署中添加应用服务计划

Azure 资源管理器模板(ARM 模板)中,添加以下值:

项目 JSON 属性 说明
位置 location 请确保使用与自定义位置和 Kubernetes 环境相同的资源位置(Azure 区域)。 逻辑应用资源位置、自定义位置和 Kubernetes 环境必须相同。

请注意:此值与自定义位置的名称不同

应用类型 kind 要部署的应用的类型,通过它 Azure 平台能够识别你的应用。 对于 Azure 逻辑应用,此信息类似于以下示例:kubernetes,functionapp,workflowapp,linux
扩展位置 extendedLocation 此对象需要 Kubernetes 环境的自定义位置的 "name",并且必须将 "type" 设置为 "CustomLocation"
托管计划资源 ID serverFarmId 关联的应用服务计划的资源 ID,格式如下:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

存储连接字符串 AzureWebJobsStorage 存储帐户的连接字符串

重要说明:需要在 ARM 模板中提供存储帐户的连接字符串。 对于生产场景或生产环境,请确保可以保护此类机密和敏感信息的安全,例如使用密钥保管库提供保护。

ARM 模板

以下示例介绍了可在 ARM 模板中使用的已启用 Azure Arc 的逻辑应用资源定义示例。 有关详细信息,请查看 Microsoft.Web/sites 模板格式 (JSON)文档。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": "kubernetes,functionapp,workflowapp,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "clientAffinityEnabled": false,
      "name": "[parameters('name')]",
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "dotnet"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "Node|12"
      }
   }
}

注意

默认情况下,逻辑应用的 FUNCTIONS_WORKER_RUNTIME 应用设置为 dotnet。 在此之前, node 是默认值。 但是, dotnet 现在是所有新的和现有的已部署启用了 Arc 的逻辑应用的默认值,即使对于具有不同值的应用也是如此。 此更改不会影响工作流的运行时,并且一切都应和以前一样。 有关详细信息,请参阅 FUNCTIONS_WORKER_RUNTIME 应用设置

逻辑应用的 APP_KIND 应用设置已设置为 workflowapp,但在某些情况下(例如 Azure 资源管理器模板,或其他未包含该设置的情况)会缺少此应用设置。 如果某些操作不起作用(如执行 JavaScript 代码操作或工作流停止工作),请检查 APP_KIND 应用设置是否存在且设置为 workflowapp。 有关详细信息,请参阅 APP_KIND 应用设置

容器部署

如果希望使用容器工具和部署过程,可将逻辑应用容器化,并将其部署到已启用 Azure Arc 的逻辑应用。 针对这种场景,请在设置基础结构后完成以下高级任务:

  • 设置用于托管容器映像的 Docker 注册表。

  • 若要容器化逻辑应用,请将以下 Dockerfile 添加到逻辑应用项目的根文件夹,然后按照生成映像和将映像发布到 Docker 注册表的步骤进行操作,例如,请参阅教程:使用 Azure 容器注册表任务在云中生成并部署容器映像

    注意

    如果使用 SQL 作为存储提供程序,请确保使用 Azure Functions 映像版本3.3.1 或更高版本。

    FROM mcr.microsoft.com/azure-functions/node:3.3.1
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    FUNCTIONS_V2_COMPATIBILITY_MODE=true
    COPY . /home/site/wwwroot
    RUN cd /home/site/wwwroot
    
  • 通知资源提供程序,你正在 Kubernetes 上创建逻辑应用。

  • 在部署模板中,指向计划在其中进行部署的 Docker 注册表和容器映像。 单租户 Azure 逻辑应用使用此信息从 Docker 注册表获取容器映像。

  • 在部署中添加应用服务计划。 有关详细信息,请参阅在部署中添加应用服务计划

Azure 资源管理器模板(ARM 模板)中,添加以下值:

项目 JSON 属性 说明
位置 location 请确保使用与自定义位置和 Kubernetes 环境相同的资源位置(Azure 区域)。 逻辑应用资源位置、自定义位置和 Kubernetes 环境必须相同。

请注意:此值与自定义位置的名称不同

应用类型 kind 要部署的应用的类型,通过它 Azure 平台能够识别你的应用。 对于 Azure 逻辑应用,此信息类似于以下示例:kubernetes,functionapp,workflowapp,container
扩展位置 extendedLocation 此对象需要 Kubernetes 环境的自定义位置的 "name",并且必须将 "type" 设置为 "CustomLocation"
容器名称 linuxFxVersion 容器的名称,格式如下:DOCKER\|<container-name>
托管计划资源 ID serverFarmId 关联的应用服务计划的资源 ID,格式如下:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

存储连接字符串 AzureWebJobsStorage 存储帐户的连接字符串

重要说明:部署到 Docker 容器时,需要在 ARM 模板中提供存储帐户的连接字符串。 对于生产场景或生产环境,请确保可以保护此类机密和敏感信息的安全,例如使用密钥保管库提供保护。

若要引用 Docker 注册表和容器映像,请在模板中添加以下值:

项目 JSON 属性 说明
Docker 注册表服务器 URL DOCKER_REGISTRY_SERVER_URL Docker 注册表服务器的 URL
Docker 注册表服务器 DOCKER_REGISTRY_SERVER_USERNAME 用于访问 Docker 注册表服务器的用户名
Docker 注册表服务器密码 DOCKER_REGISTRY_SERVER_PASSWORD 用于访问 Docker 注册表服务器的密码

ARM 模板

以下示例介绍了可在 ARM 模板中使用的已启用 Azure Arc 的逻辑应用资源定义示例。 有关详细信息,请查看 Microsoft.Web/sites 模板格式(ARM 模板)文档。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": " kubernetes,functionapp,workflowapp,container",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "name": "[parameters('name')]",
      "clientAffinityEnabled": false,
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "dotnet"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }, 
            {
               "name": "DOCKER_REGISTRY_SERVER_URL",
               "value": "<docker-registry-server-URL>"
            },
            { 
               "name": "DOCKER_REGISTRY_SERVER_USERNAME",
               "value": "<docker-registry-server-username>"
            },
            {
               "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
               "value": "<docker-registry-server-password>"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "DOCKER|<container-name>"
      }
   }
}

注意

以前,FUNCTIONS_WORKER_RUNTIME 设置的默认值为 node。 现在,dotnet 是所有新的和现有的已部署标准逻辑应用的默认值,甚至对于具有不同值的应用也是如此。 此更改不应影响工作流的运行时,并且一切都应按与以前相同的方式工作。 有关详细信息,请参阅 FUNCTIONS_WORKER_RUNTIME 应用设置

在部署中添加应用服务计划

无论使用的是标准部署还是容器部署,都必须在部署中添加应用服务计划。 尽管此应用服务计划与 Kubernetes 环境不太相关,但标准部署和容器部署仍需要此计划。

虽然其他创建选项通常会为此计划处理 Azure 资源的预配,但如果部署使用“基础结构即代码”模板,则必须为该计划显式创建 Azure 资源。 托管计划资源不会更改,只有 sku 信息才会更改。

Azure 资源管理器模板(ARM 模板)中,添加以下值:

项目 JSON 属性 说明
位置 location 请确保使用与自定义位置和 Kubernetes 环境相同的资源位置(Azure 区域)。 逻辑应用资源位置、自定义位置和 Kubernetes 环境必须相同。

请注意:此值与自定义位置的名称不同

种类 kind 要部署的此类应用服务计划需要为 kubernetes,linux
扩展位置 extendedLocation 此对象需要 Kubernetes 环境的自定义位置的 "name",并且必须将 "type" 设置为 "CustomLocation"
托管计划名称 name 应用服务计划的名称
计划层 sku: tier 应用服务计划层,即 K1
计划名称 sku: name 应用服务计划名称,即 Kubernetes

ARM 模板

以下示例介绍了可用于应用部署的应用服务计划资源定义示例。 有关详细信息,请查看 Microsoft.Web/serverfarms 模板格式(ARM 模板)文档。

{
   "type": "Microsoft.Web/serverfarms",
   "apiVersion": "2020-12-01",
   "location": "<location>",
   "name": "<hosting-plan-name>",
   "kind": "kubernetes,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
   },
   "sku": {
      "tier": "Kubernetes",
      "name": "K1", 
      "capacity": 1
   },
   "properties": {
      "kubeEnvironmentProfile": {
         "id": "[parameters('kubeEnvironmentId')]"
      }
   }
}

更改默认缩放行为

已启用 Azure Arc 的逻辑应用根据后端存储队列中的作业数自动管理逻辑应用的缩放。 但是,你可以更改默认缩放行为。

在逻辑应用中,工作流定义指定操作运行的顺序。 每当触发工作流运行时,Azure 逻辑应用运行时都会为工作流定义中的每种操作类型创建一个作业。 然后,运行时将这些作业组织到作业排序器中。 此排序器协调运行工作流定义的作业,但基础 Azure 逻辑应用的作业编排引擎会运行每个作业。

对于有状态工作流,作业编排引擎使用存储队列消息在作业排序器中计划作业。 在后台,作业调度程序(或调度程序辅助角色实例)监视这些作业队列 。 编排引擎使用默认的最小和最大辅助角色实例数来监视作业队列。 对于无状态工作流,编排引擎完全将操作状态保留在内存中。

若要更改默认缩放行为,需指定不同的最小和最大辅助角色实例数来监视作业队列。

更改缩放的先决条件

在已启用 Azure Arc 的 Kubernetes 群集上,必须将以前创建的应用服务捆绑包扩展的 keda.enabled 属性设置为 true。 有关详细信息,请查看顶级先决条件

更改缩放阈值

在已启用 Azure Arc 的逻辑应用中,作业队列的长度会触发缩放事件,并为逻辑应用的缩放频率设置阈值。 可更改队列长度,它的默认值设置为 20 个作业。 若要降低缩放频率,请增加队列长度。 若要增加缩放频率,请减小队列长度。 此过程可能需要用到某种试错方法。

若要更改队列长度,在逻辑应用项目的根级别 host.json 文件中,设置 Runtime.ScaleMonitor.KEDA.TargetQueueLength 属性,例如:

"extensions": {
   "workflow": {
      "settings": {
         "Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
      }
   }
}

更改最大吞吐量

在现有的逻辑应用资源上可更改辅助角色实例的最大数(默认值设置为 2)。 该值控制可监视作业队列的辅助角色实例数的上限。

若要更改此最大值,请使用 Azure CLI (logic app create only) 和 Azure 门户。

Azure CLI

若要创建新的逻辑应用,请使用以下参数运行命令 az logicapp create

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]

若要配置最大实例计数,请使用 --settings 参数:

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --settings "K8SE_APP_MAX_INSTANCE_COUNT=10"

Azure 门户

在基于单租户的逻辑应用设置中,执行以下步骤以添加或编辑 K8SE_APP_MAX_INSTANCE_COUNT 设置值:

  1. 在 Azure 门户中,找到并打开基于单租户的逻辑应用。

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

  3. 在“配置”窗格的“应用设置”下,可添加新的应用程序设置,或者编辑现有的值(如果已添加) 。

    1. 选择“新建应用程序设置”,添加采用所需最大值的 K8SE_APP_MAX_INSTANCE_COUNT 设置。

    2. 编辑 K8SE_APP_MAX_INSTANCE_COUNT 设置的当前值。

  4. 完成后,保存更改。

更改最小吞吐量

在现有的逻辑应用资源上,可更改辅助角色实例的最小数(默认值设置为 1)。 该值控制可监视作业队列的辅助角色实例数的下限。 为获得高可用性或高性能,请增大此值。

若要更改此最小值,请使用 Azure CLI 或 Azure 门户。

Azure CLI

对于现有逻辑应用资源,请使用以下参数运行命令 az logicapp scale

az logicapp scale --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --instance-count 5 

若要创建新的逻辑应用,请使用以下参数运行命令 az logicapp create

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]

Azure 门户

在基于单租户的逻辑应用设置中,按照以下步骤更改“横向扩展”属性值

  1. 在 Azure 门户中,找到并打开基于单租户的逻辑应用。

  2. 在逻辑应用菜单的“设置”下,选择“横向扩展” 。

  3. 在“横向扩展”窗格中,将最小实例数滑块拖动到所需的值。

  4. 完成后,保存更改。

排查问题

若要获取有关已部署的逻辑应用的详细信息,请尝试以下选项:

访问应用设置和配置

若要访问应用设置,请使用以下参数运行命令 az logicapp config appsettings

az logicapp config appsettings list --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

若要配置应用设置,请使用以下参数运行命令 az logicapp config appsettings set。 确保使用 --settings 参数替换设置的名称和值。

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --settings "MySetting=1"

若要删除应用设置,请使用以下参数运行命令 az logicapp config appsettings delete。 确保使用 --setting-names 参数替换要删除的设置的名称。

az logicapp config appsettings delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --setting-names MySetting

查看逻辑应用属性

要查看应用信息和属性,请使用以下参数运行命令 az logicapp show

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

监视工作流活动

若要查看逻辑应用中工作流的活动,请执行以下步骤:

  1. 在 Azure 门户中,找到并打开已部署的逻辑应用。

  2. 在逻辑应用菜单上,选择“工作流”,然后选择自己的工作流。

  3. 在工作流菜单上,选择“监视”。

收集日志

若要获取逻辑应用的记录相关数据,在逻辑应用上启用 Application Insights(如果尚未启用)。

后续步骤