Как остановить одиночный экземпляр / виртуальную машину WebRole / WorkerRole

У нас есть виртуальная машина, которая говорит, что SampleVM удален и запущен в среде Azure, и на том же самом мы создали 2 экземпляра. Один - это WebRole, а другой - WorkerRole, работающий на промежуточном этапе.

Моя проблема в том, что я могу запустить / остановить SampleVM с помощью команды powershell, но как я могу запустить / остановить один экземпляр (WebRole или WorkerRole), работающий на SampleVM.

Однако, когда я останавливаю SampleVM, оба экземпляра также останавливаются, но я хочу остановить только один экземпляр / виртуальную машину, то есть WebRole или WorkerRole.

Пожалуйста, предоставьте некоторую команду powershell с аргументом, передаваемым для остановки / запуска одного экземпляра


person user2881983    schedule 15.10.2013    source источник
comment
Спасибо за дополнительные разъяснения, но после прочтения у меня сложилось впечатление, что я не совсем понимаю мою картину дела, поэтому вот некоторая визуализация моего дела похожа на: Я создал облачные службы как SampleVM, когда мы нажимаем на SampleVM на портале Azure, он открывает страница, где есть несколько вкладок, таких как Dashboard, Monitor, Configure и т. д., и есть имя вкладки Instances, когда я щелкнул по нему, отображается новый фрейм, где вверху отображаются те же вкладки, а ниже - 2 ...   -  person user2881983    schedule 17.10.2013
comment
... первый слот - производство, а другой - постановка, и когда я нажимаю на постановку, отображается таблица, в которой отображаются 2 узла / виртуальных машин / экземпляров, а статус показывает, что выполняется, это только визуализация моего изображения случая. .... Теперь я могу запускать / останавливать SampleVM с помощью команды powershell, из-за которой оба запущенных экземпляра / узел / виртуальная машина / роль также остановились .... моя проблема в том, что я хочу остановить / запустить только одну роль / виртуальную машину / узел / экземпляры, как бы мы ни называли эти узлы, созданные в промежуточном слоте ...   -  person user2881983    schedule 17.10.2013
comment
ниже приведена команда, с помощью которой я могу остановить / запустить облачную службу Stop-AzureService -ServiceName SampleVM -Slot Staging ... конкретный экземпляр в этой конкретной облачной службе с именем SampleVM.   -  person user2881983    schedule 17.10.2013
comment
Как я уже упоминал в ваших комментариях под моим ответом: пожалуйста, отредактируйте свой вопрос с уточнениями; не прячьте лишние подробности в серии комментариев.   -  person David Makogon    schedule 17.10.2013


Ответы (3)


Хороший ответ от Gaurav, но я хотел добавить немного больше деталей, так как думаю, что может быть небольшая путаница с веб-ролями и рабочими ролями. Каждая роль - это определение группы виртуальных машин, которые делают то же самое, что и созданы вами (вы не имеете дело с ОС - вы просто запускаете свое приложение, а Azure позаботится о Сама ВМ).

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

Если вы решите масштабировать свою веб-роль, скажем, до трех экземпляров, а затем решите сократить ее до двух экземпляров, вы не сможете выбрать, какой из них закрыть; об этом позаботится структура Azure. Помните, что каждый экземпляр роли выполняет идентичный код, а Azure балансирует нагрузку на ваши экземпляры роли (через внешние конечные точки, которые вы определяете). Единственное, о чем нужно беспокоиться, - это выключение. У вас ок. 5 минут на очистку всех запущенных процессов (и вы можете легко извлечь конкретный экземпляр из подсистемы балансировки нагрузки во время завершения работы, поскольку вы получаете событие Stopping()).

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

Еще одна вещь, которую следует учитывать: вам не обязательно иметь отдельные роли. Если стоимость является фактором, вы можете запустить весь свой код в своей веб-роли. Требуется немного усилий, чтобы развернуть дополнительные процессы / потоки в вашей веб-роли во время OnStart() - помните, что экземпляры ролей являются полными виртуальными машинами Windows Server; беги, что хочешь. С одним определением роли масштабирование немного грубо: все масштабируется вместе. С отдельными ролями вы можете точно настроить масштабирование (что гораздо важнее при создании более крупных систем).

person David Makogon    schedule 15.10.2013

Все более общие соображения Дэвида о том, как моделировать вашу услугу PaaS, верны. Но в дополнение к этому есть только что выпущенный новый API управления службами под названием Удалить экземпляр роли, который позволит вам удалить определенный экземпляр роли - http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx. Эта функция является совершенно новой, позволяя вам выбирать, какой экземпляр удалить, вместо того, чтобы подчиняться поведению фабрики по умолчанию, которое описывает Дэвид (всегда удаляет последний экземпляр).

person kwill    schedule 15.10.2013

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

Вы также можете найти следующие ссылки, полезные для удаления определенных экземпляров ролей:

http://gauravmantri.com/2013/10/16/a-new-version-of-windows-azure-service-management-api-is-available-with-delete-specific-role-instances-and-more-goodies/

https://github.com/richorama/Two10.Azure.SelfDestruct

person Gaurav Mantri    schedule 15.10.2013