Citrix DaaS™

Provisioning dinamico delle macchine

Autoscale™ offre la possibilità di creare ed eliminare macchine in modo dinamico. È possibile sfruttare questa funzionalità utilizzando uno script PowerShell. Lo script consente di aumentare o diminuire dinamicamente il numero di macchine nel gruppo di consegna in base alle condizioni di carico attuali.

Lo script offre i seguenti vantaggi (e altro ancora):

  • Riduzione dei costi di archiviazione. A differenza di Autoscale, che aiuta a ridurre i costi di elaborazione, lo script fornisce una soluzione più economica per il provisioning delle macchine.

  • Gestione efficace delle modifiche del carico. Lo script aiuta a gestire le modifiche del carico aumentando o diminuendo automaticamente il numero di macchine in base al carico attuale del gruppo di consegna.

Scaricare lo script

Lo script PowerShell è disponibile all’indirizzo https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs.

Come funziona lo script

Importante:

  • Non è possibile specificare un catalogo di macchine in più di un gruppo di consegna che deve essere gestito dallo script. In altre parole, se più gruppi di consegna condividono lo stesso catalogo di macchine, lo script non funziona con nessuno di questi gruppi di consegna.
  • Non è possibile eseguire contemporaneamente lo script per lo stesso gruppo di consegna da più posizioni.

Lo script funziona a livello di gruppo di consegna. Misura il carico (in termini di indice di carico) e quindi determina se creare o eliminare macchine.

Le macchine create tramite questo script sono contrassegnate in modo univoco (tramite il parametro ScriptTag) in modo da poter essere identificate in seguito. La creazione o l’eliminazione di macchine si basa su:

  • Carico percentuale massimo di un gruppo di consegna. Specifica il livello massimo al quale creare macchine affinché Autoscale gestisca carichi extra. Quando questa soglia viene superata, le macchine vengono create in batch per garantire che il carico attuale diminuisca fino o al di sotto della soglia.

  • Carico percentuale minimo di un gruppo di consegna. Specifica il livello minimo al quale eliminare le macchine create tramite questo script che non hanno sessioni attive. Quando questa soglia viene superata, le macchine create tramite questo script che non hanno sessioni attive vengono eliminate.

Questo script è destinato a monitorare un gruppo di consegna e a creare o eliminare macchine quando il criterio di attivazione è soddisfatto. Viene eseguito su base “per esecuzione”. Ciò significa che è necessario eseguire lo script regolarmente affinché funzioni come previsto. Si consiglia di eseguire lo script a un intervallo minimo di cinque minuti. Ciò migliora la reattività complessiva.

Lo script si basa sui seguenti parametri per funzionare:

Parametro Tipo Valore predefinito Descrizione
DeliveryGroupName String X Nome del gruppo di consegna da monitorare per determinare il carico attuale. È possibile fornire un elenco di nomi separati da punto e virgola. Ad esempio: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile.
XdProfileName String X Nome del profilo da utilizzare per l’autenticazione ai server remoti. Per dettagli sull’autenticazione ai server remoti utilizzando questo parametro, vedere API di autenticazione.
HighWatermark Integer 80 Carico percentuale massimo (in termini di indice di carico) al quale creare macchine affinché Autoscale gestisca carichi extra.
LowWatermark Integer 15 Carico percentuale minimo (in termini di indice di carico) al quale eliminare le macchine create tramite questo script che non hanno sessioni attive.
MachineCatalogName String X Nome del catalogo di macchine in cui devono essere create le macchine.
MaximumCreatedMachines Integer -1 Numero massimo di macchine che possono essere create in un gruppo di consegna specificato. Se il valore è uguale o inferiore a 0, lo script non elabora questo parametro.
ScriptTag String AutoscaledScripted Tag che si applica alle macchine create tramite lo script.
EventLogSource String X Nome della sorgente che appare nel Visualizzatore eventi di Windows.

Nota:

Una “X” indica che non è specificato alcun valore predefinito per quel parametro.

Per impostazione predefinita, lo script richiede tutti i parametri (eccetto il parametro ScriptTag) la prima volta che viene eseguito. Nelle esecuzioni successive, sono richiesti solo i parametri DeliveryGroupName e XdProfileName. Opzionalmente, è possibile scegliere di aggiornare i carichi percentuali minimi e massimi.

Si noti che è necessario specificare un singolo gruppo di consegna la prima volta che si esegue lo script. Ad esempio, lo script non funziona se si utilizza il seguente comando PowerShell per specificare due gruppi di consegna la prima volta che si esegue lo script:

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

Invece, specificare prima un singolo gruppo di consegna (in questo esempio, dg1) utilizzando il seguente comando:

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

Quindi, utilizzare il seguente comando per eseguire lo script per il secondo gruppo di consegna (in questo esempio, dg2):

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

Prerequisiti

