Citrix DaaS™

Aprovisionar máquinas dinámicamente

Autoscale™ ofrece la capacidad de crear y eliminar máquinas dinámicamente. Puedes aprovechar esta capacidad mediante un script de PowerShell. El script te ayuda a escalar dinámicamente el número de máquinas en el grupo de entrega, aumentándolo o disminuyéndolo según las condiciones de carga actuales.

El script ofrece los siguientes beneficios (y más):

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

  • Gestionar eficazmente los cambios de carga. El script te ayuda a gestionar los cambios de carga escalando automáticamente el número de máquinas, aumentándolo o disminuyéndolo según 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 puedes especificar un catálogo de máquinas en más de un grupo de entrega que vaya a ser gestionado por el script. En otras palabras, si varios grupos de entrega comparten el mismo catálogo de máquinas, el script no funcionará con ninguno de esos grupos de entrega.
  • No puedes ejecutar el script simultáneamente para el mismo grupo de entrega desde varias ubicaciones.

El script funciona a nivel de grupo de entrega. Mide la carga (en términos de índice de carga) y luego determina si debe crear o eliminar máquinas.

Las máquinas creadas a través de este script se etiquetan de forma única (mediante el parámetro ScriptTag) para que puedan identificarse más tarde. La creación o eliminación de máquinas se basa en:

  • Porcentaje de carga máximo de un grupo de entrega. Especifica el nivel máximo en el que se deben crear máquinas para que Autoscale gestione cargas adicionales. Cuando se supera este umbral, las máquinas se crean en lotes para asegurar que la carga actual disminuya hasta el umbral o por debajo de él.

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

Este script está diseñado para supervisar un grupo de entrega y para crear o eliminar máquinas cuando se cumple el criterio de activación. Se ejecuta por cada vez que se inicia. Esto significa que debes ejecutar el script de forma regular para que funcione según lo previsto. Te recomendamos que ejecutes el script con un intervalo mínimo de cinco minutos. Esto 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 String X Nombre del grupo de entrega que se va a supervisar para determinar la carga actual. Puedes proporcionar una lista de nombres separados por punto y coma. Por ejemplo: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile.
XdProfileName String X Nombre del perfil que se va a usar para la autenticación en servidores remotos. Para obtener más información sobre la autenticación en servidores remotos mediante este parámetro, consulta Authentication API.
HighWatermark Integer 80 Porcentaje de carga máximo (en términos de índice de carga) en el que se deben crear máquinas para que Autoscale gestione cargas adicionales.
LowWatermark Integer 15 Porcentaje de carga mínimo (en términos de índice de carga) en el que se deben eliminar las máquinas creadas a través de este script que no tienen sesiones activas.
MachineCatalogName String X Nombre del catálogo de máquinas donde se van a crear las máquinas.
MaximumCreatedMachines Integer -1 Cantidad máxima de máquinas que se pueden crear en un grupo de entrega especificado. Si el valor es igual o inferior a 0, el script no procesa este parámetro.
ScriptTag String AutoscaledScripted Etiqueta que se aplica a las máquinas creadas a través del script.
EventLogSource String X Nombre de origen que aparece en el Visor de eventos de Windows.

Nota:

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

De forma predeterminada, el script requiere todos los parámetros (excepto el parámetro ScriptTag) la primera vez que se ejecuta. En ejecuciones posteriores, solo se requieren los parámetros DeliveryGroupName y XdProfileName. Opcionalmente, puedes elegir actualizar los porcentajes de carga mínimos y máximos.

Ten en cuenta que debes especificar un único grupo de entrega la primera vez que ejecutes el script. Por ejemplo, el script no funciona si usas el siguiente comando de PowerShell para especificar dos grupos de entrega la primera vez que ejecutas el script:

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

En su lugar, primero especifica un único grupo de entrega (en este ejemplo, dg1) usando el siguiente comando:

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

