Cloud computing: migrare le macchine virtuali nel cloud
L'esecuzione di macchine virtuali in Windows Azure combina i vantaggi della virtualizzazione e del cloud computing.
Joshua Hoffman
Il cambiamento costante è la prerogativa del settore IT. Nuove tecnologie, nuovo hardware, software e nuovi protocolli di comunicazione vengono introdotti ogni giorno. Questa valanga di nuove tecnologie crea un panorama in costante evoluzione che migliora la modalità di gestione aziendale, la modalità di comunicazione e di condivisione delle conoscenze. Nell'ambito di questo turbinio di cambiamenti, le due trasformazioni più sostanziali a cui abbiamo assistito in ambito IT negli ultimi anni sono state la virtualizzazione e il cloud computing.
La virtualizzazione consente alle aziende di utilizzare in modo più efficiente le risorse hardware, promuovendo un maggior livello di astrazione dell'ambiente software dal relativo hardware. I server oggi esistono come singolo file. Possono essere spostati da un componente hardware a un altro, duplicati a piacimento e possono essere utilizzati per creare un'infrastruttura più scalabile e flessibile.
Il cloud computing ha sfruttato il livello di efficienza e flessibilità tipico della virtualizzazione potenziandolo ulteriormente. Grazie a risorse in pool, alla diversificazione geografica e alla connettività universale, il cloud computing ha facilitato la distribuzione di software, piattaforme e infrastrutture rispettivamente in modalità SaaS (Software-as-a-Service), PaaS (Platform-as-a-Service) e IaaS (Infrastructure-as-a-Service). Si tratta contemporaneamente di una nuova piattaforma tecnologica e di un nuovo modello aziendale.
Con l'introduzione del ruolo di gestione delle macchine virtuali nella piattaforma Windows Azure, queste potenti tecnologie vengono integrare per ospitare un'infrastruttura virtuale nel cloud. Sarà possibile creare rapidamente macchine virtuali per Windows Azure e distribuirle nel cloud in cui poter sfruttare l'infrastruttura flessibile e scalabile nonché i vantaggi in termini di risparmi che contraddistinguono il cloud computing.
Attualmente il ruolo di gestione delle macchine virtuali in Windows Azure è ancora in versione beta. Per ulteriori informazioni sul programma beta, visitare il sito Windows Azure Compute. È possibile registrarsi al programma beta visitando il portale di gestione della piattaforma Windows Azure. A causa dello stato beta, le informazioni contenute nel presente articolo relative al ruolo di gestione delle macchine virtuali sono soggette a modifiche.
Creazione di applicazioni per il cloud
Il ruolo di gestione delle macchine virtuali per Windows Azure è simile ad altri ruoli server. Sulle macchine virtuali in Windows Azure viene eseguita una versione del sistema operativo Windows Server. Il ruolo di gestione delle macchine virtuali si differenzia per il fatto che consente di creare, personalizzare e gestire l'immagine del server per soddisfare esigenze e specifiche particolari.
Esistono alcune differenze operative di cui è necessario prendere atto durante l'esecuzione di una macchina virtuale in Windows Azure rispetto all'esecuzione su hardware locale. In primo luogo, alcune funzionalità di rete sono limitate. Ad esempio, per poter utilizzare il protocollo UDP (User Datagram Protocol), è necessario utilizzare anche il servizio di connessione Windows Azure. Inoltre, un'istanza di un ruolo di gestione delle macchine virtuali in esecuzione in Windows Azure non dispone della funzionalità di permanenza di stato.
Si consiglia di utilizzare i servizi di archiviazione di Windows Azure per garantire la permanenza di stato mediante il salvataggio di quest'ultimo in un blob o in un'unità disco di Windows Azure. Per ulteriori informazioni su come effettuare questa operazione, vedere l'articolo "How to Develop an Adapter for a VM Role in Windows Azure (in lingua inglese)".
I dati scritti nella directory della risorsa di archiviazione locale vengono mantenuti quando viene ricreata l'immagine di un'istanza server. Nel caso di un problema temporaneo in Windows Azure che richieda il trasferimento dell'istanza del ruolo di gestione delle macchine virtuali su un dispositivo hardware diverso.
Sulla base di tali condizioni, la procedura di creazione di una macchina virtuale per Windows Azure è simile a qualsiasi altra macchina virtuale. Iniziare con la creazione di un disco rigido virtuale (VHD) di base, mediante l'implementazione di un disco rigido virtuale vuoto con Hyper-V Manager, modificandone uno esistente o convertendo un'installazione di server fisico in un disco rigido virtuale. Per ulteriori informazioni vedere "Origini di nuove macchine virtuali."
L'immagine di base contiene il sistema operativo (che deve essere Windows Server 2008 R2), eventuali personalizzazioni dello stesso e le applicazioni necessarie. All'interno di Server Manager, sarà possibile attivare il ruolo Hyper-V, nonché installare il Windows Azure SDK (che comprende i componenti di integrazione di Windows Azure). È inoltre buona norma includere i supporti di installazione di Windows Server 2008 R2 (solitamente un file ISO) all'interno dell'immagine di base, qualora fosse necessario installare componenti aggiuntivi.
A questo punto, è necessario installare i componenti di integrazione di Windows Azure, necessari in ciascuna immagine server prima di poterla caricare in Windows Azure. Tali componenti vengono avviati a ogni avvio del sistema operativo e integrano il sistema operativo del ruolo di gestione delle macchine virtuali con Windows Azure.
I componenti interagiscono con il servizio di bilanciamento del carico per comunicare lo stato delle istanze. I componenti inoltre inizializzano la macchina virtuale mediante l'installazione di certificati e la creazione di directory di risorse locali basate sulle impostazioni di definizione dei servizi. È possibile trovare indicazioni dettagliate per l'installazione dei componenti "How to Install the Windows Azure Installation Components (in lingua inglese)".
Lo sviluppo di un "adattatore" è una fase successiva facoltativa nel processo di creazione dell'immagine. Quando si sviluppa e caricare un'immagine server personalizzata, si installa e configura il software per l'esecuzione nell'ambiente dinamico di Windows Azure. È possibile sia necessario fornire informazioni di configurazione relative all'applicazione che potrebbero non essere disponibili in fase di sviluppo e dovranno essere raccolte in fase di esecuzione. Si consiglia di configurare le applicazioni per l'ambiente dinamico creando un adattatore che interagisca con Windows Azure e che prepari ed esegua l'applicazione.
Sono disponibili due opzioni per creare un adattatore:
- È possibile creare un adattatore che venga eseguito durante la fase di specializzazione, che ha luogo durante l'impostazione del sistema operativo dopo aver caricato l'immagine server in Windows Azure per la prima volta o dopo aver ricreato l'immagine di un'istanza. È possibile creare l'adattatore senza scrivere codice, attenendosi a una delle due seguenti modalità. Eseguire uno script dal file di risposte o da un provider appositamente creato per l'Utilità preparazione sistema (sysprep). Per ulteriori informazioni, vedere la sezione "Create a setup project for the adapter" della pagina "How to Develop an Adapter for a VM Role in Windows Azure" (in lingua inglese) nella Libreria MSDN.
- È possibile creare un adattatore come servizio di Windows, ovvero che viene avviato automaticamente all'avvio del sistema operativo. Questo tipo di adattatore può essere scritto in codice gestito o nativo. Per raccogliere i dati dinamici dall'ambiente Windows Azure, l'adattatore utilizzare l'API di runtime del servizio Windows Azure. Per ulteriori informazioni, vedere la sezione "Define what happens when the adapter starts" della pagina "How to Develop an Adapter for a VM Role in Windows Azure" (in lingua inglese) nella Libreria MSDN.
La fase finale per preparare l'immagine di sistema da caricare in Windows Azure consiste nel valutare la configurazione del firewall di Windows. Sarà necessario aprire tutte le porte richieste dall'applicazione per l'esecuzione nell'istanza del ruolo di gestione delle macchine virtuali in Windows Azure. Per il servizio ospitato, dovranno essere utilizzate porte locali fisse. È possibile specificare numeri di porta per endpoint definiti per qualsiasi ruolo di Windows Azure: Web, di lavoro o di gestione delle macchine virtuali.
Una volta completata la procedura di installazione e configurazione, la fase finale di creazione dell'immagine consiste nella preparazione di quest'ultima al caricamento in Windows Azure. A tale scopo vien utilizzata l'Utilità preparazione sistema, che consente di "generalizzare" l'immagine, rimuovendo eventuali ID di sicurezza (SID) univoci in modo da consentire a Windows Azure di reimplementarli per ogni singola istanza durante la distribuzione della macchina. Per completare la preparazione finale dell'immagine:
- Aprire una finestra del prompt dei comandi come amministratore.
- Passare alla directory %windir%\system32\sysprep, quindi eseguire sysprep.exe.
- Nella finestra di dialogo di Utilità preparazione sistema, scegliere Passare alla Configurazione guidata nella sezione Azione pulizia sistema.
- Assicurarsi che la casella di controllo Generalizza sia selezionata.
- Selezionare Arresta il sistema nella sezione Opzioni di arresto del sistema.
- Fare clic su OK.
Una volta completata l'operazione, la macchina virtuale verrà arrestata. Ora sarà possibile iniziare la distribuzione.
Distribuzione di una macchina virtuale in Windows Azure
La prima fase nella distribuzione dell'immagine di sistema consiste nel configurare i certificati di gestione e di servizio. Quando si carica un file VHD in Windows Azure, viene utilizzato un certificato x.509, salvato con estensione CER, per l'autenticazione (noto come certificato di gestione nel portale di gestione di Windows Azure). Sarà inoltre necessario un certificato PFX (Personal Information Exchange), noto come certificato di servizio nel portale di gestione di Windows Azure, se si pianifica di accedere in remoto all'istanza del ruolo di gestione delle macchine virtuali.
È possibile inoltre firmare automaticamente questi certificati. In altre parole, non è necessario acquistarli da un provider esterno, bensì è possibile crearli autonomamente con lo strumento makecert.exe. Sulla pagina "How to Create a Certificate for a Role" (in lingua inglese) sono disponibili istruzioni dettagliate per la creazione dei certificati.
Durante la creazione del certificato, è possibile aggiungerlo al portale di gestione di Windows Azure. È sufficiente selezionare Hosted Services, Storage Accounts & CDN, quindi scegliere Management Certificates o Hosted Services (per i certificati di servizio).
Per caricare il disco rigido virtuale, è necessario disporre dell'identificatore dell'abbonamento. È possibile copiare e incollare le informazioni dal portale di gestione nella riga di comando. Per trovare l'ID dell'abbonamento e l'identificazione personale del certificato:
- Accedere al portale di gestione.
- Fare clic su Hosted Services, Storage Accounts & CDN, quindi scegliere Management Certificates.
- Nel riquadro Properties, è riportata l'identificazione personale del certificato sotto la voce Thumbprint. L'identificatore dell'abbonamento è sotto la voce Subscription ID.
Una volta individuati la certificazione personale del certificato e l'identificatore dell'abbonamento, è possibile caricare il disco rigido virtuale.
Per caricare l'immagine:
- Aprire una finestra del prompt dei comandi di Windows Azure SDK come amministratore.
- Passare alla directory in cui è stata salvata l'immagine del disco rigido virtuale.
- Impostare la stringa di connessione con il seguente comando e sostituire le voci SubscriptionId e CertThumbprint con i valori relativi all'abbonamento:
csupload Set-Connection "SubscriptionId=SubscriptionId; CertificateThumbprint=CertThumbprint"
- Caricare il disco rigido virtuale con il seguente comando e sostituire il nome file e il nome visualizzato del disco rigido virtuale:
csupload Add-VMImage –LiteralPath VHDName.vhd –Location LocationValue –Name DisplayedNameInPortal
In questo modo verrà visualizzata una finestra di dialogo con le informazioni per lo strumento di verifica dischi rigidi virtuali di Windows Azure, che consente di verificare la correttezza dello stato del sistema operativo e che quest'ultimo sia pronto per essere caricato in Windows Azure. Fare clic su OK per continuare la procedura di caricamento.
Tenere presente che i parametri –LiteralPath e –Location (o –AffinityGroup) sono obbligatori. Il parametro –Name è facoltativo. L'ubicazione e il gruppo di affinità devono corrispondere all'ubicazione o al gruppo di affinità definiti per il servizio ospitato corrispondente.
La creazione di modello di servizio è la fase finale per la distribuzione. Affinché l'istanza di un ruolo di gestione delle macchine virtuali possa essere eseguita in Windows Azure, è necessario definire il modello di servizio mediante la creazione di file di definizione e configurazione dei servizi. Per istruzioni dettagliate, vedere l'articolo "How to Create and Deploy the VM Role Service Model (solo in lingua inglese)" nella Libreria TechNet.
Ora che la macchina virtuale è attiva e funzionante in Windows Azure, è necessario conservare una copia locale del disco rigido virtuale originale come backup di sicurezza. Per apportare modificare al disco rigido virtuale in futuro, ad esempio aggiornamenti di applicazioni, sarà possibile utilizzare dei dischi differenze. Per istruzioni dettagliate sull'utilizzo di dischi differenze per la manutenzione della macchina virtuale, vedere "Getting Started with Changing a Server Image for a VM Role in Windows Azure (in lingua inglese)".
Joshua Hoffman* è l'ex caporedattore di* TechNet Magazine*. Oggi è un autore e consulente indipendente che offre i suoi servizi ai clienti in merito a tecnologie e marketing rivolto a destinatari specifici. Hoffman è inoltre caporedattore di ResearchAccess.com, un sito dedicato alla crescita e all'arricchimento della community coinvolta nella ricerca di mercato. Vive a New York City.*