我们为MS Azure编写了一个高可扩展的Cloudservice,它有两个角色:" WebsiteRole"和#34; WebsiteWorkerRole"。为了获得更好的性能,我们在多个地区(2x US,2x EU,1x JP)部署此Cloudservice。我们为每个区域配置了不同的配置文件(EuWestProductive.azurePubxml,ServiceConfiguration.CloudEuWest.cscfg,Web.ReleaseEuWest.config)。
现在问题:在每个地区,我们都运行了" WebsiteRole"和#34; WebsiteWorkerRole"。但是" WebsiteWorkerRole"只有非常小的任务,所以一个区域中的一个额外的小实例绰绰有余。
我们尝试将Role实例计数设置为零(ServiceConfiguration.CloudEuWest.cscfg)。但这是不允许的: Azure Feedback: Allow a Role instance count of 0
在部署Cloudservice时是否有其他方法可以删除角色?
答案 0 :(得分:3)
不,正如您所发现的,云服务不允许将比例缩小为零。您必须有效地删除部署。要对已有的内容进行最小的更改,您可以将两个角色分成两个不同的部署。然后在其他地方运行Azure自动化脚本或脚本集,处理在需要时部署工作者角色并在不需要时停用它。
根据工作人员正在执行的工作负载类型,您还可以考虑使用Azure自动化等其他途径来执行工作。如果只进行少量处理,每天只发生几次,则尤其如此。您需要按分钟为自动化脚本付费,因此请确保它的运行时间小于实际当前实例的运行时间。
它实际上归结为该工作人员正在做什么,它真正需要处理多少处理,需要多少资源以及需要运行的频率。有很多选项,例如Azure自动化,Web角色的另一个线程,单独的云服务部署等。每个选项都有各自的优缺点。一种选择甚至可以查看他们刚刚宣布的新Azure功能(预览并由执行收费)。
简短的回答是将工作人员与WebSiteRole部署分开,然后确定该工作人员角色的最佳托管机制,确保该选项包括仅在您需要时运行的能力。
答案 1 :(得分:1)