У Windows Azure: Що таке веб-роль, роль працівника та роль VM?


115

Додаток, над яким я працюю, містить веб-роль: це простий веб-додаток. Мені потрібно було розмістити додаток в Windows Azure, тому я створив веб-роль. Я насправді хочу знати, для чого ці ролі. Яке їх значення кодує мудре або зберігає мудрість?

Відповіді:


101

EDIT 3/3/2013 - оновлено до посилань на кінцеві точки UDP, віртуальні машини та інші мови

EDIT 6/6/2013 - оновлено, щоб відобразити скасування ролі VM та оновити для базових ліній зображень ОС на веб-серверах / робочих роботах ОС Windows Server 2012

Гарне посилання від @Vladimir. Ще трохи роз’яснення: усі ролі (веб, працівник) по суті є Windows Server. Ролі Web та Worker майже однакові:

  • Веб-ролі - це віртуальні віртуальні машини Windows Server із включеним IIS
  • Ролі робітників - це віртуальні віртуальні машини Windows Server з вимкненим IIS (і ви можете ввімкнути його вручну)
  • Ролі VM - це зображення Windows Server 2008, які ви створюєте локально за допомогою Hyper-V та завантажуєте в Azure (а тепер припинені та більше не доступні з 31 травня 2013 року)
  • Віртуальні машини - це зображення Windows або Linux, створені в Azure, що зберігаються як vhd у вашому власному сховищі та мають декілька вдосконалень щодо ролі VM. Наприклад: оскільки vhd знаходиться у вашому власному обліковому записі пам’яті, ви можете легко створити шаблон зображення зі свого vhd, скопіювати його у новий vhd або навіть завантажити його у VM Depot (лише для Linux).

Щоб відповісти на запитання про те, що робити з цими ролями: Набір навчальних платформ (згаданий нижче) дасть вам багато хороших ідей та зразків, але ось декілька простих випадків використання:

  • Ви можете запустити будь-який код, який відображає кінцеву точку tcp, http, https або udp (веб-програми, послуги SOAP / REST тощо). Вам потрібно подумати про спосіб без громадянства - якщо у вас працює більше одного екземпляра VM, трафік користувачів розподіляється між цими екземплярами. Навчальний комплект платформи покаже вам, як використовувати сховище чи кеш для боротьби з цим.
  • Ви можете запустити код, який живе поза чергою чи таймером. Можливо, у вас є завдання на замовлення, такі як генерація мініатюр фотографій або розрахунки на основі даних користувача. Їм не потрібні зовнішні кінцеві точки. Ви можете підштовхнути свої запити до черги, а потім виконати завдання, яке просто подає цю чергу (і ви можете масштабувати цей процес у кількох екземплярах, з повідомленнями черги, що споживаються усіма екземплярами).
  • Ви можете запустити .NET, Java, php, python, вузол, ruby ​​тощо. Потрібно просто поширити відповідний код виконання разом з кодом проекту. Всі мови можуть здійснювати REST-дзвінки в API Azure, а кілька мов (включаючи згадані вище) мають SDK, які для вас дбають про це. Усі мовні SDK тут , з вихідним кодом на github, тут .
  • З роллю VM ви можете встановлювати та запускати програмне забезпечення з дуже складними / трудомісткими установками, установками, які потребують ручного втручання, та установками, які неможливо надійно автоматизувати. У цьому випадку ви маєте справу з технічним обслуговуванням ОС. Окрім ролі VM, тепер існують віртуальні машини, що надають хмарні побудови VM разом із підтримкою Windows та Linux. Я б запропонував віртуальні машини над роллю VM.

За допомогою ролей Web та Worker для вас дбають ОС та пов'язані з ними патчі; ви створюєте компоненти свого додатка без необхідності керування VM.

За допомогою ролей VM ви створюєте повноцінне зображення Windows Server, додаєте до нього гачки Azure і засуньте всю ВМ у хмару (а потім підтримуєте зображення VM у часі).

З віртуальними машинами ви просто вибираєте зображення ОС з галереї, яке створюється для вас і зберігається як vhd у сховищі blob. Потім ви RDP / ssh і встановлюєте його, як вам подобається.

