Escalado de hosts de sesión mediante Azure Automation y Azure Logic Apps para Azure Virtual Desktop

Puede reducir el costo total de implementación de Azure Virtual Desktop mediante el escalado de las máquinas virtuales. Esto significa que se cierran y desasignan las máquinas virtuales del host de sesión durante las horas de menos uso y, posteriormente, se vuelven a activar y se reasignan durante las horas punta.

En este artículo, obtendrá información sobre la herramienta de escalado creada con la cuenta de Azure Automation y Azure Logic Apps que escala automáticamente las máquinas virtuales del host de sesión en el entorno de Azure Virtual Desktop. Para aprender a usar la herramienta de escalado, vea Configuración del escalado de hosts de sesión mediante Azure Automation y Azure Logic Apps.

Nota:

La solución de escalabilidad automática nativa de Azure Virtual Desktop está disponible con carácter general para los grupos de hosts personales y agrupados, y escalará o reducirá verticalmente de forma automática las máquinas virtuales del host de sesión en función de la programación de escalado. Se recomienda usar la escalabilidad automática para facilitar la configuración. Para obtener más información, consulte Planes de escalado de la escalabilidad automática.

Funcionamiento de la herramienta de escalado

La herramienta de escalado proporciona una opción de automatización de bajo costo para aquellos clientes que deseen optimizar los costos de las máquinas virtuales del host de sesión.

Puede usar la herramienta de escalado para:

  • Programar las máquinas virtuales para que se inicien y se detengan según el horario comercial de horas punta y horas de menos uso.
  • Escalar horizontalmente las máquinas virtuales basadas en el número de sesiones por núcleo de CPU.
  • Reducir horizontalmente las máquinas virtuales durante las horas de menos uso, lo que mantiene en ejecución el número mínimo de máquinas virtuales del host de sesión.

Para funcionar, la herramienta de escalado usa una combinación de cuentas de Azure Automation, un runbook de PowerShell, un webhook y una aplicación lógica. Al ejecutar la herramienta, la aplicación lógica llama a un webhook para iniciar el runbook. A continuación, el runbook crea un trabajo.

Las horas punta y las horas de poca actividad se definen de la siguiente forma:

  • Hora punta: hora a la que se espera que se alcance la simultaneidad máxima de la sesión de usuario.
  • Fuera de hora punta: hora a la que se espera que se alcance la simultaneidad mínima de la sesión de usuario.

Durante el tiempo de uso en horas punta, el trabajo comprueba el número actual de sesiones y la capacidad de la máquina virtual del host de sesión que se está ejecutando para cada grupo de hosts. Usa esta información para calcular si las máquinas virtuales del host de sesión pueden admitir las sesiones existentes en función del parámetro SessionThresholdPerCPU definido en el archivo CreateOrUpdateAzLogicApp.ps1. Si las máquinas virtuales del host de sesión no admiten las sesiones existentes, el trabajo inicia máquinas virtuales del host de sesión adicionales en el grupo de hosts.

Nota

SessionThresholdPerCPU no restringe el número de sesiones en la máquina virtual. Este parámetro solo determina cuándo es necesario iniciar nuevas máquinas virtuales para equilibrar la carga de las conexiones. Para restringir el número de sesiones, debe seguir las instrucciones de Update-AzWvdHostPool para configurar el parámetro MaxSessionLimit en consecuencia.

En las horas de menos uso, el trabajo determina cuántas máquinas virtuales de los hosts de sesión deberían apagarse según el parámetro MinimumNumberOfRDSH. Si establece el parámetro LimitSecondsToForceLogOffUser en un valor positivo distinto de cero, el trabajo establecerá las máquinas virtuales del host de sesión en modo de purga para evitar que las sesiones nuevas se conecten a los hosts. Después, el trabajo enviará a los usuarios que tengan la sesión iniciada la notificación de que guarden su trabajo, esperará el periodo predeterminado y, después, obligará a los usuarios a cerrar la sesión. Cuando se hayan cerrado todas las sesiones de usuario en la máquina virtual del host de sesión, el trabajo apagará la máquina virtual. Una vez que la máquina virtual se apague, el trabajo restablecerá el modo de purga del host de sesión.

Nota

Si configura manualmente la máquina virtual del host de sesión en el modo de purga, el trabajo no administrará la máquina virtual del host de sesión. Si la máquina virtual del host de sesión está en ejecución y se establece en modo de purga, se tratará como no disponible, por lo que el trabajo iniciará máquinas virtuales adicionales para administrar la carga. Se recomienda etiquetar todas las máquinas virtuales de Azure antes de establecerlas manualmente en modo de purga. Puede asignar un nombre a la etiqueta con el parámetro MaintenanceTagName al crear la instancia de Azure Logic App Scheduler más adelante. Las etiquetas le ayudarán a distinguir estas máquinas virtuales de las que administra la herramienta de escalado. La configuración de la etiqueta de mantenimiento también evita que la herramienta de escalado realice cambios en la máquina virtual hasta que quite la etiqueta.

Si establece el parámetro LimitSecondsToForceLogOffUser en cero, el trabajo permite que el valor de configuración de la sesión en las directivas de grupo especificadas controle el cierre de las sesiones de los usuarios. Para ver estas directivas de grupo, vaya a Configuración del equipo>Directivas>Plantillas administrativas>Componentes de Windows>Servicios de Escritorio remoto>Host de sesión de Escritorio remoto>Límites de tiempo de sesión. Si hay sesiones activas en una máquina virtual del host de sesión, el trabajo dejará que se ejecute esa máquina. Si no hay ninguna sesión activa, el trabajo apagará la máquina virtual del host de sesión.

En cualquier momento, el trabajo también tiene en cuenta el elemento MaxSessionLimit del grupo de hosts para determinar si el número actual de sesiones es superior al 90 % de la capacidad máxima. Si es así, el trabajo iniciará máquinas virtuales de host de sesión adicionales.

El trabajo se ejecuta periódicamente según un intervalo de periodicidad establecido. Puede cambiar este intervalo según el tamaño del entorno de Azure Virtual Desktop, pero recuerde que el inicio y el apagado de las VM pueden tardar algún tiempo, por lo que debe tener en cuenta el retraso. Se recomienda establecer el intervalo de periodicidad en 15 minutos.

Sin embargo, la herramienta también tiene las siguientes limitaciones:

  • Esta solución solo se aplica a las máquinas virtuales de host multisesión agrupadas.
  • Esta solución administra máquinas virtuales de cualquier región, pero solo se puede usar en la misma suscripción que la cuenta de Azure Automation y Azure Logic Apps.
  • El tiempo de ejecución máximo de un trabajo en el runbook es de tres horas. Si el inicio o la detención de las máquinas virtuales del grupo de hosts tarda más, se producirá un error en el trabajo. Para más información, vea Recursos compartidos.
  • Se debe activar al menos una máquina virtual o un host de sesión para que el algoritmo de escalado funcione correctamente.
  • La herramienta de escalado no admite el escalado en función de la CPU o la memoria.
  • El escalado solo funciona con los hosts existentes en el grupo de hosts. La herramienta de escalado no admite el escalado de nuevos hosts de sesión.

Nota

La herramienta de escalado controla el modo de equilibrio de carga del grupo de hosts que se está escalando actualmente. La herramienta usa el modo de equilibrio de carga en amplitud tanto en las horas punta como en las horas de menos uso.

Pasos siguientes