一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌。
Windows Azure的负载均衡器是四层的,前期的版本不支持会话保持(Sticky Session),这就导致很多应用系统无法享受到到负载均衡所带来的好处——并非所有的系统都能做到“无状态”。换句话说,如果有web应用要使用Windows Azure的负载均衡,session就必须集中管理,不能把session保存在每台服务器的内存中。这无疑给系统迁移造成了很大的障碍——通常客户是不希望因为迁移到Windows Azure而修改应用系统代码的。这样也就导致相当大一部分迁移到Windows Azure上的web应用丧失了横向扩展能力。
后来,Windows Azure的负载均衡器开始支持二元组、三元组分发模式,简单说就是:如果访问请求(数据包)中的来源地址,目的地址和协议是相同的,那么这些访问请求就会被重定向(分发)到同一个后端服务器上,从而实现了基于四层负载均衡的会话保持。显然,这样做的弊端就是无法实现“真正”均衡的分发负载。例如:有101个人同时在访问一个web应用,其中100个人来自同一个公司,他们通过NAT接入公网(使用同一个公网IP地址上网),那么这100个人的访问请求会被重定向(分发)到同一个后端服务器上,因为来自他们的访问请求中,来源地址,目的地址和协议是相同的......好吧,有总比没有强,这种方式虽然不怎么高明,但毕竟是可以提供会话保持功能了。
10月9日,Windows Azure(中国版)的Application Gateway功能正式上线,这里是官方的介绍文档,七层负载均衡功能终于来了!与F5和HAProxy等专业的负载均衡方案相比,其功能还是有些弱,但至少是完全可以追上其他竞争对手了!
- 支持Cookie Based Affinity,基于Cookie的负载均衡,但不可以对Cookie进行自定义设置。
- 支持Http和Https。
- 对应的后端服务器必须在同一个虚拟网络的同一个子网中。
- 只能通过PowerShell来配置Application Gateway。
- 支持内部负载均衡(ILB)。
BTW:原有的四层负载均衡是免费的,而Application Gateway是收费的。