Provisionar máquinas dinamicamente
O AutoScale oferece a capacidade de criar máquinas e excluí-las dinamicamente. Você pode aproveitar o recurso usando um script do PowerShell. O script ajuda a aumentar ou diminuir dinamicamente o número de máquinas no grupo de entrega com base nas condições de carga atuais.
O script oferece os seguintes benefícios (e mais):
-
Redução dos custos de armazenamento. O AutoScale ajuda a reduzir os custos de computação, mas o script fornece uma solução mais econômica e rentável para o provisionamento de máquinas.
-
Manipulação eficaz das mudanças de carga O script ajuda a lidar com as alterações de carga aumentando ou diminuindo automaticamente o número de máquinas com base na carga atual do grupo de entrega.
Baixar o script
O script do PowerShell está disponível em https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs.
Como o script funciona
Importante:
- Você não pode especificar um catálogo de máquinas em mais de um grupo de entrega que deve ser gerenciado pelo script. Em outras palavras, se vários grupos de entrega compartilharem o mesmo catálogo de máquinas, o script não funcionará com nenhum desses grupos de entrega.
- Você não pode executar o script para o mesmo grupo de entrega de várias localizações simultaneamente.
O script funciona no nível de grupo de entrega. Ele mede a carga (em termos de índice de carga) e, em seguida, determina se as máquinas devem ser criadas ou excluídas.
As máquinas criadas por meio desse script são marcadas exclusivamente (por meio do parâmetro ScriptTag
) para que possam ser identificadas posteriormente. A criação ou exclusão de máquinas é baseada em:
-
Carga percentual máxima de um grupo de entrega. Especifica o nível máximo no qual criar máquinas no AutoScale para lidar com cargas extras. Quando esse limite é excedido, as máquinas são criadas em lotes para garantir que a carga atual diminua até esse limite ou abaixo.
-
Carga percentual mínima de um grupo de entrega. Especifica o nível mínimo no qual excluir máquinas criadas por meio desse script que não têm sessões ativas. Quando esse limite é excedido, as máquinas criadas por meio desse script que não têm sessões ativas são excluídas.
Esse script tem como objetivo monitorar um grupo de entrega e criar ou excluir máquinas quando o critério do gatilho for disparado. Ele é executado baseado nas execuções específicas. Isso significa que você precisa executar o script regularmente para que ele possa funcionar conforme o esperado. Recomendamos que você execute o script em um intervalo mínimo de cinco minutos. Isso melhora a capacidade de resposta geral.
O script depende dos seguintes parâmetros para funcionar:
Parâmetro | Tipo | Valor padrão | Descrição |
---|---|---|---|
DeliveryGroupName | Cadeia de caracteres | X | Nome do grupo de entrega a ser monitorado para determinar a carga atual. Você pode fornecer uma lista de nomes separados por ponto e vírgula. Por exemplo: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile . |
XdProfileName | Cadeia de caracteres | X | Nome do perfil a ser usado para autenticação em servidores remotos. Para obter detalhes sobre a autenticação em servidores remotos usando esse parâmetro, consulte API de autenticação. |
HighWatermark | Inteiro | 80 | Carga percentual máxima (em termos de índice de carga) na qual criar máquinas para o AutoScale lidar com as cargas extras. |
LowWatermark | Inteiro | 15 | Carga percentual mínima (em termos de índice de carga) na qual excluir máquinas criadas por meio do script que não têm sessões ativas. |
MachineCatalogName | Cadeia de caracteres | X | Nome do catálogo de máquinas onde as máquinas devem ser criadas. |
MaximumCreatedMachines | Inteiro | -1 | Quantidade máxima de máquinas que podem ser criadas em um grupo de entrega especificado. Se o valor for igual ou menor que 0, o script não processa esse parâmetro. |
ScriptTag | Cadeia de caracteres | AutoscaledScripted | A marca que se aplica às máquinas criadas por meio do script. |
EventLogSource | Cadeia de caracteres | X | Nome da origem que aparece no Visualizador de Eventos do Windows. |
Nota:
Um “X” indica que nenhum valor padrão é especificado para o parâmetro.
Por padrão, o script requer todos os parâmetros (exceto o parâmetro ScriptTag
) na primeira vez em que é executado. Nas execuções subsequentes, somente os parâmetros DeliveryGroupName
e XdProfileName
são necessários. Opcionalmente, você pode optar por atualizar as cargas percentuais mínima e máxima.
Observe que você deve especificar um único grupo de entrega a primeira vez que executar o script. Por exemplo, o script não funciona se você usar o seguinte comando do PowerShell para especificar dois grupos de entrega a primeira vez que executar o script:
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\
Em vez disso, primeiro especifique um único grupo de entrega (neste exemplo, dg1) usando o seguinte comando:
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\
Em seguida, use o seguinte comando para executar o script para o segundo grupo de entrega (neste exemplo, dg 2):
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile
Pré-requisitos
Para executar o script, certifique-se de que estes pré-requisitos sejam atendidos:
- A máquina reside no mesmo domínio em que as máquinas estão sendo criadas.
- O SDK do PowerShell remoto está instalado nessa máquina. Para obter mais informações sobre o Remote PowerShell SDK, consulte SDKs e APIs.
- Outros pré-requisitos:
- Um grupo de entrega para monitorar
- Um catálogo de máquinas criado por meio do MCS (Machine Creation Services) que tem um esquema de provisionamento associado (modelo)
- Um pool de identidade associado ao esquema de provisionamento
- A origem do log de eventos a ser criada para que o script possa gravar informações no log de eventos do Windows
- Um cliente seguro que permita que você faça a autenticação em servidores remotos
Permissões, recomendações e avisos
Ao executar o script, tenha em mente o seguinte:
-
Para se autenticar em servidores remotos usando o parâmetro
XdProfileName
, você precisa definir um perfil de autenticação usando um cliente seguro de acesso à API, criado no console do Citrix Cloud. Para obter detalhes, consulte API de autenticação. -
Você deve ter permissões para criar e excluir contas de máquina no Active Directory.
-
Recomendamos que você automatize o script do PowerShell com o Agendador de Tarefas do Windows. Para obter detalhes, consulte Criar uma tarefa automatizada usando o Agendador de Tarefas do Windows.
-
Se quiser que o script grave informações (por exemplo, falhas e ações) no Log de Eventos do Windows, você precisa primeiro especificar um nome de origem usando o cmdlet
New-EventLog
. Por exemplo,New-EventLog -LogName Application –Source <sourceName>
. Em seguida, você pode visualizar os eventos no painel Aplicativo do Visualizador de Eventos do Windows. -
Se ocorrerem erros durante a execução do script, execute o script manualmente e solucione os problemas efetuando verificações do script.
API de autenticação
Antes de executar o script, você precisa definir um perfil de autenticação usando um cliente seguro de acesso à API. Você deve criar um cliente seguro usando a mesma conta na qual o script será executado.
O cliente seguro deve ter as seguintes permissões:
- Criar e excluir máquinas usando o MCS.
- Editar catálogos de máquinas (para adicionar e remover máquinas).
- Editar grupos de entrega (para adicionar e remover máquinas).
Ao criar um cliente seguro, certifique-se de que sua conta tenha as permissões acima, pois o cliente seguro herda automaticamente as permissões da sua conta atual.
Para criar um cliente seguro, conclua estas etapas:
-
Faça login no Citrix Cloud e navegue até Identity and Access Management > API Access.
-
Digite o nome do seu cliente seguro e clique em Create Client.
Para autenticar-se em servidores remotos, use o comando Set-XDCredentials
do PowerShell. Por exemplo:
Set-XDCredentials -APIKey <key_id> -CustomerId <customer_id> -SecretKey <secret_key> -StoreAs <name specified by the XdProfileName parameter>
Criar uma tarefa automatizada usando o Agendador de Tarefas do Windows
Você pode automatizar o script do PowerShell com o Agendador de Tarefas do Windows. Isso permite que o script seja executado automaticamente em determinados intervalos ou quando determinadas condições são atendidas. Para executar esse script com o Agendador de Tarefas do Windows, selecione Não iniciar uma nova instância na guia Criar tarefa > Configurações. Isso impede que o Agendador de Tarefas do Windows execute uma nova instância se o script já estiver em execução.
Exemplo de execução de script
Veja abaixo um exemplo de execução do script. Observe que o arquivo de script é invocado várias vezes. Neste exemplo, para simular a carga, uma sessão é iniciada e, em seguida, encerrada.
Lista de verificação para a solução de problemas do script
O script grava informações (por exemplo, erros e ações) no Log de Eventos do Windows. As informações ajudam a solucionar os problemas que você tenha ao executar o script. A seguinte lista se mostrou útil para a verificação de problemas e possíveis soluções:
- Falha na comunicação com servidores remotos. Ações possíveis:
- Verifique sua conexão com o servidor.
- Verifique se a chave de API que você usa é válida.
- Falha ao criar máquinas. Ações possíveis:
- Verifique se a conta de usuário que está executando o script tem permissões suficientes para criar contas de usuário no domínio.
- Verifique se o usuário que criou a chave de API tem permissões suficientes para usar o MCS para provisionar máquinas.
- Verifique a validade do catálogo da máquina (ou seja, se a sua imagem ainda existe e se está em bom estado).
- Falha ao adicionar máquinas a um catálogo de máquinas ou a um grupo de entrega. Ação possível:
- Verifique se o usuário que criou a chave de API tem permissões suficientes para adicionar e remover máquinas de e para catálogos de máquinas e grupos de entrega.