Web 负载均衡

来源:互联网 发布:淘宝助手删除宝贝 编辑:程序博客网 时间:2024/05/16 09:07

一、HTTP重定向

       1、介绍: 当HTTP代理想Web服务器请求某个URL后,Web服务器可以通过HTTP响应头信息中的Location标记来返回一个新的URL,这意味着HTTP代理需要继续请求这个新的URL,这样便完成了自动跳转。(HTTP 302、303、307状态码)。

       2、 转移均衡方案:

      随机转移方案;

      RR(Round Robin)策略,轮叫调度,算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行 i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度;Apache的mod_rewrite  模块支持该策略。

       实际测试结果:随机方案吞吐率约为RR策略2倍。


二、DNS负载均衡

       DNS负载均衡的实现主要依赖于DNS服务器的设置,现在有很多DNS服务商完全支持多个A记录的轮询设置,可以根据需要来挑选(dig命令查看域名A记录)。

三、反向代理负载均衡

        1、按照权重分配任务,使用nginx作为反向代理服务器

        upstream backend {

                   server  ip1:port    weight = num1;

                   server  ip2:port    weight = num2;

       }

       2、 粘滞会话

              负载均衡调度器带来的问题:当某台后端服务器启用了Session来本地化保存用户的一些数据后,下次用户的请求如果转发给了

       其他后端服务器,将导致之前的Session数据无法访问;后端服务器实现了一定的动态内容缓存,而毫无规律的转发使得这些缓存的

      利用率下降。

             解决问题的方法就是粘about:newtab滞会话,关键在于设计持续性调度算法。

             将用户的IP地址作为识别标志最为合适,一些反向代理服务器对此  都有支持,比如nginx和HAProxy,它们可以将用户的IP地址进行Hash计算并散列到不同的后端服务器上。 对于nginx,只需要在upstream中声明ip_hash即可。

            或者利用cookie机制来设计持久性算法,比如调度器将某个后端服务器的编号追加写给用户的Cookies中。

            事实上,在后端服务器上保存Session数据和本地化缓存,不是好的设计,最好应采用分布式session或者分布式缓存等,让后端服务器的应用尽量与本地无关。


四、 IP负载均衡  LVS-NAT

         常用Linux相关命令

         Netfilter是Linux一个模块,在内核中维护着一些数据包过滤表,这些表包含了用于控制数据包过滤的规则。

         iptables 是工作在用户空间 的一个命令行工具,通过其来对Netfilter的过滤表进行插入、修改或删除等操作。

         ipvsadm  ip virtual server admin,工作性质类似netFilter,但它更专注于实现ip负载均衡。

         LVS  Linux Virtual Server

五、直接路由  LVS-DR

        直接路由方式下的负载均衡调度器工作在数据链路层。它通过修改数据包的目标MAC地址,将数据包转发到实际服务器上,

  并且最重要的是,实际服务器的响应数据包将直接发送给用户端,而不经过调度器。

        在此方式下,实际服务器必须直接接入外部网路。

        IP别名:为网络接口配置的更多的IP地址。一个网络接口最多可以设置256个IP别名。

六、IP隧道 LVS-Tunneling

        它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据包可以直接到达数据段。 与LVS-DR原理相似,不同的是实际服务器可以和调度器不在同一个WAN网段。

       

   

      

0 0
原创粉丝点击