如何停止Web角色/辅助角色的单个实例/ VM

时间:2013-10-15 09:52:35

标签: azure azure-web-roles powershell-v3.0

我们有一个VM说SampleVM depoyed&在Azure环境上运行,同样我们创建了2个实例。一个是WebRole&另一个是WorkerRole在Slot staging上运行。

我的问题是我可以通过powershell命令启动/停止SampleVM但是如何启动/停止在SampleVM上运行的单个实例(WebRole或WorkerRole)。

然而,当我停止SampleVM时,Instance也都停止了,但我想只停止一个Instance / VM,即WebRole或WorkerRole。

请提供一些powershell命令,并将参数传递给停止/启动单个实例

3 个答案:

答案 0 :(得分:6)

Gaurav给出了很好的答案,但我想补充一点细节,因为我认为可能会对网络和工作者角色产生一些混淆。每个角色是一组虚拟机的定义,它们执行相同的操作(由您构建)(您不需要处理操作系统 - 您只是启动应用程序,Azure负责处理VM本身)。

当Cloud Service正在运行时,每种角色类型至少会有一个实例。因此,在您的情况下,运行Web角色和辅助角色,您将至少运行两个VM。

如果您选择将您的网络角色扩展到3个实例,然后决定将其重新拨回2个实例,则无法选择关闭哪个实例;这由Azure的结构处理。请记住,角色的每个实例都运行相同的代码,Azure会将流量负载平衡到您的角色实例(通过您定义的外部端点)。您唯一需要担心的是关机。你有约。 5分钟清理任何正在运行的进程(并且您可以在关闭期间轻松地从负载均衡器中取出特定实例,因为您收到Stopping()事件。)

您无法关闭云服务中的整个角色(例如角色的所有实例)(因此......您无法在保持Web角色实例运行的同时关闭工作角色实例)。如果这是一项要求,那么您始终可以考虑在另一个Cloud Service中的一个Cloud Service和辅助角色中运行Web角色。如果他们使用队列传递数据,一切都将像以前一样工作。如果Web角色实例需要直接访问辅助角色实例,则可以将两个云服务都放入虚拟网络中。

还有一件事需要考虑:你不必有不同的角色。如果成本是一个因素,您可以在Web角色中运行所有代码。在OnStart()期间,在您的Web角色中启动其他进程/线程的工作很少 - 请记住,角色实例是完整的Windows Server虚拟机;运行任何你想要的。使用单个角色定义,缩放有点粗糙:所有内容都缩放在一起。使用单独的角色,您可以微调您的缩放(在构建更大的系统时更为重要)。

答案 1 :(得分:4)

David关于如何为您的PaaS服务建模的更广泛的观点都是正确的。但是要添加它,刚刚发布了一个名为Delete Role Instance的新Service Management API,它允许您删除角色的特定实例 - http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx。此功能是全新的,允许您选择要删除的实例,而不是受David描述的默认结构行为(始终删除最后一个实例)。

答案 2 :(得分:3)

简单的答案是,截至今天,您无法停止Web /辅助角色的单个实例。停止角色时,所有实例都将停止。 您可以从角色中删除实例,但是您无法再指定要删除的特定实例。请参阅下面的@ 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