我的问题是我可以通过powershell命令启动/停止SampleVM但是如何启动/停止在SampleVM上运行的单个实例(WebRole或WorkerRole).
但是当我停止SampleVM时,Instance也都停止了,但我想只停止一个Instance / VM,即WebRole或WorkerRole.
请提供一些powershell命令,并将参数传递给Stop / Start单个实例
解决方法
当Cloud Service正在运行时,每种角色类型至少会有一个实例.因此,在您的情况下,运行Web角色和辅助角色,您将至少运行两个VM.
如果您选择将您的Web角色扩展到3个实例,然后决定将其转回2个实例,则无法选择要关闭的实例.这由Azure的结构处理.请记住,角色的每个实例都运行相同的代码,Azure会将流量负载平衡到您的角色实例(通过您定义的外部端点).您唯一需要担心的是关机.你有约. 5分钟清理任何正在运行的进程(并且您可以在关闭期间轻松地从负载平衡器中取出特定实例,因为您收到Stopping()事件).
您无法关闭云服务中的整个角色(例如,角色的所有实例)(因此……您无法在保持Web角色实例运行的同时关闭工作者角色实例).如果这是一项要求,那么您始终可以考虑在另一个Cloud Service中的一个Cloud Service和辅助角色中运行Web角色.如果他们使用队列传递数据,一切都将像以前一样工作.如果Web角色实例需要直接访问辅助角色实例,则可以将两个云服务都放入虚拟网络.
还有一件事需要考虑:您不必拥有单独的角色.如果成本是一个因素,您可以在Web角色中运行所有代码.在OnStart()期间,在Web角色中启动其他进程/线程的工作很少 – 请记住,角色实例是完整的Windows Server虚拟机;运行任何你想要的.使用单个角色定义,缩放有点粗糙:所有内容都缩放在一起.使用单独的角色,您可以微调您的缩放(在构建更大的系统时更为重要).