W systemie Windows Azure: jaka jest rola sieci Web, rola procesu roboczego i rola maszyny wirtualnej?

115

Aplikacja, nad którą pracuję, zawiera rolę sieciową: jest to prosta aplikacja internetowa. Musiałem hostować aplikację na Windows Azure, więc utworzyłem rolę sieciową. Właściwie chcę wiedzieć, do czego służą te role. Jakie jest ich znaczenie pod względem kodowania lub przechowywania?

Kuntady Nithesh
źródło

Odpowiedzi:

101

EDYCJA 3/3/2013 - zaktualizowano w celu odniesienia do punktów końcowych UDP, maszyn wirtualnych i innych języków

EDYCJA 6/6/2013 - zaktualizowano w celu odzwierciedlenia wycofania roli maszyny wirtualnej i aktualizacji do podstawowych obrazów systemu operacyjnego roli sieci Web / procesu roboczego do systemu Windows Server 2012

Dobry link autorstwa @Vladimir. Trochę więcej wyjaśnień: wszystkie role (sieć, pracownik) są zasadniczo Windows Server. Role WWW i pracownika są prawie identyczne:

  • Role sieci Web to maszyny wirtualne z systemem Windows Server z włączonymi usługami IIS
  • Role pracowników to maszyny wirtualne z systemem Windows Server z wyłączonymi usługami IIS (można je ręcznie włączyć)
  • Role maszyny wirtualnej to obrazy systemu Windows Server 2008 tworzone lokalnie za pośrednictwem funkcji Hyper-V i przesyłane na platformę Azure (są teraz wycofane i nie są już dostępne od 31 maja 2013 r.)
  • Maszyny wirtualne to obrazy systemu Windows lub Linux utworzone na platformie Azure, przechowywane jako dysk vhd we własnym magazynie i mają kilka ulepszeń dotyczących roli maszyny wirtualnej. Na przykład: ponieważ dysk vhd znajduje się na Twoim własnym koncie magazynu, możesz łatwo utworzyć szablon obrazu z dysku vhd, skopiować go na nowy dysk vhd, a nawet przesłać go do magazynu VM Depot (tylko Linux).

Aby odpowiedzieć na pytanie, co zrobić z tymi rolami: Zestaw szkoleniowy platformy (wspomniany poniżej) zawiera wiele dobrych pomysłów i przykładów, ale oto kilka prostych przypadków użycia:

  • Możesz uruchomić dowolny kod, który uwidacznia punkt końcowy TCP, http, https lub udp (aplikacje internetowe, usługi SOAP / REST itp.). Musisz pomyśleć o bezpaństwowcu sposobie robienia rzeczy - jeśli masz uruchomionych więcej niż jedną maszynę wirtualną, ruch użytkowników jest rozdzielany między te instancje. Zestaw szkoleniowy platformy pokaże, jak radzić sobie z tym za pomocą pamięci lub pamięci podręcznej.
  • Możesz uruchomić kod, który żyje poza kolejką lub licznikiem czasu. Może masz zadania na żądanie, takie jak generowanie miniatur zdjęć lub obliczenia na podstawie danych wejściowych użytkownika. Nie wymagają one zewnętrznych punktów końcowych. Możesz wypchnąć swoje żądania do kolejki, a następnie uruchomić zadanie, które po prostu zasila tę kolejkę (i możesz skalować ten proces na wiele instancji, przy czym komunikaty w kolejce są używane przez wszystkie instancje).
  • Możesz uruchamiać .NET, Java, php, python, node, ruby ​​itp. Wystarczy rozprowadzić odpowiedni kod runtime wraz z kodem projektu. Wszystkie języki mogą wykonywać wywołania REST do interfejsu API platformy Azure, a kilka języków (w tym wymienione powyżej) ma zestawy SDK, które zajmą się tym za Ciebie. Wszystkie zestawy SDK języków są tutaj , z kodem źródłowym na github, tutaj .
  • Dzięki roli maszyny wirtualnej możesz instalować i uruchamiać oprogramowanie z bardzo złożonymi / czasochłonnymi instalacjami, instalacjami wymagającymi ręcznej interwencji oraz instalacjami, których nie można niezawodnie zautomatyzować. W takim przypadku musisz zająć się konserwacją systemu operacyjnego. Poza rolą maszyny wirtualnej dostępne są teraz maszyny wirtualne, które zapewniają konstrukcję maszyn wirtualnych w chmurze wraz z obsługą systemów Windows i Linux. Sugerowałbym maszyny wirtualne zamiast roli maszyny wirtualnej.

W przypadku ról Web i Worker system operacyjny i powiązane łatki są obsługiwane za Ciebie; budujesz komponenty aplikacji bez konieczności zarządzania maszyną wirtualną.

Dzięki rolom maszyny wirtualnej tworzysz kompletny obraz systemu Windows Server, dodajesz do niego zaczepy platformy Azure i wypychasz całą maszynę wirtualną do chmury (a następnie utrzymujesz obraz maszyny wirtualnej w czasie).

