Citrix Virtual Apps and Desktops Service

Aprovisionamiento dinámico de máquinas

Aprovisionar máquinas de forma dinámica con Autoscale

Autoscale ofrece la posibilidad de crear máquinas y eliminarlas dinámicamente. Puede hacer uso de esta función a través de un script de PowerShell. El script le ayuda a aumentar o reducir dinámicamente la cantidad de máquinas del grupo de entrega en función de las condiciones de carga actuales.

El script ofrece las siguientes ventajas (y más):

  • Reducción de los costes de almacenamiento. A diferencia de Autoscale, que ayuda a reducir los costes informáticos, el script proporciona una solución más rentable para aprovisionar máquinas.

  • Gestión eficaz de los cambios de carga. El script le ayuda a gestionar los cambios de carga con el aumento o la reducción automática de la cantidad de máquinas en función de la carga actual del grupo de entrega.

Descargar el script

El script de PowerShell está disponible en https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs.

Cómo funciona el script

Importante:

  • No se puede especificar un catálogo de máquinas perteneciente a más de un grupo de entrega que se vaya a administrar a través del script. Es decir, que, si varios grupos de entrega comparten un mismo catálogo de máquinas, el script no funciona con ninguno de esos grupos de entrega.
  • No puede ejecutar simultáneamente el script para el mismo grupo de entrega desde varias ubicaciones.

El script funciona a nivel de grupos de entrega. Mide la carga (en términos de índice de carga) y, a continuación, determina si se deben crear o eliminar máquinas.

Las máquinas creadas a través de este script se etiquetan de forma individual (por medio del parámetro ScriptTag), de manera que puedan identificarse más tarde. La creación o eliminación de máquinas se basa en:

  • Porcentaje máximo de carga de un grupo de entrega. Especifica el nivel máximo a partir del cual se crearán máquinas, de manera que Autoscale gestione las cargas adicionales. Cuando se supera este umbral, se crean máquinas en lotes a fin de garantizar que la carga actual disminuya hasta o por debajo del umbral.

  • Porcentaje mínimo de carga de un grupo de entrega. Especifica el nivel mínimo a partir del cual se eliminarán las máquinas creadas mediante este script que no tengan sesiones activas. Cuando se supera este umbral, se eliminan las máquinas creadas a través de este script que no tienen sesiones activas.

Este script se diseñó para supervisar todo un grupo de entrega y para crear o eliminar máquinas cuando se cumpla el criterio desencadenador. Se ejecuta proceso por proceso. Esto significa que debe ejecutar el script de forma periódica para que pueda funcionar según lo previsto. Le recomendamos que ejecute el script a intervalos mínimos de cinco minutos. Al hacerlo, mejora la capacidad de respuesta general.

El script se basa en los siguientes parámetros para funcionar:

Parámetro Tipo Valor predeterminado Descripción
DeliveryGroupName Cadena X Nombre del grupo de entrega que se va a supervisar para determinar la carga actual. Puede proporcionar una lista de nombres separados por punto y coma. Por ejemplo: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName ‘dg1;dg2;dg3’ -XdProfileName profile.
XdProfileName Cadena X Nombre del perfil que se va a utilizar para autenticación en servidores remotos. Para obtener información detallada sobre la autenticación en servidores remotos mediante este parámetro, consulte API de autenticación.
HighWatermark Número entero 80 Carga porcentual máxima (en términos de índice de carga) a partir de la cual se crearán máquinas para que Autoscale gestione las cargas adicionales.
LowWatermark Número entero 15 Porcentaje mínimo de carga (en términos de índice de carga) a partir del cual se eliminarán las máquinas creadas mediante este script que no tengan sesiones activas.
MachineCatalogName Cadena X Nombre del catálogo de máquinas donde se van a crear las máquinas.
MaximumCreatedMachines Número entero -1 Cantidad máxima de máquinas que se pueden crear en un grupo de entrega especificado. Si el valor es igual o menor que 0, el script no procesa este parámetro.
ScriptTag Cadena AutoscaledScripted Etiqueta que se aplica a las máquinas creadas a través del script.
EventLogSource Cadena X Nombre de origen que aparece en Visor de eventos de Windows.

Nota:

Una “X” indica que no se ha especificado ningún valor predeterminado para ese parámetro.

De forma predeterminada, el script requiere todos los parámetros (excepto ScriptTag) la primera vez que se ejecuta. En instancias posteriores, solo se requieren los parámetros DeliveryGroupName y XdProfileName. Opcionalmente, puede optar por actualizar las cargas porcentuales mínima y máxima.

La primera vez que ejecute el script, deberá especificar un solo grupo de entrega. Por ejemplo, el script no funcionará si utiliza el siguiente comando de PowerShell para especificar dos grupos de entrega la primera vez que lo ejecute:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1;dg2’ -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName ‘cat1’\

En su lugar, especifique primero un solo grupo de entrega (en este ejemplo, dg1) con el siguiente comando:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1’ -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName ‘cat1’\

A continuación, utilice el siguiente comando para ejecutar el script para el segundo grupo de entrega (en este ejemplo, dg2):

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1;dg2’ -XdProfileName profile

