Configurare Autoscale (preview) per Azure Virtual Desktop

La funzionalità di Autoscale, attualmente in preview, di Azure Virtual Desktop permette di poter automatizzare l’avvio e lo spegnimento delle macchine virtuali del nostro Host Pool con lo scopo di ottimizzare i costi.

È infatti possibile creare dei veri e propri Scaling Plan che possono essere basati su:

  • Momenti della giornata
  • Specifici giorni della settimana
  • Limite delle sessioni per i singoli session host

Al momento la funzionalità di autoscale è disponibile solo per i Pooled Host pool e non per i Personal host pool.

Prerequisiti

Per utilizzare la funzionalità di autoscale è necessario concedere all’applicazione Azure Virtual Desktop i privilegi per accendere e spegnere le macchine virtuali dell’Host Pool.

Per farlo dovremo prima creare un ruolo RBAC personalizzato nella nostra sottoscrizione. Vi rimando alla lettura della mia guida Creare ruoli personalizzati in Azure Role Based Access Control (RBAC) – ICT Power per imparare a creare ruoli personalizzati, mentre potete visitare la pagina Azure Virtual Desktop session host autoscale preview | Microsoft Docs per recuperare le azioni da delegare.

Qui di seguito c’è il contenuto del file JSON che ho utilizzato per creare il ruolo personalizzato. Ovviamente sostituite il valore SubscriptionID con quello della vostra sottoscrizione.

Figura 1: File JSON utilizzato per creare il ruolo personalizzato

Dal portale di Azure selezionate la voce Access control (IAM) della vostra sottoscrizione e lanciate il wizard per creare un ruolo personalizzato.

Figura 2: Creazione di un ruolo personalizzato nella sottoscrizione

Procedete a caricare il file JSON con i permessi che avete precedentemente creato e seguite il wizard, come nelle immagini mostrate sotto:

Figura 3: Utilizzo del file JSON creato precedentemente, con all’interno la definizione dei permessi da utilizzare

Figura 4: Permessi che verranno assegnati al ruolo personalizzato

Figura 5: Sottoscrizione che utilizzerà il ruolo personalizzato

Figura 6: File JSON che è stato utilizzato, con l’opportunità di modificarlo

Figura 7: Schermata finale della creazione del ruolo personalizzato

Terminata la creazione del ruolo RBAC personalizzato, sarà necessario assegnarlo all’applicazione Windows Virtual Desktop, come mostrato nelle immagini sotto:

Figura 8: Delega dell’accesso alle risorse nella sottoscrizione

Figura 9: Scelta del ruolo personalizzato da delegare, precedentemente creato

Figura 10: Delega all’applicazione Windows Virtual Desktop del ruolo personalizzato di Autoscale

Figura 11: Schermata finale di assegnazione dei permessi necessari all’autoscale

Figura 12: Il ruolo di Autoscale è stato assegnato all’applicazione Windows Virtual Desktop

Creazione di uno scaling plan

Adesso che avete delegato all’applicazione Windows Virtual Desktop la possibilità di effettuare tutte le operazioni richiesta dall’autoscale, siete pronti per creare uno Scaling Plan.

NOTA: si può associare un unico scaling plan per host pool

Dal portale di Azure selezionate la voce Azure Virtual Desktop e quindi scegliete Scaling Plans

Figura 13: Creazione di un nuovo scaling plan

Seguite il wizard inserendo le informazioni richieste. In Tag di esclusione immettere i tag per le macchine virtuali che non si vuole includere nelle operazioni di ridimensionamento.

Figura 14: Informazioni di base per la creazione di uno scaling plan

Le pianificazioni consentono di definire quando la scalabilità automatica attiva le modalità di avvio delle macchine virtuali del nostro Host Pool. In ogni fase della pianificazione, la scalabilità automatica disattiva le macchine virtuali solo quando un host sessione non ha sessioni attive. Nella scheda Pianificazioni selezionare Aggiungi pianificazione e seguite le indicazioni presenti nel wizard. Uno scaling

Figura 15: Creazione di una nuova pianificazione nello scaling plan

Nella scheda Ramp-up (Aumenta) selezionate un’ora dal menu a discesa per avviare la preparazione delle macchine virtuali per le ore lavorative di punta. Per l’algoritmo di bilanciamento del carico , è consigliabile selezionare l’algoritmo breadth-first. Il bilanciamento del carico breadth-first distribuirà gli utenti tra le macchine virtuali esistenti per mantenere veloci i tempi di accesso. Per Minimum percentage of hosts (Percentuale minima di host) immettere la percentuale di host di sessione che si vuole mantenere sempre attiva in questa fase. Per Soglia di capacità immettere la percentuale di capacità del pool di host disponibile che attiverà un’azione di ridimensionamento.

Figura 16: Configurazione per gli aumenti del numero di macchine virtuali

Nella scheda Peak hours compilate il campo Ora di inizio per immettere un’ora di inizio in cui la frequenza di utilizzo è massima durante il giorno. Assicurarsi che l’ora sia nello stesso fuso orario specificato per il piano di ridimensionamento. Questa è anche l’ora di fine per la fase di preparazione. Per Bilanciamento del carico è possibile selezionare il bilanciamento del carico breadth-first o depth-first. Il bilanciamento del carico breadth-first distribuisce le nuove sessioni utente tra tutti gli host di sessione disponibili nel pool di host. Il bilanciamento del carico depth-first distribuisce le nuove sessioni a qualsiasi host di sessione disponibile con il numero massimo di connessioni che non ha ancora raggiunto il limite di sessioni.

