web 负载均衡

1.http 重定向负载均衡

HTTP 重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的http请求计算一台真实的WEB服务器的地址,并讲改web 服务器的地址写入http重定向的响应中(响应状态码302) 返回给用户浏览器,  在 图中,浏览器请求域名www.mysite.com,NDS 服务器解析得到IP 114.100.80.10 即http重定向服务器的IP地址,服务器根据某种负载均衡算法的带一台实际无聊服务器的地址(114.100.80.3)构造一个包含该实际物理服务器的地址的重定向响应返回给浏览器,浏览器自动重新请求实际物理服务器的ip 地址 114.100.80.3 完成访问

web 负载均衡_第1张图片

这种负载均衡的方案优点是比较简单,缺点是浏览器需要两次请求服务器才能完成一次访问,性能交差,重定向服务器自身的处理能力有可能成为瓶颈,整个集群的伸缩性规模有限,使用http  302 响应码重定向有可能是搜索引擎判断为seo作弊,降低搜索排名,因此实践中使用这种方案进行负载均衡的案例并不多见


2. DNS 域名解析负载均衡

 这事利用DNS 处理解析域名请求同事进行负载均衡处理的一种方案,在DNS服务器中配置多个A记录,如 www.mysite,com in A  114.100.80.1,www.mysite,com in B  114.100.80.2,www.mysite,com in C  114.100.80.3

web 负载均衡_第2张图片

 每次域名解析请求都会根据负载均衡算法实现一个不同的IP返回,资源A记录总的多个服务器就构成一个集群,并可以实现负载均衡,如图,浏览器请求解析域名www,mysite.com  DNS 根据A激励和负载均衡是否计算的带一个IP地址114.100.80.3  并返回给浏览器,浏览器根据该IP地址,访问真实的物理服务器114.100.80.3 

  DNS 域名解析负载均衡的优点是讲负载均衡的工作交个DNS 省掉了网站管理维护负载均衡服务器的麻烦,同事许多DNS还支持基于地址位置的域名解析,这样可以加快用户访问速度改善性能,但是DNS域名解析负载均衡也有缺点,就是目前的DNS是多级解析,每一层DNS都可能缓存A记录,当下线某台服务器后,即修改了DNS 的A记录,要使其生效也需要较长的时间,这段时间DNS依然会将域名解析到已经下线的服务器,导致用户访问失败,而且DNS 负载均衡的 控制权在域名服务商哪里,网站无法对其做更多改善和更强大的管理。

事实上,大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段,基于名解析得到的一组服务器并不是实际提供web服务的无力服务器,而是同样提供 负载均衡服务的内部服务器,这组内部负载均衡服务器在进行负载均衡,将请求分发到真实web服务器上。


3. 反向代理负载均衡

利用反相代理均衡服务器进行负载均衡,前面我们提到利用法相代理缓存资源,以改善网站性能。实际上,在部署位置上,发想代理服务器处于web服务器前面(这样才可能缓存wen响应,加速访问),这个位置也正好是负载均衡服务器的位置,所以大多数方向服务器同时提供负载均衡的功能,管理一组web服务器,将请求根据负载均衡算法转发到不停web服务器上,web服务器不直接岁外提供访问,因此web服务器不需要使用外部ip地址,而反相代理服务器则需要配置双网卡和内部外部两套IP地址。

web 负载均衡_第3张图片

浏览器访问请求的地址是反向代理服务器的地址114.100.80.10,反向代理服务器收到请求后,根据负载均衡算法计算得到一台真实物理服务器的地址10.0.0.3,并将请求转发给服务器,10.0.0.3处理完请求后将返回给反向带你服务器,反向代理服务器再将该响应返回给用户。

由于反向代理服务器转发请求在HTTP协议层里,因此也叫应用层负载均衡。其有点是和反向带你服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为 瓶颈。


4. ip负载均衡

在网站层通过修改请求目标地址进行负载均衡,用户请求数据包到达负载均衡服务器114.100.80.10后,负载均衡服务器再操作西戎内核进程获取网络数据包,根据负载均衡算法计算得到一台真实web服务器10.0.0.1,然后将数据目的IP地址修改为10.0.0.1,不需要通过用户进程处理。真实web应用服务器处理完成后,响应数据包到均衡服务器,负载均衡服务器再将数据包源地址修改为自身的IP地址(114.100.80.10)发送到用户浏览器。

web 负载均衡_第4张图片

这里的关键在于真实物理web服务器响应数据包如何返回给负载均衡服务器。一种方案是负载均衡服务器再修改目的IP地址的同时修改源地址,将数据包源地址设为自身ip,即源地址转换(SNAT),这样web服务器的响应会 再回到负载均衡服务器;另一种方案是将负载均衡服务器同时作为真实物理服务器集群的网关3服务器,这样所有响应数据都会到达负载均衡服务器。

ip负载均衡在内核进程完成数据分发,较反向代理负载均衡(在应用程序中分发数据)有更好的处理性能。但是由于所有请求响应都需要经过负载均衡服务器,集群的最大响应数据吞吐量不得不受制于负载均衡服务器网卡带宽。对于提供下载服务器或者视频服务器等需要大量数据的网站而言,难以满足需求。能不能让负载服务器只分发请求,而使响应数据从真实物理服务器直接返回给用户呢?

5. 数据链路层负载均衡

顾名思义,数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡。这种数据传输方式又称作三角传输模式,负载均衡数据分发过正中不修改ip地址,只修改目的mac地址,通过配置真实物理服务器集群所有机器虚拟ip和负载均衡服务器由于实际处理请求的真实物理服务器ip和数据请求目的ip一致,不需要通过负载均衡服务带宽成为瓶颈。这种负载均衡方式又称作直接路由方式(DR)。

web 负载均衡_第5张图片

用户请求到达负载均衡服务器114.100.80.10后,负载均衡服务器将请求数据的目的mac地址修改为00:0c:29:d2,并不修改数目包目标ip地址,由于web服务器到达mac地址00:00c:29:d2对应的服务器,该服务器处理完成后发送响应数据到网站的网关服务器,网关服务器直接将该数据包发送到用户浏览器(通过互联网),响应数据不需要通过负载均衡服务器。

使用三角传输模式的链路层负载均衡是目前大型网站使用最广的一种堵在均衡手段。在Linux平台上最好的链路层负载均衡开源产品是lvs(Linux virtual server)


你可能感兴趣的:(web 负载均衡)