In Windows Azure: Was sind Webrolle, Worker-Rolle und VM-Rolle?
115
Die Anwendung, an der ich arbeite, enthält eine Webrolle: Es ist eine einfache Webanwendung. Ich musste die Anwendung in Windows Azure hosten, also habe ich eine Webrolle erstellt. Ich möchte eigentlich wissen, wofür diese Rollen sind. Welche Bedeutung haben sie für die Codierung oder die Speicherung?
EDIT 03.03.2013 - aktualisiert, um auf UDP-Endpunkte, virtuelle Maschinen und weitere Sprachen zu verweisen
BEARBEITEN 6/6/2013 - aktualisiert, um die Einstellung der VM-Rolle widerzuspiegeln, und Aktualisierung der Basis-Betriebssystem-Images der Web- / Worker-Rolle auf Windows Server 2012
Guter Link von @Vladimir. Ein bisschen mehr Klarheit: Alle Rollen (Web, Worker) sind im Wesentlichen Windows Server. Web- und Worker-Rollen sind nahezu identisch:
Webrollen sind Windows Server-VMs mit aktiviertem IIS
Worker-Rollen sind Windows Server-VMs mit deaktiviertem IIS (und Sie können sie manuell aktivieren).
VM-Rollen sind Windows Server 2008-Images, die Sie lokal über Hyper-V erstellen und in Azure hochladen (und die jetzt nicht mehr verfügbar sind und zum 31. Mai 2013 nicht mehr verfügbar sind
Virtuelle Maschinen sind Windows- oder Linux-Images, die in Azure erstellt, als VHD in Ihrem eigenen Speicher gespeichert wurden und über die VM-Rolle mehrere Verbesserungen aufweisen. Beispiel: Da sich die vhd in Ihrem eigenen Speicherkonto befindet, können Sie ganz einfach eine Image-Vorlage aus Ihrer vhd erstellen, auf eine neue vhd kopieren oder sogar in VM Depot hochladen (nur Linux).
Um Ihre Frage zu beantworten, wie Sie mit diesen Rollen umgehen sollen: Das unten erwähnte Platform Training Kit bietet Ihnen viele gute Ideen und Beispiele. Hier einige einfache Anwendungsfälle:
Sie können jeden Code ausführen, der einen TCP-, http-, https- oder udp-Endpunkt verfügbar macht (Webanwendungen, SOAP / REST-Dienste usw.). Sie müssen jedoch über die zustandslose Vorgehensweise nachdenken. Wenn mehr als eine VM-Instanz ausgeführt wird, wird der Benutzerverkehr auf diese Instanzen verteilt. Das Plattform-Schulungskit zeigt Ihnen, wie Sie mit Speicher oder Cache umgehen können.
Sie können Code ausführen, der von einer Warteschlange oder einem Timer lebt. Möglicherweise haben Sie On-Demand-Aufgaben wie das Generieren von Fotos in Miniaturansichten oder Berechnungen basierend auf Benutzereingaben. Diese benötigen keine extern verfügbaren Endpunkte. Sie können Ihre Anforderungen an eine Warteschlange senden und dann eine Aufgabe ausführen, die diese Warteschlange einfach speist (und Sie können diesen Prozess über mehrere Instanzen skalieren, wobei Warteschlangennachrichten von allen Instanzen verwendet werden).
Sie können .NET, Java, PHP, Python, Node, Ruby usw. ausführen. Sie müssen nur den entsprechenden Laufzeitcode zusammen mit Ihrem Projektcode verteilen. Alle Sprachen können REST-Aufrufe an die Azure-API senden, und mehrere Sprachen (einschließlich der oben genannten) verfügen über SDKs, die dies für Sie erledigen. Alle Sprach-SDKs sind hier , mit Quellcode auf Github, hier .
Mit einer VM-Rolle können Sie Software mit sehr komplexen / zeitaufwändigen Installationen, Installationen, die manuelle Eingriffe erfordern, und Installationen, die nicht zuverlässig automatisiert werden können, installieren und ausführen. In diesem Fall müssen Sie sich mit der Betriebssystemwartung befassen. Über die VM-Rolle hinaus gibt es jetzt virtuelle Maschinen, die eine Cloud-basierte VM-Konstruktion sowie Windows- und Linux-Unterstützung bieten. Ich würde virtuelle Maschinen über VM-Rolle vorschlagen.
Mit Web- und Worker-Rollen werden das Betriebssystem und die zugehörigen Patches für Sie erledigt. Sie erstellen die Komponenten Ihrer App, ohne eine VM verwalten zu müssen.
Mit VM-Rollen erstellen Sie ein vollständiges Windows Server-Image, fügen die Azure-Hooks hinzu und verschieben die gesamte VM in die Cloud (und pflegen das VM-Image im Laufe der Zeit).
Mit Virtual Machines wählen Sie einfach ein Betriebssystem-Image aus einer Galerie aus, das für Sie erstellt und als VHD im Blob-Speicher gespeichert wird. Sie dann RDP / ssh und richten es ein, wie Sie möchten.
Mit dem Architektenhut wird es hier lustig und interessant. Sie können Webdienste in einer Webrolle oder einer Arbeiterrolle ausführen (und in beiden Ports öffnen). Sie können Tomcat oder andere Webserver in einer Worker-Rolle hosten. Sie können eine Website plus Services in einer einzigen Rolle kombinieren oder sie für unterschiedliche Skalierbarkeitsanforderungen in mehrere Rollen aufteilen.
Schauen Sie sich für einen guten Start das Platform Training Kit an und beginnen Sie mit den Übungen.
Können Sie TCP-Endpunkte in einer Webrolle tatsächlich verfügbar machen? Laut smarx müssen alle HTTP sein: stackoverflow.com/questions/2926737/… Dies führt zu einem weiteren subtilen Unterschied zwischen den Rollen.
Richard Astbury
Ich habe meine eigene Frage beantwortet. Sie können den TCP-Port öffnen, aber nicht an die Website binden.
Richard Astbury
2
Richard - Während dies früher der Fall war, können Endpunkte jetzt unabhängig vom Rollentyp TCP, http oder https sein. Ich habe eine Beispiel-App erstellt, die eine Mischung aus TCP und http enthält, und vor einigen Monaten das neue Update mit 25 Endpunkten pro Rolle demonstriert - siehe hier für den Blog-Beitrag - davidmakogon.com/2011/05/…
David Makogon
Entschuldigung - ich wollte 25 Endpunkte pro Bereitstellung demonstrieren. Und ... wenn ich Ihren anderen Kommentar sehe, habe ich möglicherweise die falsche Frage beantwortet. :)
David Makogon
@DavidMakogon - Was hat die Webrolle und die Arbeiterrolle ersetzt? Ich muss eine Website mit PhantomJS bereitstellen, für die GDI + erforderlich ist. GDI + wird von Web Jobs nicht vollständig unterstützt. Ich hatte gehofft, ich könnte eine Webrolle verwenden. Was hat die Webrolle ersetzt? Ich mochte das Konzept der VM, das von Azure gepatcht und gepflegt wurde. Vielen Dank!
Martin
30
Webrollen sind Webanwendungen, die in IIS gehostet werden.
Worker-Rollen sind Prozesse, die einige Aufgaben erledigen können (dh hochgeladene Bilder automatisch komprimieren, Dinge tun, wenn sich etwas in Ihrer Datenbank ändert, neue Nachrichten aus der Warteschlange abrufen und verarbeiten, wie Sie es nennen).
Tatsächlich sind Webrollen und Arbeiterrollen VMs.
David Makogon
Dies ist eine viel einfachere Antwort. Tut mir leid, es handelt sich nicht um VMs. Können Sie sich vorstellen, wie hoch die Kosten für eine mehrschichtige Lösung mit mehreren Worker-Rollen im Hintergrund wären, wenn es sich um eine separate VM handelt? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence
Um
21
Ich bin vor einigen Tagen auf diese SO-Frage / Antwort gestoßen und habe die Antworten etwas über meinem Kopf gefunden (ich bin neu bei Azure und Web). Ich habe diese Zusammenfassung heute Abend in den Azure-Grundlagen gefunden, die meiner Meinung nach einen guten Überblick über die Hauptunterschiede zwischen den Worker- und den Webrollen auf hoher Ebene bieten:
Der Hauptunterschied zwischen beiden besteht darin, dass auf einer Instanz einer Webrolle IIS ausgeführt wird, auf einer Instanz einer Worker-Rolle jedoch nicht. Beide werden jedoch auf die gleiche Weise verwaltet, und es ist üblich, dass eine Anwendung beide verwendet. Beispielsweise kann eine Webrolleninstanz Anforderungen von Benutzern akzeptieren und diese dann zur Verarbeitung an eine Arbeitsrolleninstanz übergeben. Um Ihre Anwendung zu vergrößern oder zu verkleinern, können Sie Windows Azure auffordern, weitere Instanzen einer Rolle zu erstellen oder vorhandene Instanzen herunterzufahren. Ähnlich wie bei virtuellen Windows Azure-Maschinen wird Ihnen nur die Zeit berechnet, die für jede Web- oder Worker-Rolleninstanz ausgeführt wird.
Wenn Sie neu in der Azure-Entwicklung sind, empfehle ich dringend, den vollständigen Artikel hier zu lesen: Einführung in Windows Azure
Ich hoffe, das hilft jemandem genauso wie es mir geholfen hat, die Glühbirne einzuschalten.
Webrollen in Windows Azure dienen besonderen Zwecken und bieten einen dedizierten IIS-Webserver (Internet Information Services), der zum Hosten von Front-End-Webanwendungen verwendet wird. Sie können Webanwendungen schnell und einfach für Webrollen bereitstellen und dann Ihre Rechenfunktionen nach oben oder unten skalieren, um die Anforderungen zu erfüllen.
quelle
Ich bin vor einigen Tagen auf diese SO-Frage / Antwort gestoßen und habe die Antworten etwas über meinem Kopf gefunden (ich bin neu bei Azure und Web). Ich habe diese Zusammenfassung heute Abend in den Azure-Grundlagen gefunden, die meiner Meinung nach einen guten Überblick über die Hauptunterschiede zwischen den Worker- und den Webrollen auf hoher Ebene bieten:
Wenn Sie neu in der Azure-Entwicklung sind, empfehle ich dringend, den vollständigen Artikel hier zu lesen: Einführung in Windows Azure
Ich hoffe, das hilft jemandem genauso wie es mir geholfen hat, die Glühbirne einzuschalten.
quelle
Webrollen in Windows Azure dienen besonderen Zwecken und bieten einen dedizierten IIS-Webserver (Internet Information Services), der zum Hosten von Front-End-Webanwendungen verwendet wird. Sie können Webanwendungen schnell und einfach für Webrollen bereitstellen und dann Ihre Rechenfunktionen nach oben oder unten skalieren, um die Anforderungen zu erfüllen.
quelle