我们有一个虚拟机,说 SampleVM 已部署并在 Azure 环境上运行,同时我们创建了 2 个实例,一个是 WebRole,另一个是运行在 Slot staging 上的 WorkerRole。
我的问题是我可以通过 powershell 命令启动/停止 SampleVM,但是如何启动/停止在 SampleVM 上运行的单个实例(WebRole 或 WorkerRole)。
但是,当我停止 SampleVM 时,两个实例也停止,但我只想停止一个实例/VM,即 WebRole 或 WorkerRole。
请提供一些 powershell 命令,并将参数传递给停止/启动单个实例
Gaurav 的回答很好,但我想添加更多细节,因为我认为网络和工作者角色可能有点混乱。每个role是一组执行相同操作的虚拟机的定义,由您构建(您不处理操作系统 - 您只需启动您的应用程序,Azure 负责 VM 本身)。
当云服务运行时,每种角色类型至少有一个实例。因此,在您的情况下,同时运行 Web 角色和辅助角色,您将至少有两个正在运行的虚拟机。
如果您选择将 Web 角色扩展到 3 个实例,然后决定将其恢复为 2 个实例,则您无法选择要关闭哪一个实例;这是由 Azure 的结构负责的。请记住,角色的每个实例都运行相同的代码,并且 Azure 负载平衡到角色实例的流量(通过您定义的外部终结点)。您唯一需要担心的是关机。你有大约。 5 分钟清理所有正在运行的进程(并且您可以在关闭期间轻松地从负载均衡器中取出特定实例,因为您会收到Stopping()
event).
您无法关闭云服务中的整个角色(例如角色的所有实例)(因此...您无法在保持 Web 角色实例运行的同时关闭辅助角色实例)。如果这是一项要求,那么您始终可以考虑在一个云服务中运行 Web 角色,并在另一个云服务中运行辅助角色。如果他们使用队列来传递数据,一切仍然会像以前一样工作。如果 Web 角色实例需要直接访问辅助角色实例,您可以将这两个云服务放入虚拟网络中。
还有一件事要考虑:你不have to有不同的角色。如果成本是一个因素,您可以在 Web 角色中运行所有代码。在您的 Web 角色中,只需很少的工作即可启动其他进程/线程OnStart()
- 请记住,角色实例是完整的 Windows Server 虚拟机;随心所欲地运行。对于单一角色定义,缩放有点粗糙:所有内容都一起缩放。通过单独的角色,您可以微调您的扩展(在构建更大的系统时更重要)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)