В Windows Azure: что такое веб-роль, рабочая роль и роль виртуальной машины?
115
Приложение, над которым я работаю, содержит веб-роль: это простое веб-приложение. Мне нужно было разместить приложение в Windows Azure, поэтому я создал веб-роль. Я действительно хочу знать, для чего нужны эти роли. Каково их значение с точки зрения кодирования или хранения?
РЕДАКТИРОВАТЬ 3/3/2013 - обновлено для ссылки на конечные точки UDP, виртуальные машины и другие языки
РЕДАКТИРОВАТЬ 6/6/2013 - обновлено, чтобы отразить прекращение поддержки роли виртуальной машины и обновление базовых образов ОС для веб-ролей / рабочих ролей до Windows Server 2012
Хорошая ссылка от @Vladimir. Еще немного пояснений: все роли (веб, рабочие) по сути являются Windows Server. Веб-роли и рабочие роли почти идентичны:
Веб-роли - это виртуальные машины Windows Server с включенным IIS.
Рабочие роли - это виртуальные машины Windows Server с отключенным IIS (и вы можете включить его вручную)
Роли виртуальных машин - это образы Windows Server 2008, которые вы создаете локально через Hyper-V и отправляете в Azure (они больше не поддерживаются и больше не доступны по состоянию на 31 мая 2013 г.
Виртуальные машины - это образы Windows или Linux, созданные в Azure, хранящиеся в виде vhd-диска в вашем собственном хранилище и имеющие несколько улучшений по сравнению с ролью виртуальной машины. Например: поскольку vhd находится в вашей собственной учетной записи хранения, вы можете легко создать шаблон изображения из вашего vhd, скопировать его на новый vhd или даже загрузить на VM Depot (только для Linux).
Чтобы ответить на ваш вопрос о том, что делать с этими ролями: Учебный комплект платформы (упомянутый ниже) даст вам много хороших идей и примеров, но вот несколько простых вариантов использования:
Вы можете запустить любой код, который предоставляет конечную точку tcp, http, https или udp (веб-приложения, службы SOAP / REST и т. Д.). Однако вам нужно подумать о способе работы без сохранения состояния - если у вас работает более одного экземпляра виртуальной машины, пользовательский трафик распределяется между этими экземплярами. Учебный комплект по платформе покажет вам, как использовать хранилище или кеш, чтобы справиться с этим.
Вы можете запустить код, который живет в очереди или по таймеру. Возможно, у вас есть задачи по запросу, такие как создание эскизов фотографий или расчеты на основе ввода данных пользователем. Им не нужны внешние конечные точки. Вы можете поместить свои запросы в очередь, а затем запустить задачу, которая просто подпитывается из этой очереди (и вы можете масштабировать этот процесс по нескольким экземплярам, при этом сообщения очереди потребляются всеми экземплярами).
Вы можете запускать .NET, Java, php, python, node, ruby и т. Д. Вам просто нужно распространить соответствующий код времени выполнения вместе с кодом вашего проекта. Все языки могут выполнять вызовы REST к API Azure, а для некоторых языков (включая упомянутые выше) есть пакеты SDK, которые позаботятся об этом за вас. Все языковые SDK здесь , с исходным кодом на github здесь .
С ролью виртуальной машины вы можете устанавливать и запускать программное обеспечение с очень сложными / длительными установками, установками, требующими ручного вмешательства, и установками, которые нельзя надежно автоматизировать. В этом случае вы должны заниматься обслуживанием ОС. Помимо роли ВМ, теперь существуют виртуальные машины, обеспечивающие создание виртуальных машин в облаке, а также поддержку Windows и Linux. Я бы предложил виртуальные машины вместо роли виртуальной машины.
С ролями Web и Worker операционная система и связанные с ней исправления позаботятся о вас; вы создаете компоненты своего приложения без необходимости управлять виртуальной машиной.
Используя роли виртуальных машин, вы создаете полный образ Windows Server, добавляете к нему перехватчики Azure и отправляете всю виртуальную машину в облако (а затем поддерживаете образ виртуальной машины с течением времени).
С виртуальными машинами вы просто выбираете образ ОС из галереи, который создается для вас и сохраняется как 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/…
Дэвид Макогон
Извините, я имел в виду демонстрацию 25 конечных точек на каждое развертывание. И ... увидев ваш другой комментарий, возможно, я ответил не на тот вопрос. :)
Дэвид Макогон
@DavidMakogon - Что заменило веб-роль и рабочую роль? Мне нужно развернуть веб-сайт с PhantomJS, для которого требуется GDI +. GDI + не полностью поддерживается веб-заданиями. Я надеялся, что смогу использовать веб-роль. Что пришло на смену веб-роли? Мне понравилась концепция виртуальной машины, которую Azure исправляла и поддерживала. Спасибо!
Martin
30
Веб-роли - это веб-приложения, размещенные в IIS.
Рабочие роли - это процессы, которые могут выполнять некоторую работу (например, автоматически сжимать загруженные изображения, делать что-то, когда что-то изменяется в вашей базе данных, получать новые сообщения из очереди и обрабатывать, вы называете это)
В ролях виртуальных машин размещаются виртуальные машины
Фактически, веб-роли и рабочие роли - это виртуальные машины.
Дэвид Макогон
Это гораздо более простой ответ, и извините, они не являются виртуальными машинами ... вы можете представить, сколько будет стоить многоуровневое решение с несколькими рабочими ролями, работающими в фоновом режиме, если это отдельная виртуальная машина? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence,
чтобы быть более конкретным,
рабочие
21
Я натолкнулся на этот вопрос / ответ SO несколько дней назад, и я нашел ответы, предоставленные немного над моей головой (я новичок в Azure и Интернете). Сегодня вечером я нашел это резюме в разделе «Основы Azure», которое, как мне показалось, было хорошим общим обзором основных различий между рабочими и веб-ролями:
Основное различие между ними заключается в том, что экземпляр веб-роли запускает IIS, а экземпляр рабочей роли - нет. Тем не менее, оба управляются одинаково, и приложение обычно использует оба. Например, экземпляр веб-роли может принимать запросы от пользователей, а затем передавать их экземпляру рабочей роли для обработки. Чтобы масштабировать приложение вверх или вниз, вы можете запросить, чтобы Windows Azure создала больше экземпляров любой роли или отключила существующие экземпляры. Как и в случае с виртуальными машинами Windows Azure, вы платите только за время работы каждого экземпляра веб-или рабочей роли.
Если вы новичок в разработке Azure, я настоятельно рекомендую прочитать полную статью здесь: Введение в Windows Azure
Я надеюсь, что это поможет кому-то так же, как помогло мне зажечь лампочку.
Веб-роли в Windows Azure имеют специальное назначение и предоставляют выделенный веб-сервер Internet Information Services (IIS), используемый для размещения интерфейсных веб-приложений. Вы можете быстро и легко развернуть веб-приложения для веб-ролей, а затем масштабировать свои вычислительные возможности в большую или меньшую сторону для удовлетворения спроса.
источник
Я натолкнулся на этот вопрос / ответ SO несколько дней назад, и я нашел ответы, предоставленные немного над моей головой (я новичок в Azure и Интернете). Сегодня вечером я нашел это резюме в разделе «Основы Azure», которое, как мне показалось, было хорошим общим обзором основных различий между рабочими и веб-ролями:
Если вы новичок в разработке Azure, я настоятельно рекомендую прочитать полную статью здесь: Введение в Windows Azure
Я надеюсь, что это поможет кому-то так же, как помогло мне зажечь лампочку.
источник
Веб-роли в Windows Azure имеют специальное назначение и предоставляют выделенный веб-сервер Internet Information Services (IIS), используемый для размещения интерфейсных веб-приложений. Вы можете быстро и легко развернуть веб-приложения для веб-ролей, а затем масштабировать свои вычислительные возможности в большую или меньшую сторону для удовлетворения спроса.
источник