Azure VM sizing: dimensionare correttamente le macchine virtuali

Il dimensionamento corretto delle macchine virtuali (VM) in Microsoft Azure è fondamentale per garantire prestazioni ottimali, gestione efficiente delle risorse e controllo dei costi. Per questo motivo ho deciso di elencare alcuni passi e considerazioni da seguire per scegliere il dimensionamento corretto delle VM in Azure:

  • Capisci i requisiti dell’applicazione: Valuta le esigenze dell’applicazione in termini di CPU, memoria, archiviazione e larghezza di banda. Identifica i carichi di lavoro e le operazioni che l’applicazione deve gestire.
  • Utilizza strumenti di monitoraggio: Implementa strumenti di monitoraggio per raccogliere dati sulle risorse utilizzate dall’applicazione in modo da avere una panoramica chiara delle esigenze di risorse.
  • Valuta i requisiti di performance: Analizza le prestazioni attese dell’applicazione, inclusi i picchi di carico e le richieste di risorse in periodi di picco.
  • Scalabilità: Considera la possibilità di scalabilità orizzontale o verticale in base alle esigenze dell’applicazione.
  • Categorizza le dimensioni delle VM: Azure offre diverse categorie di dimensioni di VM con diverse caratteristiche di prestazioni e prezzi. Categorizza le tue esigenze in base a queste dimensioni (ad esempio, serie D per applicazioni generiche, serie F per applicazioni con elevate prestazioni di calcolo, ecc.).
  • Piani tariffari: Scegli il piano tariffario più adatto alle tue esigenze. Ad esempio, se prevedi carichi di lavoro costanti, potresti optare per il piano tariffario Pay-As-You-Go o per i piani di riserva per risparmiare sui costi a lungo termine.
  • Utilizzo di dischi: Scegli il tipo di disco (HDD o SSD) e le dimensioni appropriate in base alle esigenze di I/O e di archiviazione dell’applicazione.
  • High Availability: Valuta la necessità di configurare VM in configurazioni ad alta disponibilità (ad esempio, Azure Availability Sets o Azure Virtual Machine Scale Sets) per garantire la continuità operativa.
  • Rivedi e ottimizza: Periodicamente rivedi le prestazioni dell’applicazione e le risorse utilizzate. Puoi sempre ridimensionare le VM in base alle nuove esigenze.
  • Considera la gestione automatica: Utilizza strumenti come Azure Automanage per implementare l’automazione del ridimensionamento in base ai carichi di lavoro, garantendo che le risorse siano ottimizzate dinamicamente.
  • Testa le configurazioni: Prima di implementare la soluzione in produzione, esegui test di caricamento e prestazioni per assicurarti che le VM siano dimensionate correttamente.
  • Documentazione: Tieni traccia delle tue decisioni di dimensionamento e delle configurazioni attraverso la documentazione per facilitare la gestione futura.

Considerando attentamente questi passi e adottando un approccio basato sul monitoraggio e l’ottimizzazione continua, potrai garantire che le VM in Azure siano dimensionate in modo efficiente per soddisfare le esigenze dell’applicazione.

Quali sono le tipologie di dimensionamento (sizing) delle Azure VM?

Azure offre diverse tipologie di dimensionamento (sizing) delle macchine virtuali (VM), ognuna progettata per soddisfare specifiche esigenze di carico di lavoro. È importante scegliere la serie e la dimensione della VM in base alle specifiche esigenze del tuo carico di lavoro, tenendo conto di fattori come CPU, memoria, I/O, accelerazione della GPU e storage.

Alla pagina VM sizes – Azure Virtual Machines | Microsoft Learn trovate un elenco aggiornato delle dimensioni delle macchine virtuali disponibili in Microsoft Azure. La suddivisione scelta è quella in base alla tipologia di utilizzo che faremo della Azure VM:

Tabella 1: Dimensioni delle Azure VM attualmente disponibili

Ogni tipologia ha le proprie caratteristiche hardware e le dimensioni delle macchine virtuali in Azure sono denominate utilizzando una convenzione di denominazione specifica che include diversi elementi. La formula generale per la denominazione delle dimensioni delle macchine virtuali in Azure è la seguente:

Famiglia + Numero di CPU + Funzionalità + Tipo di accelerazione + Versione

In particolare, le funzionalità sono:

  • a = processore basato su AMD
  • d = disco (è presente il disco temporaneo locale), solo per le macchine virtuali di Azure più recenti
  • h = capace di effettuare l’ibernazione
  • i = isolata
  • l = poca memoria; una quantità di memoria inferiore rispetto alla dimensione con uso intensivo di memoria
  • m = uso intensivo della memoria; la maggior quantità di memoria in una dimensione particolare
  • p = processore ARM Ampere Altra
  • r = compatibile con RDMA
  • s = capacità di archiviazione Premium, incluso il possibile utilizzo di Ultra SSD
  • t = poca memoria; la quantità più piccola di memoria in una dimensione particolare

Pertanto, un esempio di dimensione disponibile è

