Linux LB--负载均衡和高可靠

南楼画角 提交于 2020-01-22 05:47:26

1、负载均衡典型应用场景,外网、内网、私网公共服务。

     典型场景:

     (1)用户通过公网访问数据中心的ftp、web、https服务器。

     (2) 在数据中心内部东西向访问其他服务时,例如,访问其他虚拟机、DNS等公共服务。

     (3) 通过专线或者ipsec vpn访问数据中心内部服务时。

 

2、常见的负载均衡的技术

     硬件实现(2/3层):链路聚合、等价路由。

     软件实现(4/7层):LVS、nginx/haproxy、

  DNS负载均衡:公网智能分配目的ip GSLB、内网DNS解析公共服务。

 

3、LVS的3种模式:NAT、DR、TUNNEL。

      NAT: 特点,流量来回路径一致,都要经过负载均衡器,通过DNAT转换,将目的ip修改为后端VM的ip,目的MAC修改为后端VM的MAC地址。

                 缺点:当回程流量很大时,负载均衡器本身容易成为瓶颈。改进方案,使用DR模式。

      DR:特点,回程路径直接回到客户端。不需要NAT,后端服务器都需要配置环口ip为VIP,并且配置不响应VIP的arp请求。同时要求LVS分发器和后端VM在相同网段内,这个模式是主流。

     缺点:要求后端VM和LVS分发头在相同网段。改进方案:LVS + haproxy.

      隧道模式:特点,负载均衡器和后端虚拟机不是直接相连,通过隧道打通,要求双方都要支持IPinIP协议。

      LVS + haproxy: 怎么解决跨网问题? 

      http://blog.csdn.net/big1980/article/details/21932103

 

4、nginx和haproxy对比。

      一般情况下,在日访问量PV在3000万以下时,使用简单的DNS轮询配合监控,基本可以满足业务需求。

     超过3000万时,使用nginx作为反向代理。如果可靠性要求不高,使用单台nginx。否则,可以配置多台nginx进行负载分担。

     在3000万到1亿时,可以使用HAProxy+ keepalived --> nginx --> web 服务器集群。Haproxy负责TCP负载均衡,Nginx负责7层调度,nginx可以配置多台进行负载分担。

     超过1亿时,采用LVS+DR + Keepalived --> nginx --> web服务器集群。LVS-DR负责TCP负载均衡,nginx负责7层调度。此时可以考虑使用商业的netscaler替换LVS-DR。

5、单点故障问题。

     后端服务器可以有多个,消除了单点故障问题。可是负载均衡器本身是单节点,如何消除单点故障?

     解决方案有两种,双活和主备。

     双活:两个不同服务器上的LVS之间配置会话同步,互相同步,达到双活效果。上游通过交换机或者防火墙的ECMP进行等价分发。

     主备:结合keepalive协议,实现主备备份效果。通过结合不同层次,LVS + keepalive,  nginx + keepalive, haproxy + keepalive

6、对后端服务器的健康检查和转发权重设置。

     LVS、nginx、haproxy都支持健康检查。

7、会话保持

     通过源ip达到会话保持的效果,即将客户端分发给某个后端服务器后,后续该客户端的流量都指向相同的后端服务器,避免会话不存在而导致的生效问题。

      也就是说,通过源ip实现会话保持。

      会话保持的方法,还有http_cookie和app_cookie

7、证书卸载。

      客户端通过ssh或者https访问ssh服务器端,或者https访问web服务器时,证书如何识别和卸载?在nginx的配置项中可以指定证书文件,从而进行卸载。

8、负载分担的后端服务器的选择。

     三种算法:轮询算法、最少连接算法、源ip算法。

9、健康检查的模式

      ping、https、tcp、http

10、获取访问者的源ip

       负载均衡器将流量转发给后端服务器时,会修改报文的源ip(为何?),那么后端服务器处理时,如何分析出报文原始的源ip.

       对于4层负载均衡,可以选择DR模式,使源ip地址直接在后端的服务器可见。

       对于7层负载均衡,使用http头中的 http header: X-forward for来获得原始ip.

11. 网站的总入口的反向代理,一般使用nginx,因为nginx可以同时作为web服务器和负载均衡器。

12. 4层负载均衡时,当客户端和LVS之间建立TCP连接时,LVS会同步和某个后端服务器建立TCP连接。

      7层负载均衡时,当客户端和LVS之间建立TCP连接时,LVS会先和客户端建立TCP连接,等到客户端有流量发送时,负载均衡器再和后端服务器建立TCP连接。

13. 转发性能角度:

      4层负载均衡不关心报文内容,所以负载均衡性能高。

     7层负载均衡需要查看Http头中的动作、URL、请求的源主机信息等信息,所以,需要深入查看报文内容,所以,转发性能低。但是,可以做深度的精细化控制。

14. GSLB有哪些实现方法:

      有3种,基于DNS解析、基于重定向、基于路由协议。

      基于DNS解析:DNS在多个ip间轮询(相同域名),达到负载均衡的效果。

      基于重定向: 负载均衡器根据请求的内容(ip地址、端口号、或者URL等)给客户端返回一个实际处理业务的服务器地址。利用的是Http的302重定向功能。

      基于路由协议:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!