13

May

Windows Azure Lab – VM Role Pt.2 – Costruire una VM su Azure

Oggi (Maggio 2011) la VMRole è solo una beta; se avete intenzione di provarla bisogna fare esplicita richiesta nella sezione del portale di Azure dedicato ai nuovi servizi e alle beta in corso. Una volta attiva, leggetevi questo tutorial passo passo. Per chi ha già epserienza con il deployment di sistemi Windows, creare una VMRole sarà un processo indolore e vedremo come si dovranno usare strumenti standard che useremmo anche in contesti locali/enterprise.

Su Azure possiamo distribuire istanze di Windows Server 2008 R2 (Standard o Enterprise); la differenza tra i ruoli che abbiamo visto (Web e Worker) e la VMRole sono riassumibili nel fatto che nel primo caso abbiamo un PaaS puro, nel secondo abbiamo più controllo sul sistema operativo: personalmente lo definirei un PaaS/IaaS vista l’architettura ibrida rispetto a soluzioni più IaaS. L’idea di base è quella di utilizzare un disco VHD uguale per tutte le istanze che si vogliono fare partire, più un disco differenziale che “specializzi” la singola istanza.

image

Quando procedere ad usare la VM Role? Quando bisogna configurare il sistema operativo in modo massivo, senza che le operazioni di setup possano essere in qualche modo automatizzate con l’utilizzo degli altri ruoli disponibili.

Quando non procedere? Quando si vuole la smania di poter accedere alla macchina solo per piccole configurazioni e per il setting di IIS.

A complicare le cose si aggiunge il fatto che le istanze che girano su una VM Role non persistono lo stato, per cui l’approccio migliore è scrivere su un blob o, più fattibile, su un Drive dell’Azure Storage. Come? Al momento la best-practice consigliata è di creare un servizio Windows che faccia le operazioni di mounting del Drive e eventuale riconfigurazione delle parti “variabili” dell’OS che debbano andare a scrivere sul Drive appena montato. In tutto questo va considerato il naturale ciclo di vita della distribuzione che, al momento del “boot” eseguirà il codice presente nell’OnStart. Per cui bisognerà assicurarsi che gli eventuali servizi necessari si completino prima che il metodo OnStart ritorni, altrimenti il Load Balancer rileverà una istanza Ready quando invece logicamente dovrebbe essere ancora Busy (il LB quando rileva una istanza Ready la infila nel loop delle richieste).

Nota: non esiste nessun RoleEntryPoint di default nella VM Role, per cui andrà creato anch’esso, tipicamente all’interno del servizio che farà da Adapter.

Questa immagine riassume il processo di costruzione e deployment dell'a VM Role:

image

Creazione dell’Immagine Server

Essendo Windows Server 2008 R2 il sistema supportato e avendo come target la creazione di un VHD generalizzato, i tools che possiamo usare per creare l’immagine sono:

  • Hyper-V Manager => per creare l’immagine
  • Sysprep => per generalizzare l’istanza
  • WAIK => per assicurarci che lo startup sia completamente unattended (specificando file di risposta)

A latere di questo processo che rimandiamo agli IT Pro Smile, rimane da configurare un paio di cose:

  • Windows Azure Integration Components: per la gestione dell’integrazione con Azure, con il Load Balancer, la gestione dei certificati e la creazione dei Local Storage.
  • (opzionale) Abilitazione di Windows Azure Connect: se vogliamo integrarlo alla nostra rete locale su IPSec.
  • (opzionale) Creazione di un Adapter che effettui le operazioni di startup
  • (importante) Configurare la VM Role in un serviceDefinition e serviceConfiguration adeguati

Il penultimo punto è volutamente in grassetto perchè si può attuare in due modi:

  • Startup Task che viene eseguito durante il deployment dell’istanza e quindi solo alla prima specializzazione (tipicamente uno script cmd)
  • Servizio Windows che viene eseguito durante ogni reboot del sistema (da cui è comprensibile quando utilizzare un metodo e quando un altro)

Il tutto segue questo ciclo di vita in figura:

image

Upload dell’immagine su Azure

Una volta fatto “il lavoro sporco”, resta il dover fare l’upload di qualche decina di GB di immagine VHD. Per fare questo è necessario creare un certificato sul Management Portal per poter stabilire una comunicazione sicura dal CSUpload, che ci serve per eseguire l’upload del file. Nel caso di cambiamento della immagine server si utilizza questo stesso processo per fare l’upload del disco differenziale, ovviamente a patto di modificare la configurazione del servizio, per esempio:

csupload Set-Connection "SubscriptionId=SubscriptionId;CertificateThumbprint=CertThumbprint"

csupload Set-Parent –Child differencing.vhd –Parent base.vhd

Service Definition e Configuration

Utile ricordarsi di abilitare il Desktop Remoto, come sotto:

image

Per poi configurare immagine e entrypoint dello storage:

image

Ne approfitto per ricordare a tutti coloro si accingano ad utilizzare una VM Role che esse sono state progettate per applicazioni Stateless; tutti gli usi per applicazioni stateful, quali Sharepoint, SQL Server o Exchange non sono supportati e sono sconsigliati. Pur essendo un buon proof-of-concept cimentarsi a testare una di queste soluzioni sulla VM Role, sono al momento architetturalmente fallimentari.

by Roberto Freato on 5/13/2011
Post archive