Dpldsv5 = Macchina della famiglia D, con processore ARM Ampere Altra, con poca memoria e con disco temporaneo, capace di utilizzare dischi Premium e della versione 5

Tra l’altro ne avevo già parlato nell’articolo Disponibili le Azure VM con processori ARM Ampere Altra – ICT Power

Le dimensioni delle Azure VM sono disponibili in tutte le Region di Azure?

Generalmente, la disponibilità delle dimensioni delle macchine virtuali in Azure dipende dalla specifica regione di Azure. Non tutte le dimensioni sono disponibili in tutte le regioni, e le opzioni possono variare in base a diversi fattori, tra cui la domanda del mercato, l’infrastruttura disponibile e le caratteristiche hardware specifiche presenti in una data area geografica.

Se avete esigenze specifiche per una determinata dimensione di VM e non è disponibile nella regione desiderata, potreste dover valutare alternative o considerare la possibilità di distribuire risorse in una regione diversa che offre la dimensione desiderata. Tuttavia, è importante tenere presente che la latenza di rete e altri fattori dovrebbero essere considerati quando si decide in quale regione distribuire le risorse.

Come trovare le dimensioni delle Azure VM più adatte al proprio carico di lavoro?

Per aiutarvi a identificare la corretta dimensione per il vostro carico di lavoro, le vostre esigenze ed il vostro budget Microsoft ha recentemente introdotto uno strumento gratuito chiamato Virtual machines selector disponibile alla pagina https://azure.microsoft.com/it-it/pricing/vm-selector/

Figura 1: Azure Virtual machine selector

Cosa sono le Azure Compute Unit (ACU)?

Le Azure Compute Unit (ACU) sono un’unità di misura introdotta da Microsoft Azure per fornire una stima relativa della capacità di calcolo di una macchina virtuale. L’obiettivo delle ACU è semplificare la selezione delle dimensioni delle macchine virtuali in base alle prestazioni desiderate, offrendo un indicatore comparativo tra le diverse famiglie di macchine virtuali in Azure.

Le ACU non corrispondono a una misura standard di prestazioni del processore, ma rappresentano una combinazione di vari elementi, inclusi CPU, memoria, archiviazione e I/O. In altre parole, le ACU sono progettate per rappresentare una misura generica delle prestazioni complessive di una macchina virtuale piuttosto che una misura specifica del processore.

Un numero maggiore di ACU generalmente indica una maggiore capacità di calcolo e prestazioni più elevate. Tuttavia, è importante notare che le ACU non sono l’unico fattore da considerare nella scelta delle dimensioni delle macchine virtuali. Le esigenze specifiche del carico di lavoro, ad esempio, possono richiedere una maggiore attenzione alla quantità di memoria, I/O o accelerazione della GPU piuttosto che alle sole ACU.

Alla pagina Panoramica dell’unità di calcolo di Azure – Azure Virtual Machines | Microsoft Learn trovate maggiori informazioni relative alle Unità di calcolo di Azure.

Come funziona il rapporto tra vCPU e Core?

Il rapporto tra vCPU (virtual CPU) e Core (fisico) varia a seconda delle specifiche delle macchine virtuali e delle configurazioni hardware. In termini generali, una vCPU rappresenta una parte virtuale del processore di una macchina virtuale, mentre un core rappresenta una risorsa fisica sul processore dell’hardware fisico sottostante.

Il rapporto tra vCPU e Core può variare a seconda delle dimensioni delle macchine virtuali offerte da un provider di servizi cloud come Microsoft Azure. Ecco alcune considerazioni comuni:

  • vCPU:Core: In alcune macchine virtuali, soprattutto quelle di piccole dimensioni o entry-level, potrebbe essere presente un rapporto di 1:1 tra vCPU e core fisico. In questo caso, ogni vCPU corrisponde a un core fisico.
  • Hyper-Threading: Alcuni processori supportano la tecnologia Hyper-Threading, che consente a un singolo core fisico di eseguire più thread contemporaneamente. In questo caso, una vCPU potrebbe corrispondere a un thread logico piuttosto che a un core fisico.

Delle Azure VM che supportano l’hyper-threading ne avevo già parlato nell’articolo Abilitare la nested virtualization con le nuove Azure VM Dv3 ed Ev3 – ICT Power

Quando si selezionano le dimensioni delle macchine virtuali, è importante comprendere il rapporto tra vCPU e core fisici, oltre a considerare altri fattori come la velocità del clock del processore, la quantità di memoria disponibile e altri aspetti delle prestazioni del sistema.

Tabella 2: Azure Compute Unit e rapporto tra vCPU e Core nelle Azure VM

Nested virtualization nelle Azure VM

La nested virtualization (virtualizzazione nidificata) in Azure consente di eseguire macchine virtuali (VM) all’interno di altre VM. Questa funzionalità è particolarmente utile per scenari di sviluppo e test, laboratori di formazione, e in generale per situazioni in cui è necessario eseguire una virtualizzazione all’interno di una VM. Ad esempio, è possibile eseguire Hyper-V all’interno di una VM Azure, consentendo la creazione di ulteriori VM all’interno dell’ambiente Hyper-V.

