这是我的情景:
我有一个运行“大量”.NET WCF项目的Azure云服务。启动任务带来了重要性,因为我们将大量数据缓存到内存中以使项目快速运行。
我们有一些逻辑来覆盖RoleInstance的OnStart方法来执行此缓存,因此在完成所有缓存之前,实例不会返回“Ready”。
当我们部署我们的服务时,我们有2个实例(因此它们位于不同的Fault \ Update域中)。
在这种情况下,我有两个问题:
当我们部署更新或Microsoft对其中一个托管VM执行维护时,Azure负载均衡器是否考虑了角色状态,而不是将流量路由到它,直到它处于“就绪”状态?
对于上述负载均衡器,我是否必须为云服务配置任何内容以在多个实例之间取得平衡?我总是认为微软为您管理了这个...这样,如果您扩展到N个角色实例,云服务将考虑实例的数量并相应地分配负载。
谢谢!
答案 0 :(得分:1)
它是为您处理的。负载平衡器探针与每个VM上的guest虚拟机代理进行通信,一旦角色处于Ready状态,它只返回HTTP 200。但是,如果您正在使用Web角色并在其上运行w3wp.exe,则负载均衡器无法检测到可能生成的HTTP 500响应等任何故障。
在这种情况下,您需要在.csdef文件中插入适当的LoadBalancerProbe部分,并正确处理OnStop事件。 This article更详细地描述了默认的负载均衡器行为,以及如何对其进行自定义。