1

我们为 MS Azure 编写了一个高度可扩展的云服务,它有两个角色:“WebsiteRole”和“WebsiteWorkerRole”。为了获得更好的性能,我们在多个区域(2 个美国、2 个欧洲、1 个日本)部署了这个 Cloudservice。每个区域都有不同的配置文件(EuWestProductive.azurePubxml、ServiceConfiguration.CloudEuWest.cscfg、Web.ReleaseEuWest.config)。

现在的问题:在每个区域中,我们都运行“WebsiteRole”和“WebsiteWorkerRole”。但是“WebsiteWorkerRole”只有非常小的任务,所以一个区域的一个额外的小实例就绰绰有余了。

我们尝试将角色实例计数设置为零 (ServiceConfiguration.CloudEuWest.cscfg)。但这是不允许的: Azure 反馈:允许角色实例计数为 0

部署云服务时是否有其他方法可以删除角色?

4

2 回答 2

3

不,正如您所发现的,云服务不允许规模为零。您必须有效地删除部署。为了对您已有的内容进行最小的更改,您可以将这两个角色分成两个不同的部署。然后让一个 Azure 自动化脚本或在其他地方运行的一组脚本,在需要时处理工作人员角色的部署和不需要时的停用。

根据工作人员正在执行的工作负载类型,您还可以考虑采用另一种方法来使用 Azure 自动化等工具来执行工作。如果它是每天仅发生几次的少量处理,则尤其如此。您需要按分钟为自动化脚本付费,因此请确保它的运行时间少于当前实际实例的运行时间。

它真的归结为那个工人正在做什么,它真正需要做多少处理,它需要多少资源以及它需要运行的频率。有很多选择,例如 Azure 自动化、Web 角色上的另一个线程、单独的云服务部署等。每种都有自己的优缺点。一种选择甚至可能是查看他们刚刚宣布的新 Azure Functions(预览版并由执行收费)。

简短的回答是将工作人员与 WebSiteRole 部署分开,然后确定该工作人员角色的最佳托管机制,确保该选项包括仅在您需要时运行的能力。

于 2016-04-01T10:51:42.173 回答
1

感谢@MikeWo,您分离部署的想法很棒!我已经用一个小示例项目验证了这一点,它工作得很好。现在还可以更改每个区域的 VM 大小和其他配置。

示例项目

(评论不允许图片)

于 2016-04-01T11:40:55.317 回答