1、HTTP重定向负载均衡
利用HTTP重定向协议实现负载均衡。
HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算得到一台真是的web服务器地址,并将该web服务器地址写入HTTP重定向响应中(响应状态码302)返回给用户浏览器。
优点:比较简单
缺点:浏览器需要两次请求服务器才能完成一次访问;性能较差,重定向服务器自身的处理能力可能成为瓶颈,整个集群的伸缩性规模有限;使用HTTP302状态码重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。因此实践中很少使用。
2、DNS域名解析负载均衡
这是利用DNS处理域名解析请求的同时进行负载均衡处理的一种方案。
实现原理:在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
1. 将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦。2. 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。3. 对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问。3. 服务器可以位于互联网的任意位置。4. 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能。同时,DNS域名解析也存在如下缺点:
1. 目前的DNS是多级解析的,每一级DNS都可能缓存A记录,当某台服务器下线之后,即使修改了A记录,要使其生效也需要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终导致用户访问失败。2. 不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好。3. 可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。
顾名思义,数据链路层负载均衡是指在通信协议的数据链路成修改为mac地址进行负载均衡。又称三角传输模式。它是目前大型网站使用最广的一种负载均衡手段,在Linux平台上最好的链路层负载均衡开源产品是LVS(Linux Virtual Server)
由于实际处理请求的真实物理服务器IP和数据请求目的IP地址一致,不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给浏览器,避免负载均衡服务器网卡带宽成为瓶颈。