Citrix DaaS™

Provisionner des machines de manière dynamique

  • Autoscale™ offre la possibilité de créer et de supprimer des machines de manière dynamique. Vous pouvez tirer parti de cette fonctionnalité en utilisant un script PowerShell. Le script vous aide à augmenter ou à 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 encore) :

  • Réduction des coûts de stockage. Contrairement à Autoscale, qui aide à réduire vos coûts de calcul, le script offre une solution plus rentable pour provisionner des machines.

  • Gestion efficace des changements de charge. Le script vous aide à gérer les changements de charge en augmentant ou en réduisant 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 catalogue de machines dans plus d’un groupe de mise à disposition géré 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 le script simultanément 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 termes d’indice de charge) et détermine ensuite s’il faut créer ou supprimer des machines.

Les machines créées via ce script sont identifiées de manière unique (par le paramètre ScriptTag) afin de pouvoir être reconnues ultérieurement. La création ou la suppression de machines est basée sur :

  • Charge maximale en pourcentage d’un groupe de mise à disposition. Spécifie le niveau maximal auquel créer des machines pour qu’Autoscale gère les charges supplémentaires. Lorsque ce seuil est dépassé, les machines sont créées par lots pour garantir que la charge actuelle diminue jusqu’à ou en dessous du seuil.

  • Charge minimale en pourcentage d’un groupe de mise à disposition. Spécifie le niveau minimal auquel supprimer les machines créées via ce script qui n’ont pas de sessions actives. Lorsque ce seuil est dépassé, les machines créées via ce script qui n’ont pas de sessions actives sont supprimées.

Ce script est destiné à surveiller un groupe de mise à disposition et à créer ou supprimer des machines lorsque le critère de déclenchement est rempli. Il s’exécute à chaque fois qu’il est lancé. 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 String 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 String X Nom du profil à utiliser pour l’authentification auprès des serveurs distants. Pour plus de détails sur l’authentification auprès des serveurs distants à l’aide de ce paramètre, consultez API d’authentification.
    HighWatermark Integer 80 Charge maximale en pourcentage (en termes d’indice de charge) à laquelle créer des machines pour qu’Autoscale gère les charges supplémentaires.
    LowWatermark Integer 15 Charge minimale en pourcentage (en termes d’indice de charge) à laquelle supprimer les machines créées via ce script qui n’ont pas de sessions actives.
  • MachineCatalogName String X Nom du catalogue de machines où les machines doivent être créées.
  • MaximumCreatedMachines Integer -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 String AutoscaledScripted Balise qui s’applique aux machines créées via le script.
    • EventLogSource String X Nom de la 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 (à l’exception du paramètre ScriptTag) lors de sa première exécution. Lors des exécutions ultérieures, seuls les paramètres DeliveryGroupName et XdProfileName sont requis. Vous pouvez éventuellement 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, dg2) :

  • 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 même domaine où les machines sont créées.
  • Le SDK PowerShell distant est installé sur cette machine. Pour plus d’informations sur le SDK PowerShell distant, consultez SDK et API.
  • Autres conditions préalables :
    • Un groupe de mise à disposition à surveiller
    • Un catalogue de machines créé via Machine Creation Services™ (MCS) qui possède un schéma de provisionnement (modèle) associé
    • Un pool d’identités associé au schéma de provisionnement
    • Une source de journal d’événements à créer afin que le script puisse écrire des informations dans le journal d’événements Windows
    • Un client sécurisé qui vous permet de vous authentifier auprès des serveurs distants

Autorisations, recommandations et avis

-  Lorsque vous exécutez le script, tenez compte des points suivants :

-  Pour vous authentifier auprès des serveurs distants à l’aide du paramètre `XdProfileName`, vous devez définir un profil d’authentification en utilisant un client sécurisé d’accès à l’API, créé dans la console Citrix Cloud. Pour plus de détails, consultez [API d’authentification](/fr-fr/citrix-daas/manage-deployment/autoscale/dynamic-machine-provisioning.html#authentication-api).
  • Vous devez disposer des autorisations nécessaires pour créer et supprimer des comptes d’ordinateur dans Active Directory.

  • Si vous souhaitez que le script écrive des informations (par exemple, les échecs et les 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 ensuite afficher les événements dans le volet Application de l’Observateur d’événements Windows.

  • Si des erreurs se sont produites lors de l’exécution du script, exécutez le script manuellement, puis résolvez les problèmes en effectuant des vérifications du 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 à l’API. Vous devez créer un client sécurisé en utilisant le même compte sous lequel le script s’exécutera.

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é, suivez les étapes suivantes :

  1. Connectez-vous à Citrix Cloud™ et accédez à Identity and Access Management > API Access.

  2. Saisissez le nom de votre client sécurisé, puis cliquez sur Create Client.

Pour vous authentifier auprès des 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, assurez-vous de sélectionner Ne pas démarrer une nouvelle instance sous 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 de script

Voir 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 de script

Liste de contrôle de dépannage pour le script

Le script écrit des informations (par exemple, les erreurs et les 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. Il peut être utile de garder à l’esprit la liste de contrôle de dépannage suivante :

  • Échec de la 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 des autorisations suffisantes pour créer des comptes d’utilisateur dans le domaine.
    • Vérifiez que l’utilisateur qui a créé la clé API dispose des autorisations suffisantes pour utiliser MCS afin de 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 de l’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 des autorisations suffisantes pour ajouter et supprimer des machines des catalogues de machines et des groupes de mise à disposition.
Provisionner des machines de manière dynamique