In Windows Azure: cosa sono ruolo Web, ruolo di lavoro e ruolo macchina virtuale?


Risposte:


101

EDIT 3/3/2013 - aggiornato per fare riferimento a endpoint UDP, macchine virtuali e altre lingue

EDIT 6/6/2013 - aggiornato per riflettere l'interruzione del ruolo VM e aggiornamento alle immagini del sistema operativo di base del ruolo Web / di lavoro a Windows Server 2012

Buon collegamento di @Vladimir. Qualche chiarimento in più: tutti i ruoli (web, worker) sono essenzialmente Windows Server. I ruoli Web e di lavoro sono quasi identici:

  • I ruoli Web sono macchine virtuali Windows Server con IIS abilitato
  • I ruoli di lavoro sono VM Windows Server con IIS disabilitato (e puoi abilitarlo manualmente)
  • I ruoli delle macchine virtuali sono immagini di Windows Server 2008 costruite localmente tramite Hyper-V e caricate in Azure (e sono ora sospese e non più disponibili dal 31 maggio 2013
  • Le macchine virtuali sono immagini Windows o Linux create in Azure, archiviate come vhd nella propria archiviazione e presentano numerosi miglioramenti rispetto al ruolo VM. Ad esempio: poiché il vhd si trova nel tuo account di archiviazione, puoi facilmente creare un modello di immagine dal tuo vhd, copiarlo su un nuovo vhd o persino caricarlo su VM Depot (solo Linux).

Per rispondere alla tua domanda su cosa fare con questi ruoli: Il kit di formazione sulla piattaforma (menzionato di seguito) ti fornirà molte buone idee ed esempi, ma qui ci sono alcuni casi d'uso semplici:

  • È possibile eseguire qualsiasi codice che esponga un endpoint tcp, http, https o udp (applicazioni Web, servizi SOAP / REST, ecc.). Tuttavia, devi pensare al modo senza stato di fare le cose: se hai più di un'istanza VM in esecuzione, il traffico degli utenti viene distribuito tra quelle istanze. Il kit di formazione della piattaforma ti mostrerà come utilizzare l'archiviazione o la cache per affrontare questo problema.
  • Puoi eseguire codice che vive di una coda o di un timer. Forse hai attività su richiesta come la generazione di miniature di foto o calcoli basati sull'input dell'utente. Questi non richiedono endpoint disponibili esternamente. È possibile inviare le richieste a una coda e quindi eseguire un'attività che semplicemente alimenta questa coda (ed è possibile ridimensionare questo processo su più istanze, con i messaggi della coda consumati da tutte le istanze).
  • È possibile eseguire .NET, Java, php, python, node, ruby, ecc. È sufficiente distribuire il codice runtime appropriato insieme al codice del progetto. Tutte le lingue possono effettuare chiamate REST all'API di Azure e diverse lingue (comprese quelle menzionate sopra) dispongono di SDK che si occupano di questo per te. Tutti gli SDK della lingua sono qui , con il codice sorgente su GitHub, qui .
  • Con un ruolo VM, puoi installare ed eseguire software con installazioni molto complesse / che richiedono tempo, installazioni che richiedono un intervento manuale e installazioni che non possono essere automatizzate in modo affidabile. In questo caso è necessario occuparsi della manutenzione del sistema operativo. Oltre al ruolo VM, ora ci sono macchine virtuali, che forniscono la costruzione di VM basata su cloud insieme al supporto sia per Windows che per Linux. Suggerirei macchine virtuali su ruolo VM.

Con i ruoli Web e Lavoratore, il sistema operativo e le relative patch vengono gestite per te; costruisci i componenti della tua app senza dover gestire una VM.

Con i ruoli VM, si crea un'immagine completa di Windows Server, si aggiungono gli hook di Azure e si esegue il push dell'intera VM nel cloud (e quindi si mantiene l'immagine della VM nel tempo).

Con le macchine virtuali, scegli semplicemente un'immagine del sistema operativo da una galleria, che viene creata per te e archiviata come vhd nell'archivio BLOB. Quindi RDP / ssh e configurarlo come preferisci.

Indossando il cappello da architetto, è qui che diventa divertente e interessante. È possibile eseguire servizi Web in un ruolo Web o in un ruolo di lavoro (ed essere in grado di aprire le porte in entrambi); Puoi ospitare Tomcat o altri server Web in un ruolo di lavoro. puoi scegliere di combinare un sito Web più servizi in un unico ruolo o suddividerli in più ruoli per diverse esigenze di scalabilità.

Per un buon inizio, dai un'occhiata al Platform Training Kit e inizia a camminare attraverso gli esercizi.


Puoi effettivamente esporre gli endpoint tcp su un ruolo web? Secondo smarx devono essere tutti HTTP: stackoverflow.com/questions/2926737/… Questo crea un'altra sottile differenza tra i ruoli.
Richard Astbury

Ho risposto alla mia domanda, puoi aprire la porta tcp, ma non collegarla al sito web.
Richard Astbury

2
Richard - Mentre prima era il caso, gli endpoint ora possono essere tcp, http o https, indipendentemente dal tipo di ruolo. Ho creato un'app di esempio che ha un misto di tcp e http, mentre dimostravo il nuovo aggiornamento di 25 endpoint per ruolo alcuni mesi fa - vedi qui per il post del blog - davidmakogon.com/2011/05/…
David Makogon

Spiacenti, intendevo dimostrare 25 endpoint per distribuzione. E ... vedendo l'altro tuo commento, potrei aver risposto alla domanda sbagliata. :)
David Makogon

@DavidMakogon - Cosa ha sostituito il ruolo Web e il ruolo di lavoro? Devo distribuire un sito Web con PhantomJS che richiede GDI +. GDI + non è completamente supportato da Web Jobs. Speravo di poter utilizzare un ruolo web. Cosa ha sostituito il ruolo Web? Mi è piaciuto il concetto di VM che è stato aggiornato e gestito da Azure. Grazie!
Martin

30
  • I ruoli Web sono applicazioni Web ospitate in IIS.
  • I ruoli di lavoro sono processi che possono svolgere del lavoro (ad es. Comprimere automaticamente le immagini caricate, fare cose ogni volta che qualcosa cambia nel tuo database, ricevere nuovi messaggi dalla coda ed elaborare, lo chiami)
  • I ruoli delle VM ospitano le VM

10
In realtà, i ruoli Web e i ruoli di lavoro sono VM.
David Makogon

Questa è una risposta molto più semplice e mi dispiace, non sono VM ... potresti immaginare quale sarebbe il costo per una soluzione a più livelli con più ruoli di lavoro in esecuzione in background se si tratta di una VM separata? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence

per essere più specifici, i ruoli di lavoro sono VM senza IIS
dejjub-AIS

21

Mi sono imbattuto in questa domanda / risposta SO diversi giorni fa e ho trovato le risposte fornite un po 'sopra la mia testa (sono nuovo in Azure e Web). Ho trovato questo riepilogo stasera nelle nozioni di base di Azure che ho pensato fosse una buona panoramica di alto livello delle differenze principali tra i ruoli di lavoro e Web:

La differenza principale tra i due è che un'istanza di un ruolo Web esegue IIS, mentre un'istanza di un ruolo di lavoro no. Entrambi sono gestiti allo stesso modo, tuttavia, ed è comune che un'applicazione li utilizzi entrambi. Ad esempio, un'istanza del ruolo Web potrebbe accettare le richieste degli utenti, quindi passarle a un'istanza del ruolo di lavoro per l'elaborazione. Per aumentare o diminuire la scalabilità dell'applicazione, puoi richiedere a Windows Azure di creare più istanze di uno dei ruoli o di chiudere le istanze esistenti. E in modo simile alle macchine virtuali Windows Azure, ti viene addebitato solo il tempo di esecuzione di ciascuna istanza del ruolo Web o di lavoro.

Se sei nuovo nello sviluppo di Azure, ti consiglio vivamente di leggere l'articolo completo qui: Introduzione a Windows Azure

Spero che questo aiuti qualcuno tanto quanto ha aiutato ad accendere la lampadina per me.


3

I ruoli Web in Windows Azure hanno uno scopo speciale e forniscono un server Web Internet Information Services (IIS) dedicato utilizzato per l'hosting di applicazioni Web front-end. È possibile distribuire rapidamente e facilmente le applicazioni Web ai ruoli Web e quindi aumentare o diminuire le capacità di elaborazione per soddisfare la domanda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.