Per eseguire lo script, assicurarsi che siano soddisfatti i seguenti prerequisiti:

  • La macchina risiede nello stesso dominio in cui vengono create le macchine.
  • L’SDK PowerShell remoto è installato su quella macchina. Per maggiori informazioni sull’SDK PowerShell remoto, vedere SDK e API.
  • Altri prerequisiti:
    • Un gruppo di consegna da monitorare
    • Un catalogo di macchine creato tramite Machine Creation Services™ (MCS) che abbia uno schema di provisioning (modello) associato
    • Un pool di identità associato allo schema di provisioning
    • Una sorgente del registro eventi da creare in modo che lo script possa scrivere informazioni nel registro eventi di Windows
    • Un client sicuro che Le consenta di autenticarsi ai server remoti

Autorizzazioni, raccomandazioni e avvisi

Quando si esegue lo script, tenere presente quanto segue:

  • Per autenticarsi ai server remoti utilizzando il parametro XdProfileName, è necessario definire un profilo di autenticazione utilizzando un client sicuro di accesso API, creato nella console di Citrix Cloud. Per dettagli, vedere API di autenticazione.

  • Deve disporre delle autorizzazioni per creare ed eliminare account macchina in Active Directory.

  • Le consigliamo di automatizzare lo script PowerShell con Utilità di pianificazione di Windows. Per dettagli, vedere Creare un’attività automatizzata usando Utilità di pianificazione di Windows.

  • Se desidera che lo script scriva informazioni (ad esempio, errori e azioni) nel registro eventi di Windows, è necessario specificare prima un nome di sorgente utilizzando il cmdlet New-EventLog. Ad esempio, New-EventLog -LogName Application –Source <sourceName>. È quindi possibile visualizzare gli eventi nel riquadro Applicazione del Visualizzatore eventi di Windows.

  • Se si sono verificati errori durante l’esecuzione dello script, eseguire lo script manualmente e quindi risolvere i problemi eseguendo controlli dello script.

API di autenticazione

Prima di eseguire lo script, è necessario definire un profilo di autenticazione utilizzando un client sicuro di accesso API. È necessario creare un client sicuro utilizzando lo stesso account con cui verrà eseguito lo script.

Il client sicuro deve disporre delle seguenti autorizzazioni:

  • Creare ed eliminare macchine usando MCS.
  • Modificare i cataloghi di macchine (per aggiungere e rimuovere macchine).
  • Modificare i gruppi di consegna (per aggiungere e rimuovere macchine).

Quando si crea un client sicuro, assicurarsi che il Suo account disponga delle autorizzazioni di cui sopra perché il client sicuro eredita automaticamente le autorizzazioni dal Suo account corrente.

Per creare un client sicuro, completare questi passaggi:

  1. Accedere a Citrix Cloud™ e quindi navigare su Identity and Access Management > API Access.

  2. Digitare il nome per il Suo client sicuro e quindi fare clic su Create Client.

Per autenticarsi ai server remoti, utilizzare il comando PowerShell Set-XDCredentials. Ad esempio:

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

Creare un’attività automatizzata usando Utilità di pianificazione di Windows

È possibile automatizzare lo script PowerShell con Utilità di pianificazione di Windows. Ciò consente allo script di essere eseguito automaticamente a determinati intervalli o quando vengono soddisfatte determinate condizioni. Per eseguire questo script con Utilità di pianificazione di Windows, assicurarsi di selezionare Non avviare una nuova istanza nella scheda Crea attività > Impostazioni. Ciò impedisce a Utilità di pianificazione di Windows di eseguire una nuova istanza dello script se lo script è già in esecuzione.

Esempio di esecuzione dello script

Vedere di seguito un esempio di esecuzione dello script. Si noti che il file dello script viene richiamato più volte. In questo esempio, per simulare il carico, viene avviata e quindi terminata una sessione.

Esempio di esecuzione dello script

Elenco di controllo per la risoluzione dei problemi dello script

Lo script scrive informazioni (ad esempio, errori e azioni) nel registro eventi di Windows. Le informazioni La aiutano a risolvere i problemi riscontrati durante l’esecuzione dello script. Potrebbe essere utile tenere presente il seguente elenco di controllo per la risoluzione dei problemi:

  • Impossibilità di comunicare con i server remoti. Possibili azioni:
    • Verificare la connessione al server.
    • Verificare che la chiave API utilizzata sia valida.
  • Impossibilità di creare macchine. Possibili azioni:
    • Verificare che l’account utente che esegue lo script disponga di autorizzazioni sufficienti per creare account utente nel dominio.
    • Verificare che l’utente che ha creato la chiave API disponga di autorizzazioni sufficienti per utilizzare MCS per il provisioning delle macchine.
    • Verificare la validità del catalogo di macchine (ovvero, che la sua immagine esista ancora e sia in buono stato).
  • Impossibilità di aggiungere macchine a un catalogo di macchine o a un gruppo di consegna. Possibile azione:
    • Verificare che l’utente che ha creato la chiave API disponga di autorizzazioni sufficienti per aggiungere e rimuovere macchine da cataloghi di macchine e gruppi di consegna.
Provisioning dinamico delle macchine