Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, ficará a saber mais sobre a ferramenta de dimensionamento que utiliza um runbook Automação do Azure e a Aplicação Lógica do Azure para dimensionar automaticamente as VMs do anfitrião de sessões no seu ambiente do Azure Virtual Desktop. Para saber mais sobre a ferramenta de dimensionamento, veja Dimensionar anfitriões de sessões com o Automação do Azure e o Azure Logic Apps.
Observação
A solução nativa de Dimensionamento Automático do Azure Virtual Desktop está geralmente disponível para conjuntos de anfitriões pessoais e agrupados e aumentará ou reduzirá automaticamente as VMs do anfitrião da sessão com base no agendamento de dimensionamento. Recomendamos que utilize o Dimensionamento Automático para uma configuração mais fácil. Para obter mais informações, veja Planos de dimensionamento automático.
Não pode dimensionar anfitriões de sessão com Automação do Azure e o Azure Logic Apps juntamente com o dimensionamento automático no mesmo conjunto de anfitriões. Tem de utilizar um ou outro.
Pré-requisitos
Antes de começar a configurar a ferramenta de dimensionamento, certifique-se de que tem os seguintes itens prontos:
- Um conjunto de anfitriões do Azure Virtual Desktop.
- VMs do conjunto de anfitriões de sessões configuradas e registadas no serviço Azure Virtual Desktop.
- Um utilizador com a função de controlo de acesso baseado em funções (RBAC) contribuidor atribuída na subscrição do Azure para criar os recursos. Também precisará da função RBAC administrador da aplicação e/ou Proprietário para criar uma identidade gerida.
- Uma área de trabalho do Log Analytics (opcional).
O computador que utiliza para implementar a ferramenta tem de ter:
- PowerShell 5.1 ou posterior
- O módulo Azure Az PowerShell
Se tiver tudo pronto, vamos começar.
Criar ou atualizar uma conta Automação do Azure
Observação
Se já tiver uma conta Automação do Azure com um runbook a executar uma versão mais antiga do script de dimensionamento, tudo o que precisa de fazer é seguir as instruções abaixo para se certificar de que está atualizado.
Primeiro, precisará de uma conta Automação do Azure para executar o runbook do PowerShell. O processo descrito por esta secção é válido mesmo que tenha uma conta de Automação do Azure existente que pretenda utilizar para configurar o runbook do PowerShell. Eis como configurá-lo:
Abra o PowerShell.
Execute o seguinte cmdlet para iniciar sessão na sua conta do Azure.
Login-AzAccountObservação
A sua conta tem de ter direitos de contribuidor na subscrição do Azure onde pretende implementar a ferramenta de dimensionamento.
Execute o seguinte cmdlet para transferir o script para criar a conta Automação do Azure:
New-Item -ItemType Directory -Path "C:\Temp" -Force Set-Location -Path "C:\Temp" $Uri = "https://raw.githubusercontent.com/Azure/RDS-Templates/master/wvd-templates/wvd-scaling-script/CreateOrUpdateAzAutoAccount.ps1" # Download the script Invoke-WebRequest -Uri $Uri -OutFile ".\CreateOrUpdateAzAutoAccount.ps1"Execute o seguinte cmdlet para executar o script e criar a conta Automação do Azure. Pode preencher valores para os parâmetros ou comentou-os para utilizarem as respetivas predefinições.
$Params = @{ "AADTenantId" = "<Azure_Active_Directory_tenant_ID>" # Optional. If not specified, it will use the current Azure context "SubscriptionId" = "<Azure_subscription_ID>" # Optional. If not specified, it will use the current Azure context "UseARMAPI" = $true "ResourceGroupName" = "<Resource_group_name>" # Optional. Default: "WVDAutoScaleResourceGroup" "AutomationAccountName" = "<Automation_account_name>" # Optional. Default: "WVDAutoScaleAutomationAccount" "Location" = "<Azure_region_for_deployment>" "WorkspaceName" = "<Log_analytics_workspace_name>" # Optional. If specified, Log Analytics will be used to configure the custom log table that the runbook PowerShell script can send logs to } .\CreateOrUpdateAzAutoAccount.ps1 @ParamsObservação
Se a política não lhe permitir criar recursos de script de dimensionamento numa região específica, atualize a atribuição de política e adicione a região que pretende à lista de regiões permitidas.
Se ainda não tiver criado uma conta de automatização, a saída do cmdlet incluirá um URI de webhook encriptado na variável da conta de automatização. Certifique-se de que mantém um registo do URI porque irá utilizá-lo como parâmetro quando configurar o agendamento de execução da Aplicação Lógica do Azure. Se estiver a atualizar uma conta de automatização existente, pode obter o URI do webhook com o PowerShell para aceder a variáveis.
Se tiver especificado o parâmetro WorkspaceName para o Log Analytics, a saída do cmdlet também incluirá o ID da Área de Trabalho do Log Analytics e a respetiva Chave Primária. Anote o ID da Área de Trabalho e a Chave Primária, uma vez que terá de utilizá-los novamente mais tarde com parâmetros quando configurar o agendamento de execução para a Aplicação Lógica do Azure.
Depois de configurar a sua conta Automação do Azure, inicie sessão na sua subscrição do Azure e marcar para se certificar de que a sua conta Automação do Azure e o runbook relevante apareceram no grupo de recursos especificado, conforme mostrado na imagem seguinte:
Para marcar se o webhook está onde deveria estar, selecione o nome do runbook. Em seguida, aceda à secção Recursos do runbook e selecione Webhooks.
Criar uma identidade gerida
Agora que tem uma conta Automação do Azure, também terá de configurar uma identidade gerida se ainda não o tiver feito. As identidades geridas irão ajudar o runbook a aceder a outros Microsoft Entra recursos relacionados, bem como a autenticar processos de automatização importantes.
Para configurar uma identidade gerida, siga as instruções em Utilizar uma identidade gerida atribuída pelo sistema para uma conta Automação do Azure. Depois de criar uma identidade gerida, atribua-a com permissões de contribuidor adequadas aos recursos do Azure Virtual Desktop, como conjuntos de anfitriões, VMs, etc. Quando terminar, regresse a este artigo e Crie a Aplicação Lógica do Azure e a agenda de execução para concluir o processo de configuração inicial.
Criar a Aplicação Lógica do Azure e a agenda de execução
Por fim, terá de criar a Aplicação Lógica do Azure e configurar uma agenda de execução para a nova ferramenta de dimensionamento. Em primeiro lugar, transfira e importe o módulo PowerShell de Virtualização de Ambiente de Trabalho para utilizar na sua sessão do PowerShell, caso ainda não o tenha feito.
Abra o PowerShell.
Execute o seguinte cmdlet para iniciar sessão na sua conta do Azure.
Login-AzAccountExecute o seguinte cmdlet para transferir o script para criar a Aplicação Lógica do Azure.
New-Item -ItemType Directory -Path "C:\Temp" -Force Set-Location -Path "C:\Temp" $Uri = "https://raw.githubusercontent.com/Azure/RDS-Templates/master/wvd-templates/wvd-scaling-script/CreateOrUpdateAzLogicApp.ps1" # Download the script Invoke-WebRequest -Uri $Uri -OutFile ".\CreateOrUpdateAzLogicApp.ps1"Execute o seguinte script do PowerShell para criar a Aplicação Lógica do Azure e a agenda de execução para o conjunto de anfitriões
Observação
Terá de executar este script para cada conjunto de anfitriões que pretende dimensionar automaticamente, mas só precisa de uma conta Automação do Azure.
$AADTenantId = (Get-AzContext).Tenant.Id $AzSubscription = Get-AzSubscription | Out-GridView -OutputMode:Single -Title "Select your Azure Subscription" Select-AzSubscription -Subscription $AzSubscription.Id $ResourceGroup = Get-AzResourceGroup | Out-GridView -OutputMode:Single -Title "Select the resource group for the new Azure Logic App" $WVDHostPool = Get-AzResource -ResourceType "Microsoft.DesktopVirtualization/hostpools" | Out-GridView -OutputMode:Single -Title "Select the host pool you'd like to scale" $LogAnalyticsWorkspaceId = Read-Host -Prompt "If you want to use Log Analytics, enter the Log Analytics Workspace ID returned by when you created the Azure Automation account, otherwise leave it blank" $LogAnalyticsPrimaryKey = Read-Host -Prompt "If you want to use Log Analytics, enter the Log Analytics Primary Key returned by when you created the Azure Automation account, otherwise leave it blank" $RecurrenceInterval = Read-Host -Prompt "Enter how often you'd like the job to run in minutes, e.g. '15'" $BeginPeakTime = Read-Host -Prompt "Enter the start time for peak hours in local time, e.g. 9:00" $EndPeakTime = Read-Host -Prompt "Enter the end time for peak hours in local time, e.g. 18:00" $TimeDifference = Read-Host -Prompt "Enter the time difference between local time and UTC in hours, e.g. +5:30" $SessionThresholdPerCPU = Read-Host -Prompt "Enter the maximum number of sessions per CPU that will be used as a threshold to determine when new session host VMs need to be started during peak hours" $MinimumNumberOfRDSH = Read-Host -Prompt "Enter the minimum number of session host VMs to keep running during off-peak hours" $MaintenanceTagName = Read-Host -Prompt "Enter the name of the Tag associated with VMs you don't want to be managed by this scaling tool" $LimitSecondsToForceLogOffUser = Read-Host -Prompt "Enter the number of seconds to wait before automatically signing out users. If set to 0, any session host VM that has user sessions, will be left untouched" $LogOffMessageTitle = Read-Host -Prompt "Enter the title of the message sent to the user before they are forced to sign out" $LogOffMessageBody = Read-Host -Prompt "Enter the body of the message sent to the user before they are forced to sign out" $WebhookURI = Read-Host -Prompt "Enter the webhook URI that has already been generated for this Azure Automation account. The URI is stored as encrypted in the above Automation Account variable. To retrieve the value, see https://learn.microsoft.com/azure/automation/shared-resources/variables?tabs=azure-powershell#powershell-cmdlets-to-access-variables" $Params = @{ "AADTenantId" = $AADTenantId # Optional. If not specified, it will use the current Azure context "SubscriptionID" = $AzSubscription.Id # Optional. If not specified, it will use the current Azure context "ResourceGroupName" = $ResourceGroup.ResourceGroupName # Optional. Default: "WVDAutoScaleResourceGroup" "Location" = $ResourceGroup.Location # Optional. Default: "West US2" "UseARMAPI" = $true "HostPoolName" = $WVDHostPool.Name "HostPoolResourceGroupName" = $WVDHostPool.ResourceGroupName # Optional. Default: same as ResourceGroupName param value "LogAnalyticsWorkspaceId" = $LogAnalyticsWorkspaceId # Optional. If not specified, script will not log to the Log Analytics "LogAnalyticsPrimaryKey" = $LogAnalyticsPrimaryKey # Optional. If not specified, script will not log to the Log Analytics "RecurrenceInterval" = $RecurrenceInterval # Optional. Default: 15 "BeginPeakTime" = $BeginPeakTime # Optional. Default: "09:00" "EndPeakTime" = $EndPeakTime # Optional. Default: "17:00" "TimeDifference" = $TimeDifference # Optional. Default: "-7:00" "SessionThresholdPerCPU" = $SessionThresholdPerCPU # Optional. Default: 1 "MinimumNumberOfRDSH" = $MinimumNumberOfRDSH # Optional. Default: 1 "MaintenanceTagName" = $MaintenanceTagName # Optional. "LimitSecondsToForceLogOffUser" = $LimitSecondsToForceLogOffUser # Optional. Default: 1 "LogOffMessageTitle" = $LogOffMessageTitle # Optional. Default: "Machine is about to shutdown." "LogOffMessageBody" = $LogOffMessageBody # Optional. Default: "Your session will be logged off. Please save and close everything." "WebhookURI" = $WebhookURI } .\CreateOrUpdateAzLogicApp.ps1 @ParamsDepois de executar o script, a Aplicação Lógica do Azure deverá aparecer num grupo de recursos, conforme mostrado na imagem seguinte.
Para fazer alterações à agenda de execução, como alterar o intervalo de periodicidade ou o fuso horário, aceda ao agendador de dimensionamento automático da Aplicação Lógica do Azure e selecione Editar para aceder ao Designer Aplicação Lógica do Azure.
Gerir a sua ferramenta de dimensionamento
Agora que criou a sua ferramenta de dimensionamento, pode aceder à respetiva saída. Esta secção descreve algumas funcionalidades que poderá considerar úteis.
Ver status de tarefas
Pode ver uma status resumida de todas as tarefas de runbook ou ver uma status mais aprofundada de uma tarefa de runbook específica no portal do Azure.
À direita da sua conta Automação do Azure selecionada, em "Estatísticas da Tarefa", pode ver uma lista de resumos de todas as tarefas de runbook. Abrir a página Tarefas no lado esquerdo da janela mostra os estados atuais da tarefa, as horas de início e os tempos de conclusão.
Ver registos e a saída da ferramenta de dimensionamento
Pode ver os registos das operações de aumento horizontal e de aumento horizontal ao abrir o runbook e selecionar a tarefa.
Navegue para o runbook no grupo de recursos que aloja a conta Automação do Azure e selecione Descrição geral. Na página de descrição geral, selecione uma tarefa em Tarefas Recentes para ver a saída da ferramenta de dimensionamento, conforme mostrado na imagem seguinte.
Verificar o número da versão do script do runbook
Pode marcar a versão do script do runbook que está a utilizar ao abrir o ficheiro runbook na sua conta Automação do Azure e selecionar Ver. Será apresentado um script para o runbook no lado direito do ecrã. No script, verá o número da versão no formato v#.#.# na SYNOPSIS secção . Pode encontrar o número da versão mais recente aqui. Se não vir um número de versão no script do runbook, isso significa que está a executar uma versão anterior do script e deve atualizá-lo imediatamente. Se precisar de atualizar o script do runbook, siga as instruções em Criar ou atualizar uma conta Automação do Azure.
Relatório de problemas
Quando comunicar um problema, terá de fornecer as seguintes informações para nos ajudar a resolver problemas:
Um registo completo do separador Todos os Registos na tarefa que causou o problema. Para saber como obter o registo, siga as instruções em Ver registos e dimensionar a saída da ferramenta. Se existirem informações confidenciais ou privadas no registo, pode removê-la antes de nos submeter o problema.
A versão do script do runbook que está a utilizar. Para saber como obter o número da versão, consulte Verificar o número da versão do script do runbook
O número da versão de cada um dos seguintes módulos do PowerShell instalados na sua conta Automação do Azure. Para localizar estes módulos, abra Automação do Azure conta, selecione Módulos na secção Recursos Partilhados no painel do lado esquerdo da janela e, em seguida, procure o nome do módulo.
- Az.Accounts
- Az.Compute
- Az.Resources
- Az.Automation
- OMSIngestionAPI
- Az.DesktopVirtualization
Log Analytics
Se decidiu utilizar o Log Analytics, pode ver todos os dados de registo num registo personalizado com o nome WVDTenantScale_CL em Registos Personalizados na vista Registos da Área de Trabalho do Log Analytics. Listámos algumas consultas de exemplo que poderá considerar úteis.
Para ver todos os registos de um conjunto de anfitriões, introduza a seguinte consulta:
WVDTenantScale_CL | where hostpoolName_s == "<host_pool_name>" | project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s, LineNumAndMessage = logmessage_s, AADTenantId = TenantIdPara ver o número total de VMs de anfitrião de sessões atualmente em execução e sessões de utilizador ativas no conjunto de anfitriões, introduza a seguinte consulta:
WVDTenantScale_CL | where logmessage_s contains "Number of running session hosts:" or logmessage_s contains "Number of user sessions:" or logmessage_s contains "Number of user sessions per Core:" | where hostpoolName_s == "<host_pool_name>" | project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s, LineNumAndMessage = logmessage_s, AADTenantId = TenantIdPara ver a status de todas as VMs anfitriãs de sessão num conjunto de anfitriões, introduza a seguinte consulta:
WVDTenantScale_CL | where logmessage_s contains "Session host:" | where hostpoolName_s == "<host_pool_name>" | project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s, LineNumAndMessage = logmessage_s, AADTenantId = TenantIdPara ver quaisquer erros e avisos, introduza a seguinte consulta:
WVDTenantScale_CL | where logmessage_s contains "ERROR:" or logmessage_s contains "WARN:" | project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s, LineNumAndMessage = logmessage_s, AADTenantId = TenantId
Limitações
Seguem-se algumas limitações com o dimensionamento de VMs de anfitrião de sessões com este script de dimensionamento:
- O script de dimensionamento não considera alterações de tempo entre as poupanças padrão e de verão.