《大型网站技术架构》--第六章:网站的伸缩性架构 负载均衡实现应用服务器的伸缩性
应用服务器应该设计成无状态的,如果将部署有相同应用的服务器组成一个集群,每次用户请求都可以发送到集群中任意一台服务器上去处理,任何一台服务器的处理结果都是相同的。这样只要能将用户请求按照某种规则分发到集群的不同服务器上,就可以构成一个应用服务器集群,每个用户的每个请求都可能落在不同的服务器上。
如果http请求分发装置可以感知或者可以配置集群的服务器数量,可以及时发现集群中新上线或者下线的服务器,并能向新上线的服务器分发请求,停止向已下线的服务器分发请求,那么久实现了应用服务器集群的伸缩性。
这个http请求分发装置就被称作负载均衡服务器。
1. Http重定向负载均衡:将真正的Web服务器地址写入Http重定向响应中(状态码302)返回给用户浏览器。优点:简单。缺点:浏览器需要两次请求才能完成一次访问,性能较差,重定向服务器自身处理能力可能成为系统瓶颈
2. DNS域名解析负载均衡:DNS中保存多个网站的IP地址,DNS根据负载均衡算法返回一个IP地址返回给浏览器。优点:把负载均衡工作交给DNS,同时许多DNS支持根据地址位置的域名解析,即会将域名解析成距离用户最近的服务器地址,加快用户访问,提高访问速度,提升性能。缺点:DNS有缓存。
3. 反向代理负载均衡:反向代理服务器处于Web服务器之前,管理一组Web服务器,将请求根据负载均衡算法转发到不同的Web服务器上,Web服务器处理完成的请求通过反向代理服务器返回给用户。由于Web服务器不直接对外提供访问,因此Web服务器不需要使用外部IP地址,而反向代理服务器则需要配置双网卡和内部外部两套IP。优点:反向代理和负载均衡统一部署,方便简单。缺点:反向代理服务器是所有请求的中转站,可能成为性能瓶颈。
4. 数据链路层负载均衡:在通信协议的数据链路层修改mac地址进行负载均衡。
负载均衡分发过程中不修改ip地址,只修改目的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器的IP地址一致,从而达到不修改数据包的源地址和目的地址就尅进行数据分发的目的,由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。