W przypadku maszyn wirtualnych po prostu wybierasz obraz systemu operacyjnego z galerii, który jest tworzony dla Ciebie i przechowywany jako vhd w magazynie obiektów blob. Następnie RDP / ssh i skonfiguruj go tak, jak chcesz.

W kapeluszu architekta robi się to zabawnie i interesująco. Możesz uruchamiać usługi sieciowe w roli internetowej lub w roli pracownika (i mieć możliwość otwierania portów w obu); Możesz hostować Tomcat lub inne serwery internetowe w roli pracownika. możesz połączyć witrynę internetową i usługi w jednej roli lub podzielić je na wiele ról dla różnych potrzeb w zakresie skalowalności.

Na dobry początek zapoznaj się z zestawem szkoleniowym platformy i zacznij przechodzić przez ćwiczenia.

David Makogon
źródło
Czy faktycznie możesz ujawnić punkty końcowe TCP w roli sieci Web? Według smarxa, wszystkie muszą być HTTP: stackoverflow.com/questions/2926737/… To powoduje kolejną subtelną różnicę między rolami.
Richard Astbury,
Odpowiedziałem na własne zapytanie, możesz otworzyć port TCP, ale nie możesz powiązać go ze stroną internetową.
Richard Astbury,
2
Richard - Chociaż kiedyś tak było, teraz punktami końcowymi mogą być tcp, http lub https, niezależnie od typu roli. Zbudowałem przykładową aplikację, która zawiera połączenie tcp i http, jednocześnie demonstrując nową aktualizację 25 punktów końcowych na rolę kilka miesięcy temu - zobacz tutaj post na blogu - davidmakogon.com/2011/05/ ...
David Makogon
Przepraszam - chodziło mi o demonstrację 25 punktów końcowych na wdrożenie. I ... widząc twój drugi komentarz, być może odpowiedziałem na złe pytanie. :)
David Makogon
@DavidMakogon - Co zastąpiło rolę sieci Web i rolę pracownika? Muszę wdrożyć witrynę z PhantomJS, która wymaga GDI +. GDI + nie jest w pełni obsługiwany przez Web Jobs. Miałem nadzieję, że uda mi się użyć roli internetowej. Co zastąpiło rolę sieci Web? Podobała mi się koncepcja maszyny wirtualnej, która została poprawiona i utrzymana przez Azure. Dzięki!
Martin
30
  • Role sieci Web to aplikacje internetowe hostowane w usługach IIS.
  • Role pracowników to procesy, które mogą wykonać pewną pracę (np. Automatycznie kompresować przesłane obrazy, robić rzeczy, gdy coś się zmieni w bazie danych, pobierać nowe wiadomości z kolejki i przetwarzać, nazywasz to)
  • Role maszyn wirtualnych obsługują maszyny wirtualne
Dennis Traub
źródło
10
W rzeczywistości role sieci Web i role pracowników to maszyny wirtualne.
David Makogon,
To znacznie prostsza odpowiedź i przepraszam, to nie są maszyny wirtualne ... czy możesz sobie wyobrazić, jaki byłby koszt wielopoziomowego rozwiązania z wieloma rolami pracownika działającymi w tle, jeśli jest to oddzielna maszyna wirtualna? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence
by być bardziej szczegółowym Role pracowników to maszyny wirtualne bez IIS
dejjub-AIS
21

Natknąłem się na to pytanie / odpowiedź SO kilka dni temu i znalazłem odpowiedzi udzielone nieco ponad moją głową (jestem nowy na platformie Azure i sieci Web). Znalazłem to podsumowanie dzisiejszego wieczoru w podstawach Azure, które uważałem za dobre, ogólne omówienie podstawowych różnic między rolą pracownika a rolą sieci Web:

Główna różnica między nimi polega na tym, że wystąpienie roli sieci Web uruchamia usługi IIS, a wystąpienie roli roboczej nie. Oba są jednak zarządzane w ten sam sposób i często aplikacja używa obu. Na przykład instancja roli internetowej może akceptować żądania od użytkowników, a następnie przekazywać je do instancji roli roboczej w celu przetworzenia. Aby skalować aplikację w górę lub w dół, możesz zażądać, aby platforma Windows Azure utworzyła więcej wystąpień roli lub zamknęła istniejące wystąpienia. Podobnie jak w przypadku maszyn wirtualnych platformy Windows Azure, opłaty są naliczane tylko za czas działania każdej instancji roli sieci Web lub procesu roboczego.

Jeśli dopiero zaczynasz przygodę z programowaniem na platformie Azure, zdecydowanie polecam przeczytanie pełnego artykułu tutaj: Wprowadzenie do systemu Windows Azure

Mam nadzieję, że to komuś pomogło tak samo, jak pomogło zapalić żarówkę za mnie.

BrianLegg
źródło
3

Role sieci Web w systemie Windows Azure mają specjalne przeznaczenie i zapewniają dedykowany serwer sieciowy Internetowych usług informacyjnych (IIS) używany do hostowania frontendowych aplikacji internetowych. Możesz szybko i łatwo wdrażać aplikacje internetowe do ról internetowych, a następnie skalować swoje możliwości obliczeniowe w górę lub w dół, aby sprostać wymaganiom.

Sufy Khan
źródło