Citrix Virtual Apps and Desktops Service

Provisioning dynamique des machines

Provisionner dynamiquement les machines avec Autoscale

Autoscale permet de créer des machines et de les supprimer dynamiquement. Vous pouvez optimiser cette fonctionnalité en utilisant un script PowerShell. Le script vous permet d’augmenter ou de réduire dynamiquement le nombre de machines dans le groupe de mise à disposition en fonction des conditions de charge actuelles.

Le script offre les avantages suivants (et plus) :

  • Réduction des coûts de stockage. Différent de la fonctionnalité Autoscale, qui contribue à réduire vos coûts informatiques, le script fournit une solution plus économique pour provisionner les machines.

  • Gestion efficace des changements de charge. Le script vous aide à gérer les modifications de chargement en redimensionnant automatiquement le nombre de machines en fonction de la charge actuelle du groupe de mise à disposition.

Télécharger le script

Le script PowerShell est disponible à l’adresse https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs.

Fonctionnement du script

Important :

  • Vous ne pouvez pas spécifier un même catalogue de machines dans plusieurs groupes de mise à disposition qui doivent être gérés par le script. En d’autres termes, si plusieurs groupes de mise à disposition partagent le même catalogue de machines, le script ne fonctionne avec aucun de ces groupes de mise à disposition.
  • Vous ne pouvez pas exécuter simultanément le script pour le même groupe de mise à disposition à partir de plusieurs emplacements.

Le script fonctionne au niveau du groupe de mise à disposition. Il mesure la charge (en utilisant l’indice de charge), puis détermine s’il faut créer ou supprimer des machines.

Les machines créées via ce script sont balisées de façon unique (via le paramètre ScriptTag) afin qu’elles puissent être identifiées ultérieurement. La création ou la suppression de machines repose sur les éléments suivants :

  • Pourcentage maximal de charge d’un groupe de mise à disposition. Spécifie le niveau maximal auquel créer des machines pour Autoscale pour traiter des charges supplémentaires. Lorsque ce seuil est dépassé, les machines sont créées par lots pour s’assurer que la charge actuelle diminue jusqu’au seuil ou en dessous.

  • Pourcentage minimal de charge d’un groupe de mise à disposition. Spécifie le niveau minimum auquel supprimer les machines créées via ce script qui n’ont pas de session active. Lorsque ce seuil est dépassé, les machines créées via ce script qui n’ont pas de session active sont supprimées.

Ce script est destiné à surveiller l’ensemble d’un groupe de mise à disposition et à créer ou supprimer des machines lorsque le critère de déclenchement est rempli. Il fonctionne par exécution. Cela signifie que vous devez exécuter le script régulièrement afin qu’il puisse fonctionner comme prévu. Nous vous recommandons d’exécuter le script à un intervalle minimum de cinq minutes. Cela améliore la réactivité globale.

Le script s’appuie sur les paramètres suivants pour fonctionner :

Paramètre Type Valeur par défaut Description
DeliveryGroupName Chaîne X Nom du groupe de mise à disposition à surveiller pour déterminer la charge actuelle. Vous pouvez fournir une liste de noms séparés par des points-virgules. Par exemple : Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName ‘dg1;dg2;dg3’ -XdProfileName profile.
XdProfileName Chaîne X Nom du profil à utiliser pour l’authentification auprès de serveurs distants. Pour plus d’informations sur l’authentification auprès de serveurs distants à l’aide de ce paramètre, reportez-vous à la section API d’authentification.
HighWatermark Nombre entier 80 Pourcentage maximal de charge (en termes d’indice de charge) auquel créer des machines pour Autoscale pour traiter des charges supplémentaires.
LowWatermark Nombre entier 15 Pourcentage minimal de charge (en termes d’indice de charge) auquel supprimer des machines créées par ce script qui n’ont pas de session active.
MachineCatalogName Chaîne X Nom du catalogue de machines dans lequel les machines doivent être créées.
MaximumCreatedMachines Nombre entier -1 Nombre maximal de machines pouvant être créées dans un groupe de mise à disposition spécifié. Si la valeur est égale ou inférieure à 0, le script ne traite pas ce paramètre.
ScriptTag Chaîne AutoscaledScripted Balise qui s’applique aux machines créées via le script.
EventLogSource Chaîne X Nom de source qui apparaît dans l’Observateur d’événements Windows.

Remarque :

Un « X » indique qu’aucune valeur par défaut n’est spécifiée pour ce paramètre.

Par défaut, le script requiert tous les paramètres (sauf le paramètre ScriptTag) la première fois qu’il s’exécute. Lors des exécutions suivantes, seuls les paramètres DeliveryGroupName et XdProfileName sont requis. Le cas échéant, vous pouvez choisir de mettre à jour les charges minimales et maximales en pourcentage.

Notez que vous devez spécifier un seul groupe de mise à disposition la première fois que vous exécutez le script. Par exemple, le script ne fonctionne pas si vous utilisez la commande PowerShell suivante pour spécifier deux groupes de mise à disposition la première fois que vous exécutez le script :

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

Au lieu de cela, spécifiez d’abord un seul groupe de mise à disposition (dans cet exemple, dg1) à l’aide de la commande suivante :

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