Requisitos previos

Para ejecutar el script, asegúrese de que se cumplen estos requisitos previos:

  • La máquina reside en el mismo dominio que las máquinas que se van a crear.
  • SDK de PowerShell remoto está instalado en esa máquina. Para obtener más información sobre el SDK de PowerShell remoto, consulte SDK y API.
  • Otros requisitos previos:
    • Un grupo de entrega que supervisar
    • Un catálogo de máquinas creado con Machine Creation Services (MCS) que tenga un esquema de aprovisionamiento asociado (plantilla)
    • Un grupo de identidades asociado al esquema de aprovisionamiento
    • Un origen de registro de eventos que se creará para que el script pueda escribir información en Registro de eventos de Windows
    • Un cliente seguro que le permite autenticarse en servidores remotos

Permisos, recomendaciones y avisos

Cuando ejecute el script, tenga en cuenta lo siguiente:

  • Para autenticarse en servidores remotos mediante el parámetro XdProfileName, deberá definir un perfil de autenticación con un cliente seguro de acceso a API, creado en la consola de Citrix Cloud. Para obtener información detallada, consulte API de autenticación.

  • Debe tener permisos para crear y eliminar cuentas de máquina en Active Directory.

  • Se recomienda automatizar el script de PowerShell con Programador de tareas de Windows. Para obtener información detallada, consulte Crear una tarea automatizada con Programador de tareas de Windows.

  • Si quiere que el script escriba información (por ejemplo, errores y acciones) en Registro de eventos de Windows, debe especificar primero un nombre de origen mediante el cmdlet New-EventLog. Por ejemplo, New-EventLog -LogName Application –Source <sourceName>. A continuación, podrá ver los eventos en el panel Aplicación del Visor de eventos de Windows.

  • Si se produjeron errores durante la ejecución del script, ejecute el script manualmente y, a continuación, solucione los problemas haciendo las comprobaciones necesarias.

API de autenticación

Antes de ejecutar el script, debe definir un perfil de autenticación mediante un cliente seguro de acceso a API. Deberá crear un cliente seguro mediante la misma cuenta en la que se ejecutará el script.

El cliente seguro debe tener los siguientes permisos:

  • Crear y eliminar máquinas con MCS.
  • Modificar catálogos de máquinas (para agregar y quitar máquinas).
  • Modificar grupos de entrega (para agregar y quitar máquinas).

Cuando cree un cliente seguro, asegúrese de que su cuenta tiene los permisos anteriores, ya que el cliente seguro heredará automáticamente los permisos de su cuenta actual.

Para crear un cliente seguro, siga estos pasos:

  1. Inicie sesión en la consola de Citrix Cloud y abra Administración de acceso e identidad > Acceso a API.

  2. Escriba el nombre del cliente seguro y, a continuación, haga clic en Crear cliente.

Para autenticarse en servidores remotos, use el comando Set-XDCredentials de PowerShell. Por ejemplo:

  • Set-XDCredentials -APIKey <key_id> -CustomerId <customer_id> -SecretKey <secret_key> -StoreAs <name specified by the XdProfileName parameter>

Crear una tarea automatizada con Programador de tareas de Windows

Puede automatizar el script de PowerShell con Programador de tareas de Windows. Al hacerlo, el script se ejecuta automáticamente a determinados intervalos o cuando se cumplen ciertas condiciones. Para ejecutar este script con Programador de tareas de Windows, seleccione No iniciar una instancia nueva en la ficha Crear tarea > Configuración. Al hacerlo, se impide que Programador de tareas de Windows ejecute una nueva instancia del script si este ya se está ejecutando.

Ejemplo de ejecución del script

Vea a continuación un ejemplo de ejecución del script. Tenga en cuenta que el archivo del script se invoca varias veces. En este ejemplo, para simular la carga, se inicia y se termina una sesión.

Ejemplo de ejecución del script

Lista de comprobación para solución de problemas con el script

El script escribe información (por ejemplo, errores y acciones) en Registro de eventos de Windows. Esta información le ayuda a solucionar problemas que se producen durante la ejecución del script. La siguiente lista de comprobación para solución de problemas puede ser útil:

  • Error al comunicar con servidores remotos. Acciones posibles:
    • Compruebe la conexión con el servidor.
    • Compruebe que la clave API que utiliza es válida.
  • Error al crear máquinas. Acciones posibles:
    • Compruebe que la cuenta de usuario que ejecuta el script tiene permisos suficientes para crear cuentas de usuario en el dominio.
    • Compruebe que el usuario que creó la clave de API tiene permisos suficientes para aprovisionar máquinas mediante MCS.
    • Verifique la validez del catálogo de máquinas (es decir, su imagen aún existe y está en buen estado).
  • Error al agregar máquinas a un catálogo de máquinas o a un grupo de entrega. Acción posible:
    • Compruebe que el usuario que creó la clave de API tiene permisos suficientes para agregar máquinas a catálogos de máquinas y grupos de entrega, y también para quitar máquinas de catálogos de máquinas y grupos de entrega.