Figura 17: Configurazione della scheda delle ore di picco

Per Ramp-down, i valori verranno immessi in campi simili a Ramp-up,ma questa volta lo sarà quando l’utilizzo del pool di host scende. Sono inclusi i campi seguenti:

  • Ora di inizio
  • Algoritmo di bilanciamento del carico
  • Percentuale minima di host (%)
  • Soglia di capacità (%)
  • Forzare gli utenti della disconnessione

Se è stata abilitata la funzionalità di scalabilità automatica per forzare la disconnessione degli utenti durante la fase di avvio, la funzionalità sceglierà l’host di sessione con il numero più basso di sessioni utente da arrestare. La funzionalità di scalabilità automatica attiva la modalità svuotamento dell’host sessione, invia a tutte le sessioni utente attive una notifica che informa che verrà disconnesso e quindi disconnette tutti gli utenti al termine del tempo di attesa specificato. Dopo che la funzionalità di scalabilità automatica ha disconnesso tutte le sessioni utente, la macchina virtuale viene deallocata. Se non è stata abilitata la disconnessione forzata durante la fase di disattivazione, gli host sessione senza sessioni attive o disconnesse verranno deallocati.

Durante la fase di riduzione, la funzionalità di scalabilità automatica arresterà le macchine virtuali solo se tutte le sessioni utente esistenti nel pool di host possono essere consolidate in un numero inferiore di macchine virtuali senza superare la soglia di capacità.

Io ho scelto di non forzare la disconnessione degli utenti.

Figura 18: Scheda di configurazione Ramp-down

Analogamente, le ore di minore attività funzionano allo stesso modo delle ore di punta:

  • Ora di inizio, che è anche la fine del periodo di avvio.
  • Algoritmo di bilanciamento del carico. È consigliabile scegliere depth-first per ridurre gradualmente il numero di host di sessione in base alle sessioni in ogni macchina virtuale.
  • Analogamente alle ore di punta, non è possibile configurare la soglia di capacità qui. Verrà invece restituito il valore immesso in Ramp-down.

Terminate le configurazioni fate clic su Add per completare l’aggiunta della pianificazione.

Figura 19: Configurazione delle ore di minore attività e termine della procedura di aggiunta della pianificazione allo scaling plan

Figura 20: Creazione della pianificazione completata

Ora che è stato configurato il piano di ridimensionamento, è possibile assegnare il piano ai pool di host. Scegliete dal menù a tendina a quale Host Pool volete assegnare il piano di scalabilità.

Figura 21: Scelta dell’Host Pool a cui assegnare il piano di scalabilità

Figura 22: Creazione del piano di scalabilità completata

Figura 23: Piano di scalabilità creato

NOTA: Quando si crea o si aggiorna un piano di scalabilità già assegnato ai pool di host, le modifiche verranno applicate immediatamente.

 

Aggiunta dello scaling plan ad un host pool già esistente

È possibile abilitare i piani di scalabilità per tutti i pool host esistenti nella distribuzione. Quando si applica il piano di ridimensionamento al pool di host, il piano verrà applicato anche a tutti gli host di sessione all’interno del pool host. Il ridimensionamento si applica automaticamente anche a tutti i nuovi host di sessione creati nel pool di host assegnato.

Se si disabilita un piano di ridimensionamento, tutte le risorse assegnate rimarranno nello stato di ridimensionamento in cui si trovavano al momento della disabilitazione.

Per assegnare un piano di ridimensionamento a un pool di host esistente, selezionate l’host pool e dal nodo Scaling Plan fate clic su + Assign. Selezionate il piano scelto e fate clic su Assign.

Figura 24: Aggiunta di uno Scaling Plan ad un Host pool esistente

Figura 25: Lo Scaling Plan è stato assegnato all’Host Pool di Azure Virtual Desktop

Configurare la diagnostica per la funzionalità di scalabilità automatica (preview)

La diagnostica consente di monitorare i potenziali problemi e correggerli prima che interferiscano con il piano di scalabilità automatica. er abilitare la diagnostica per il piano di scalabilità selezionate il nodo Diagnostic settings e fate clic su +Add diagnostic settings.

Figura 26: Aggiunta della diagnostica al piano di scalabilità

Selezionate dovete volete che vengano inviati i log. Potete scegliere uno storage account di Azure o utilizzare i log con l’hub Eventi. Io ho deciso di inviare tutto ad un workspace di Log Analytics.

Figura 27: Configurazione della diagnostica per l’invio dei log ad un workspace di Log Analytics

Figura 28: Configurazione della diagnostica completata

Dal nodo Logs del piano di scalabilità sarà possibile accedere, filtrare e visualizzare i log collezionati.

Figura 29: Logs del piano di scalabilità

Conclusioni

La funzionalità di scalabilità automatica per gli Host Pool di Azure Virtual Desktop è attualmente disponibile in anteprima. La funzionalità consente di aumentare o ridurre le prestazioni delle macchine virtuali della distribuzione di Azure Virtual Desktop per ottimizzare i costi di distribuzione. Decisamente vantaggioso per il cliente finale.