Luego, usa 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úrate de que se cumplen estos requisitos previos:

  • La máquina reside en el mismo dominio donde se están creando las máquinas.
  • El SDK de PowerShell remoto está instalado en esa máquina. Para obtener más información sobre el SDK de PowerShell remoto, consulta SDKs and APIs.
  • Otros requisitos previos:
    • Un grupo de entrega para supervisar
    • Un catálogo de máquinas creado a través de Machine Creation Services™ (MCS) que tenga un esquema de aprovisionamiento (plantilla) asociado
    • 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 el registro de eventos de Windows
    • Un cliente seguro que te permita autenticarte en servidores remotos

Permisos, recomendaciones y avisos

Cuando ejecutes el script, ten en cuenta lo siguiente:

  • Para autenticarte en servidores remotos usando el parámetro XdProfileName, debes definir un perfil de autenticación utilizando un cliente seguro de acceso a la API, creado en la consola de Citrix Cloud. Para obtener más información, consulta API de autenticación.

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

  • Te recomendamos que automatices el script de PowerShell con el Programador de tareas de Windows. Para obtener más información, consulta Crear una tarea automatizada con el Programador de tareas de Windows.

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

  • Si se produjeron errores durante la ejecución del script, ejecútalo manualmente y luego soluciona los problemas realizando comprobaciones del script.

API de autenticación

Antes de ejecutar el script, debes definir un perfil de autenticación utilizando un cliente seguro de acceso a la API. Debes crear un cliente seguro con la misma cuenta con la que se ejecutará el script.

El cliente seguro debe tener los siguientes permisos:

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

Cuando crees un cliente seguro, asegúrate de que tu cuenta tenga los permisos anteriores, ya que el cliente seguro hereda automáticamente los permisos de tu cuenta actual.

Para crear un cliente seguro, sigue estos pasos:

  1. Inicia sesión en Citrix Cloud™ y, a continuación, ve a Identity and Access Management > API Access.

  2. Escribe el nombre de tu cliente seguro y, a continuación, haz clic en Create Client.

Para autenticarte en servidores remotos, usa el comando de PowerShell Set-XDCredentials. 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 el Programador de tareas de Windows

Puedes automatizar el script de PowerShell con el Programador de tareas de Windows. Esto permite que el script se ejecute automáticamente a intervalos determinados o cuando se cumplen ciertas condiciones. Para ejecutar este script con el Programador de tareas de Windows, asegúrate de seleccionar Do not start a new instance en la ficha Create Task > Settings. Esto evita que el Programador de tareas de Windows ejecute una nueva instancia del script si este ya se está ejecutando.

Ejemplo de ejecución del script

A continuación, se muestra un ejemplo de ejecución del script. Ten en cuenta que el archivo del script se invoca varias veces. En este ejemplo, para simular la carga, se inicia una sesión y luego se finaliza.

Ejemplo de ejecución del script

Lista de comprobación para la solución de problemas del script

El script escribe información (por ejemplo, errores y acciones) en el Registro de eventos de Windows. Esta información te ayuda a solucionar los problemas que experimentes al ejecutar el script. Puede ser útil tener en cuenta la siguiente lista de comprobación para la solución de problemas:

  • Fallo al comunicarse con servidores remotos. Posibles acciones:
    1. Verifica tu conexión al servidor.
    2. Verifica que la clave de API que utilizas sea válida.
  • Fallo al crear máquinas. Posibles acciones:
    1. Verifica que la cuenta de usuario que ejecuta el script tenga permisos suficientes para crear cuentas de usuario en el dominio.
    2. Verifica que el usuario que creó la clave de API tenga permisos suficientes para usar MCS para aprovisionar máquinas.
    3. Verifica la validez del catálogo de máquinas (es decir, que su imagen aún exista y esté en buen estado).
  • Fallo al agregar máquinas a un catálogo de máquinas o a un grupo de entrega. Posible acción:
    1. Verifica que el usuario que creó la clave de API tenga permisos suficientes para agregar y quitar máquinas de los catálogos de máquinas y los grupos de entrega.
Aprovisionar máquinas dinámicamente