web服务器负载均衡方案
一、硬件负载均衡
独立的负载均衡设备,需单独购买。代表产品有:A10 Networks,Citrix Systems,F5等。
优点:
性能高
缺点:
成本高
参考资料:
http://technet.microsoft.com/en-us/office/ocs/cc843611.aspx
二、DNS轮询(RRDNS)
大多域名注册商都支持多条A记录的解析,其实这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的IP上,这样就完成了简单的负载均衡。
例如test.com有多个对应ip的服务器,当第一个dns解析请求进来时,dns服务器会返回A记录列表的第一个ip地址。
test.com IN A 10.0.0.1
test.com IN A 10.0.0.2
test.com IN A 10.0.0.3
第一个dns解析请求处理后,A记录顺序会自动轮换,变为:
test.com IN A 10.0.0.2
test.com IN A 10.0.0.3
test.com IN A 10.0.0.1
当第二个dns解析请求到来时,请会返回另一个服务器的ip地址。windows服务器默认会进行DNS轮询。
优点:
- 基本上无成本,因为往往域名注册商的这种解析都是免费的;
- 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可。
- 健康检查,如果某台服务器宕机或网络拥堵,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久;
- 分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。其实DNS也是有分配算法的,可以根据当前连接较少的分配、可以设置Rate权重分配等等,只是目前绝大多数的DNS服务器都不支持;
- 会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。
- 服务器宕机检测,NLB每隔一秒会发送心跳包到群集中的其他主机,并监听等待其他主机的回应,当某主机在5次尝试中没返回回应后,NLB会认为该主机已故障,会自动把新进入的流量分发到其他主机处理。当故障的主机重新上线后,NLB会自动把流量再分发给它,恢复完成一般需要10秒时间。
- 极高的性能,集群中的每一台主机上都装有NLB驱动程序,NLB驱动会监控进入主机的所有流量连接,NLB驱动像网卡驱动和TCP/IP栈之间的一个过滤器,只允许特定的流量连接进入到TCP/IP栈中。NLB架构通过广播的方式分发所有网络流量到群集的每一台主机中,集群主机接收后会由NLB驱动过滤不需要的数据包,使用这种方式是因为过滤不需要的数据包会比路由数据包到指定的主机更快,路由需要经过接收,检查,重写目标ip地址和重发等步骤)。
- 扩展简单,可随便新增和下架集群服务器。
- 只能在windows服务器中使用