Citrix DaaS

Provisioning dinamico delle macchine

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

Lo script offre i seguenti vantaggi (e non solo):

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

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

Scarica 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 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 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 dotate di tag univoci (tramite il parametro ScriptTag) in modo che possano 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 per le quali Autoscale affronta i carichi aggiuntivi. Quando questa soglia viene superata, vengono create macchine in batch per garantire che il carico corrente 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 ha lo scopo di effettuare il monitoraggio di un intero gruppo di consegna e di creare o eliminare macchine quando viene soddisfatto il criterio di attivazione. Viene eseguito per ogni esecuzione. Ciò significa che è necessario eseguire lo script regolarmente in modo che possa funzionare come previsto. Si consiglia di eseguire lo script a un intervallo minimo di cinque minuti. In questo modo si migliora la reattività complessiva.

Lo script si basa sui seguenti parametri per funzionare:

Parametro Tipo Valore predefinito Descrizione
DeliveryGroupName Stringa X Nome del gruppo di consegna da monitorare per determinare il carico corrente. È possibile fornire un elenco di nomi separati da punto e virgola. Ad esempio: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile.
XdProfileName Stringa X Nome del profilo da utilizzare per l’autenticazione su server remoti. Per informazioni dettagliate sull’autenticazione su server remoti utilizzando questo parametro, vedere Authentication API.
HighWatermark Intero 80 Carico percentuale massimo (in termini di indice di carico) al quale creare macchine per le quali Autoscale affronti i carichi aggiuntivi.
LowWatermark Intero 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 Stringa X Nome del catalogo macchine in cui devono essere create le macchine.
MaximumCreatedMachines Intero -1 Quantità massima 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 Stringa AutoscaledScripted Tag che si applica alle macchine create tramite lo script.
EventLogSource Stringa X Nome di origine visualizzato 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 (tranne il parametro ScriptTag) la prima volta che viene eseguito. Nelle esecuzioni successive, sono richiesti solo i parametri DeliveryGroupName e XdProfileName. Facoltativamente, è possibile scegliere di aggiornare la percentuale minima e massima di carichi.

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) usando 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, dg 2):

  • 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 Remote PowerShell è installato su quella macchina. Per ulteriori informazioni sull’SDK Remote PowerShell, vedere SDK e API.
  • Altri prerequisiti:
    • Un gruppo di consegna da monitorare
    • Un catalogo macchine creato tramite Machine Creation Services (MCS) a cui è associato uno schema di provisioning (modello)
    • Un pool di identità associato allo schema di provisioning
    • Un’origine del registro eventi da creare in modo che lo script possa scrivere informazioni nel registro eventi di Windows
    • Un client sicuro che consenta di autenticarsi su server remoti

Autorizzazioni, consigli e avvisi

Quando si esegue lo script, tenere presente quanto segue:

  • Per eseguire l’autenticazione su server remoti utilizzando il parametro XdProfileName, è necessario definire un profilo di autenticazione utilizzando un client sicuro di accesso API, creato nella console Citrix Cloud. Per i dettagli, vedere Authentication API.

  • È necessario disporre delle autorizzazioni per creare ed eliminare account computer in Active Directory.

  • Si consiglia di automatizzare lo script PowerShell con l’Utilità di pianificazione di Windows. Per informazioni dettagliate, vedere Creare un’attività automatica utilizzando l’Utilità di pianificazione di Windows.

  • Se si desidera che lo script scriva informazioni (ad esempio errori e azioni) nel registro eventi di Windows, è necessario prima specificare un nome di origine 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 da cui verrà eseguito lo script.

Il client sicuro deve disporre delle seguenti autorizzazioni:

  • Creare ed eliminare macchine utilizzando MCS.
  • Modificare i cataloghi delle 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 proprio account disponga delle autorizzazioni sopra indicate, perché il client sicuro eredita automaticamente le autorizzazioni dal proprio account corrente.

Per creare un client sicuro, completare questi passaggi:

  1. Accedere a Citrix Cloud, quindi passare a Identity and Access Management > API Access.

  2. Digitare il nome del client sicuro e quindi fare clic su Create client.

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

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

Creare un’attività automatica utilizzando l’Utilità di pianificazione di Windows

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

Esempio di esecuzione di script

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

Esempio di esecuzione di script

Elenco di controllo di risoluzione dei problemi per lo script

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

  • Mancata comunicazione con i server remoti. Azioni possibili:
    • Verificare la propria connessione al server.
    • Verificare che la chiave API che si utilizza sia valida.
  • Mancata creazione di macchine. Azioni possibili:
    • 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 macchine (ovvero se la sua immagine esiste ancora ed è in buono stato).
  • Mancata aggiunta di macchine a un catalogo macchine o a un gruppo di consegna. Azione possibile:
    • Verificare che l’utente che ha creato la chiave API disponga di autorizzazioni sufficienti per aggiungere e rimuovere macchine da e verso cataloghi di macchine e gruppi di consegna.
Provisioning dinamico delle macchine