Несколько ролей в одном экземпляре в Windows Azure - PullRequest
19 голосов
/ 18 февраля 2012

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

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

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

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

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

Ответы [ 4 ]

14 голосов
/ 18 февраля 2012

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

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

7 голосов
/ 18 февраля 2012

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

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

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

4 голосов
/ 19 февраля 2012

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

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

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

2 голосов
/ 18 февраля 2012

Ознакомьтесь с этой записью в блоге «Объединение нескольких рабочих ролей Azure в веб-роль Azure» http://www.31a2ba2a -b718-11dc-8314-0800200c9a66.com / 2012/02 / Combining-Multiple Azure-Worker-Role..html

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

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

HTH

...