6

我们有一个 VM,说 SampleVM 已在 Azure 环境中部署和运行,同时我们创建了 2 个实例,一个是 WebRole,另一个是运行到 Slot 登台的 WorkerRole。

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

但是,当我停止 SampleVM 时,两个实例也都停止了,但我只想停止一个实例/VM,即 WebRole 或 WorkerRole。

请提供一些带有参数传递的 powershell 命令以停止/启动单个实例

4

3 回答 3

6

Gaurav 的回答很好,但我想添加更多细节,因为我认为 Web 和工作角色可能会有些混乱。每个角色都是一组虚拟机的定义,这些虚拟机执行相同的操作,由您构建(您不处理操作系统 - 您只需启动应用程序,Azure 负责虚拟机本身)。

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

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

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

还要考虑一件事:您不必拥有单独的角色。如果成本是一个因素,您可以在 Web 角色中运行所有代码。在您的 Web 角色中启动额外的进程/线程几乎不需要工作OnStart()- 请记住角色实例是完整的 Windows Server 虚拟机;随心所欲地运行。使用单一角色定义,扩展有点粗糙:所有东西都一起扩展。使用单独的角色,您可以微调您的扩展(在构建更大的系统时更为重要)。

于 2013-10-15T11:06:28.840 回答
4

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

于 2013-10-15T15:50:26.383 回答
3

简单的答案是,截至今天,您无法停止您的网络/工作者角色的单个实例。当您停止角色时,所有实例都将停止。您可以从您的角色中删除实例,但同样您无法指定要删除的特定实例。请参阅下面的@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-好东西/

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

于 2013-10-15T10:23:06.903 回答