Ensuite, utilisez la commande suivante pour exécuter le script pour le deuxième groupe de mise à disposition (dans cet exemple, dg 2) :

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

Conditions préalables

Pour exécuter le script, assurez-vous que les conditions préalables suivantes sont remplies :

  • La machine réside dans le domaine où les machines sont créées.
  • Le SDK PowerShell distant est installé sur cette machine. Pour plus d’informations sur le SDK Remote PowerShell, reportez-vous à la section Kits de développement (SDK) et API.
  • Autres conditions préalables :
    • Un groupe de mise à disposition pour la surveillance
    • Un catalogue de machines créé via Machine Creation Services (MCS) qui a un schéma de provisioning associé (modèle)
    • Un pool d’identités associé au schéma de provisioning
    • Une source de journal d’événements afin que le script puisse écrire des informations dans le journal des événements Windows
    • Un client sécurisé qui vous permet de vous authentifier auprès de serveurs distants

Autorisations, recommandations et avis

Lorsque vous exécutez le script :

  • Pour vous authentifier auprès de serveurs distants à l’aide du paramètre XdProfileName, vous devez définir un profil d’authentification à l’aide d’un client sécurisé d’accès API, créé dans la console Citrix Cloud. Pour plus d’informations, consultez API d’authentification.

  • Vous devez disposer d’autorisations pour créer et supprimer des comptes de machine dans Active Directory.

  • Nous vous recommandons d’automatiser le script PowerShell avec le Planificateur de tâches Windows. Pour plus d’informations, consultez Créer une tâche automatisée à l’aide du Planificateur de tâches Windows.

  • Si vous souhaitez que le script écrive des informations (par exemple, échecs et actions) dans le journal des événements Windows, vous devez d’abord spécifier un nom de source à l’aide de l’applet de commande New-EventLog. Par exemple, New-EventLog -LogName Application –Source <sourceName>. Vous pouvez alors afficher les événements dans le volet Application de l’Observateur d’événements Windows.

  • Si des erreurs se sont produites pendant l’exécution du script, exécutez le script manuellement, puis résolvez les problèmes en effectuant des vérifications de script.

API d’authentification

Avant d’exécuter le script, vous devez définir un profil d’authentification à l’aide d’un client sécurisé d’accès API. Vous devez créer un client sécurisé en utilisant le compte sous lequel le script sera exécuté.

Le client sécurisé doit disposer des autorisations suivantes :

  • Créer et supprimer des machines à l’aide de MCS.
  • Modifier les catalogues de machines (pour ajouter et supprimer des machines).
  • Modifier les groupes de mise à disposition (pour ajouter et supprimer des machines).

Lorsque vous créez un client sécurisé, assurez-vous que votre compte dispose des autorisations ci-dessus car le client sécurisé hérite automatiquement des autorisations de votre compte actuel.

Pour créer un client sécurisé, procédez comme suit :

  1. Connectez-vous à Citrix Cloud, puis accédez à Gestion des identités et des accès > Accès aux API.

  2. Tapez le nom de votre client sécurisé, puis cliquez sur Créer un client.

Pour vous authentifier auprès de serveurs distants, utilisez la commande PowerShell Set-XDCredentials. Par exemple :

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

Créer une tâche automatisée à l’aide du Planificateur de tâches Windows

Vous pouvez automatiser le script PowerShell avec le Planificateur de tâches Windows. Cela permet au script de s’exécuter automatiquement à certains intervalles ou lorsque certaines conditions sont remplies. Pour exécuter ce script avec le Planificateur de tâches Windows, veillez à sélectionner Ne pas démarrer une nouvelle instance dans l’onglet Créer une tâche > Paramètres. Cela empêche le Planificateur de tâches Windows d’exécuter une nouvelle instance du script si le script est déjà en cours d’exécution.

Exemple d’exécution du script

Vous trouverez ci-dessous un exemple d’exécution du script. Notez que le fichier de script est appelé plusieurs fois. Dans cet exemple, pour simuler la charge, une session est lancée, puis terminée.

Exemple d'exécution du script

Liste de vérification de dépannage pour le script

Le script écrit des informations (par exemple, des erreurs et des actions) dans le journal des événements Windows. Ces informations vous aident à résoudre les problèmes que vous rencontrez lors de l’exécution du script. La liste de vérification de dépannage suivante peut être utile :

  • Échec de communication avec les serveurs distants. Actions possibles :
    • Vérifiez votre connexion au serveur.
    • Vérifiez que la clé API que vous utilisez est valide.
  • Échec de la création de machines. Actions possibles :
    • Vérifiez que le compte d’utilisateur exécutant le script dispose d’autorisations suffisantes pour créer des comptes d’utilisateur dans le domaine.
    • Vérifiez que l’utilisateur qui a créé la clé API dispose d’autorisations suffisantes pour utiliser MCS pour provisionner des machines.
    • Vérifiez la validité du catalogue de machines (c’est-à-dire que son image existe toujours et est en bon état).
  • Échec d’ajout de machines à un catalogue de machines ou à un groupe de mise à disposition. Action possible :
    • Vérifiez que l’utilisateur qui a créé la clé API dispose d’autorisations suffisantes pour ajouter et supprimer des machines dans et depuis des catalogues de machines et des groupes de mise à disposition.