Подтвердить что ты не робот

Несколько ролей в одном экземпляре в Windows Azure

Можно ли развернуть несколько ролей в одном экземпляре?

У меня есть три веб-роли (сайт в asp.net mvc3 и два экземпляра служб WCF) и две рабочие роли (службы Windows).

Загрузка для этого приложения очень мала, поэтому я не хочу создавать так много экземпляров в Windows Azure и оплачивать все экземпляры сейчас. Вместо этого я хочу развернуть все мое приложение в том же экземпляре и изменить его позже, если я получу некоторый доход от своих приложений.

I Googled и нашел некоторые сообщения на форуме, чем это возможно, и некоторые из них не возможны... но я не могу найти информацию, как это сделать...

Итак, два вопроса: Является ли это возможным? Как я могу это сделать?

4b9b3361

Ответ 1

Немного другой ответ, чем @Simon... Роль на самом деле является шаблоном для виртуальной машины Windows Server 2008 (см. мой ответ на этот вопрос SO), Каждая роль имеет один или несколько экземпляров, и вы можете запускать все, что хотите, для любой роли.

Вы можете полностью запустить свой веб-сайт и все ваши сервисы WCF за одну роль. Теперь вы масштабируете приложение вверх/вниз (размер виртуальной машины) и out/in (количество экземпляров) как единый масштаб. Если, скажем, ваши службы WCF интенсивно работают на процессорах, в результате чего экземпляры виртуальных машин замедляются для ваших посетителей сети, вам необходимо масштабировать их достаточно, чтобы обрабатывать этих посетителей.

Как только вы достигнете значительной нагрузки на трафик, стоит рассмотреть отдельные роли. Таким образом, вы можете определить размер и количество виртуальных машин для каждой роли. Возможно, у вас есть 2 или 3 небольших экземпляра веб-роли для обработки вашего пользовательского трафика на веб-сайте и, возможно, 2 средних экземпляра роли "Рабочий" для обработки служб WCF (как пример). Чем больше у вас ролей, тем меньше у вас масштабирование, но вы должны запустить хотя бы один экземпляр каждой роли, что повышает базовую стоимость вашей системы в состоянии покоя.

Ответ 2

Нет, роли - это экземпляры, и каждый из них занимает всю виртуальную машину. Однако вы можете развернуть несколько веб-сайтов в одну роль, что позволит вам развернуть все ваши приложения MVC и WCF в одну веб-роль. Вам нужно добавить веб-сайты в элемент sites в ServiceDefinition. Кажется, есть несколько сообщений в блогах о том, как это делается - здесь и .

Для рабочих ролей я предлагаю вам создать одну рабочую роль и объединить работу, выполняемую в этих ролях, например, запустить отдельный поток для каждой контролируемой очереди. Этот fooobar.com/questions/272311/... от Eugenio Pace.

Я бы не рекомендовал пытаться объединить функциональные функции роли в веб-роли. Помимо того, что это не имеет архитектурного смысла, смысла в физической инфраструктуре (IIS vs not IIS), есть потенциальные проблемы, такие как прекращение выполнения потоков при перезагрузке рабочих ролей (поток, который не запускается IIS, может прерываться внезапно)

Ответ 3

Проверьте этот эпизод облачного покрова. вы можете поместить пару роли веб в один и тот же экземпляр. роль рабочего, вы всегда можете поместить несколько потоков для работы с данными.

http://channel9.msdn.com/Shows/Cloud+Cover/Cloud-Cover-Episode-37-Multiple-Websites-in-a-Web-Role.

Обратите внимание, что каждый раз, когда вы загружаете новую версию в azure, вам нужно снова загрузить все роли в ролях/роли пользователя в azure

Ответ 4

Отметьте это сообщение в блоге "Объединение нескольких ролей рабочего лазури в розу Azure Web" http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2012/02/combining-multiple-azure-worker-roles.html

Я думаю, что это то, что вам нужно сделать...

Также Уэйн имеет вариации этого в своем блоге: http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/how-to-combine-worker-and-web-role-in.html

НТН