Одягаючи капелюх архітектора, тут стає весело та цікаво. Ви можете запускати веб-сервіси в ролі веб-ролі або працівника (і мати можливість відкривати порти в будь-якому); Ви можете розмістити Tomcat або інші веб-сервери в ролі Worker. Ви можете вибрати комбінувати веб-сайт плюс послуги в одній ролі або розділити їх на кілька ролей для різних масштабованих потреб.

Для гарного початку погляньте на навчальний набір платформи і почніть гуляти через вправи.


Чи можете ви дійсно виставити кінцеві точки tcp у ролі веб-сайту? Відповідно до smarx, всі вони повинні бути HTTP: stackoverflow.com/questions/2926737/… Це спричиняє ще одну тонку різницю між ролями.
Річард Астбері

Я відповів на власний запит, ви можете відкрити порт tcp, але не прив’язувати його до веб-сайту.
Річард Астбері

2
Річард - Хоча раніше це було, кінцевими точками тепер можуть бути tcp, http або https, незалежно від типу ролі. Я створив зразковий додаток, який містить суміш tcp та http, демонструючи нове оновлення на 25 кінцевих точок на роль кілька місяців тому - дивіться тут для публікації в блозі - davidmakogon.com/2011/05/…
David Makogon

Вибачте - я мав на увазі демонстрацію 25 кінцевих точок на розгортання. І ... побачивши ваш інший коментар, я, можливо, відповів неправильно. :)
Девід Макогон

@DavidMakogon - Що замінило роль веб-ролі та робочу роль? Мені потрібно розгорнути веб-сайт із PhantomJS, для якого потрібен GDI +. GDI + не повністю підтримується веб-роботами. Я сподівався, що мені вдасться скористатися веб-роллю. Що замінило веб-роль? Мені сподобалася концепція VM, яку латають та підтримують Azure. Дякую!
Мартін

30
  • Веб-ролі - це веб-програми, розміщені в IIS.
  • Ролі робітників - це процеси, які можуть виконати певну роботу (тобто автоматично стискати завантажені зображення, робити вміст, коли щось змінюється у вашій базі даних, отримувати нові повідомлення з черги та обробляти, ви називаєте це)
  • Ролі ВМ приймають віртуальні машини

10
Насправді, веб-ролі та робочі ролі - це ВМ.
Девід Макогон

Це набагато простіша відповідь і вибачте, вони не є віртуальними машинами ... чи могли б ви уявити, якою буде вартість багаторівневого рішення з кількома робочими ролями, що працюють у фоновому режимі, якщо це окремий віртуальний комп'ютер? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence

щоб бути більш конкретними
Рольові

21

Я натрапив на це питання ТА відповіді кілька днів тому, і я виявив, що відповіді трохи над головою (я новачок у Azure та Web). Я знайшов цей підсумок в основах Azure сьогодні ввечері, який, на мою думку, був хорошим оглядом високого рівня основних відмінностей між робочою та веб-роллю:

Основна відмінність між ними полягає в тому, що екземпляр веб-ролі виконує IIS, тоді як екземпляр ролі працівника не виконує. Однак обом керується однаковим чином, і для програми застосовано обидва. Наприклад, екземпляр ролі веб-сайту може приймати запити від користувачів, а потім передавати їх робочому екземпляру ролі для обробки. Щоб масштабувати свою програму вгору або вниз, ви можете попросити Windows Azure створити більше примірників або ролей, або закрити існуючі екземпляри. І подібно до віртуальних машин Windows Azure, вам стягується плата лише за час роботи кожного екземпляра ролі Інтернету чи робочого.

Якщо ви новачок у розробці Azure, я настійно рекомендую прочитати повну статтю тут: Вступ до Windows Azure

Я сподіваюся, що це допомагає комусь настільки ж, як це допомогло ввімкнути лампочку для мене.


3

Веб-ролі в Windows Azure мають спеціальне призначення і забезпечують спеціалізований веб-сервер інформаційних служб Інтернету (IIS), який використовується для розміщення зовнішніх веб-додатків. Ви можете швидко та легко розгортати веб-програми на веб-ролі, а потім масштабувати свої можливості обчислення вгору або вниз, щоб задовольнити попит.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.