我试图阅读Windows Azure中的负载平衡,并且有关它的所有信息都非常模糊和非特定.我真正想要的只是一个简单的答案:Azure如何执行负载平衡?
许多应用程序使用会话或内存数据来提高性能.使用Azure,我不确定这是否可行,因为(据我所知),Azure没有任何类型的"粘性"会话.即使它不是基于会话的,而只是基于IP的平衡,这对于许多应用来说已经足够了.
那么,当天的问题 - Azure究竟如何执行其负载平衡?
好的,在这里给出一个正确的答案 - Azure DOES支持web和worker角色前面的负载平衡(所以在这个线程上标记为最佳的答案是完全错误的),但它不支持Affinity负载平衡,这是jvenema所要求的因为我觉得.当前实现使用循环行为.
Azure通过在您设置的实例之间分配流量来处理表存储和SQL Azure的负载平衡.
对于像传统asp.net应用程序的会话状态这样的事情,会话数据将存储在表存储中,然后可供所有webrole实例使用.这是在这里提到的.
Windows Azure跨每个公共端点提供负载平衡,允许您将应用程序扩展到任意数量的实例.您需要确保您的应用程序是无状态的(或将状态存储在跨实例的公共区域中,例如blob或表).唯一没有负载平衡的端点是内部端点.因此,如果您正在进行某种类型的角色间通信,例如从Web角色到在内部端点上托管wcf服务的多个工作者角色实例之一,您需要处理这些实例之间的负载平衡.
虽然负载平衡曾经是循环,但微软已经改变了他们进行负载平衡的方式,如本博客所述:
http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/
Microsoft Azure负载均衡器使用5元组(源IP,源端口,目标IP,目标端口,协议类型)来计算用于将流量映射到可用服务器的哈希值