Attualmente, la nested virtualization è supportata principalmente nelle macchine virtuali della serie Dv3 e Ev3, che sono basate su processori Intel. Ne avevo già parlato nell’articolo Abilitare la nested virtualization con le nuove Azure VM Dv3 ed Ev3 – ICT Power

Gestione automatica delle VM con Azure Automanage

Azure Automanage è un servizio che semplifica la gestione delle macchine virtuali (VM) in Microsoft Azure, automatizzando molte delle attività comuni associate alla configurazione, alla sicurezza e al monitoraggio delle VM. Questo servizio mira a semplificare il ciclo di vita delle VM, riducendo il carico amministrativo e contribuendo a garantire che le risorse siano configurate in modo sicuro e conforme.

Alcune delle funzionalità principali di Azure Automanage sono:

  • Configurazione Automatica: Automanage configura automaticamente le impostazioni consigliate per le VM, compresi gli agenti di monitoraggio, le estensioni e le impostazioni di avvio automatico. Ciò semplifica la configurazione iniziale delle VM.
  • Patch e Aggiornamenti Automatici: Il servizio gestisce automaticamente la pianificazione e l’applicazione degli aggiornamenti del sistema operativo e delle patch di sicurezza, contribuendo a mantenere le VM sempre aggiornate e sicure.
  • Scalabilità e Dimensionamento: Il servizio facilita il dimensionamento delle VM in base alle esigenze di carico di lavoro, contribuendo a garantire che le risorse siano adeguate e che siano evitate eventuali sottoutilizzazioni o sovrautilizzazioni.

Trovate maggiori informazioni leggendo il mio articolo Azure Automanage: gestione automatica delle macchine virtuali in Azure – ICT Power
Azure Automanage: gestione automatica delle macchine virtuali in Azure – ICT Power

Figura 2: Azure Automanage

Cos’è Azure Autoscale

Azure AutoScale è un servizio di Microsoft Azure progettato per consentire la scalabilità automatica delle risorse in base al carico di lavoro. Questo servizio è particolarmente utile per ottimizzare le prestazioni delle applicazioni, garantendo che ci siano sempre risorse adeguate disponibili per gestire la domanda variabile.

Le principali caratteristiche di Azure AutoScale includono:

  • Definizione di Regole di Scalabilità: Si possono definire regole di scalabilità basate su metriche di monitoraggio, come l’utilizzo della CPU, la memoria, la larghezza di banda di rete o qualsiasi altra metrica rilevante per il carico di lavoro. Ad esempio, è possibile configurare AutoScale per aumentare o diminuire il numero di istanze delle macchine virtuali in base all’aumento o alla diminuzione del carico di lavoro.
  • Scalabilità Orizzontale e Verticale: Azure AutoScale consente sia la scalabilità orizzontale (aggiunta o rimozione di istanze delle VM) che la scalabilità verticale (ridimensionamento delle risorse all’interno di un’istanza).
  • Trigger di Scalabilità: Gli utenti possono definire trigger di scalabilità basati su programmazioni temporali o su metriche specifiche. Ad esempio, è possibile pianificare una scalabilità automatica in base all’orario o aumentare il numero di risorse quando l’utilizzo della CPU supera una soglia definita.
  • Integrazione con Metriche di Monitoraggio di Azure: Azure AutoScale si integra con Azure Monitor, consentendo di utilizzare una vasta gamma di metriche di monitoraggio predefinite o personalizzate per guidare la scalabilità automatica.
  • Supporto per Diverse Risorse di Azure: Azure AutoScale può essere utilizzato con diverse risorse di Azure, tra cui macchine virtuali, servizi cloud, set di bilanciamento del carico, gruppi di disponibilità, app per dispositivi mobili e altro ancora.

L’utilizzo di Azure AutoScale consente alle applicazioni di adattarsi dinamicamente alle fluttuazioni del carico di lavoro, garantendo un’esperienza utente ottimale e il massimo utilizzo delle risorse. Questo servizio è particolarmente utile per applicazioni che mostrano variazioni di traffico durante la giornata, la settimana o particolari periodi dell’anno.

Tuttavia, questa funzionalità è progettata per lavorare con Azure Virtual Machine Scale Sets, non con singole VM.

Figura 3: La funzionalità Azure AutoScale è progettata per lavorare con Azure Virtual Machine Scale Sets, non con singole VM

Conclusioni

In conclusione, il dimensionamento delle macchine virtuali in Microsoft Azure è un elemento cruciale per garantire prestazioni ottimali, efficienza nell’uso delle risorse e controllo dei costi nelle implementazioni cloud. La scelta accurata delle dimensioni delle VM influisce direttamente sulle prestazioni dell’applicazione e sulla flessibilità operativa. Il dimensionamento delle Azure VM richiede un approccio ponderato che tenga conto delle specifiche esigenze del carico di lavoro e dell’evoluzione nel tempo. Una pianificazione oculata e un monitoraggio costante garantiscono che le risorse siano ottimizzate per affrontare le sfide presenti e future, contribuendo al successo delle implementazioni cloud su Microsoft Azure.