LVS(Linux Viretual Server) 负载均衡器 + 后端服务器

定义:

  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。

结构:

 一般来说,LVS集群采用三层结构,其主要组成部分为:
  A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
  B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
  C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
 
模式:
  LVS-NAT: 基于NAT(网络地址转换)技术,网络数据流程如下:
      1)负载均衡器在收到客户端请求后,改写目的IP地址为后端服务器真是IP和/或端口号,转发给后端服务器。
      2)后端服务器处理完成后,回复给负载均衡器。
      3)负载均衡器改写源IP为虚拟IP,发送给客户端
 
  LVS-DR:
      1)请求经过负载均衡器调度后,后端服务器的相应数据流量直接返回给客户端,回包不经过负载均衡器。
 
  LVS-Tun:
      1)LVS-Tun是LVS原创的一种转发模式,基于LVS-DR。负载均衡器LVS代码把原始的包(源客户端IP到虚拟IP)封装成ipip包,目的地址是后端服务器的真实IP,然后进入OUTPUT链,并路由到后端服务器。后端服务器解封ipip包并处理,以源地址虚拟IP、目的地址客户端IP直接回复给客户端。
 
对比与推荐:
  1)从对后端服务器的 要求来看,LVS-NAT仅仅要求后端服务器网关指向负载均衡器的内网地址,无任何其他要求;LVS-DR模式要求后端服务器禁用对虚拟IP的ARP响应,后端服务器网关不指向负载均衡器;LVS-Tun要求后端服务支持ipip解包,部分操作系统不支持。
  2)从吞吐量上来看,LVS-DR最高,LVS-NAT最低。
  3)从配置简便性来看,LVS-NAT最低,LVS-DR和LVS-Tun较为复杂。
  推荐在应用中使用LVS-DR模式,也是目前云微架构中应用最多的4层开源负载均衡转发策略。
 
 
使用场景:
  1)使用协议为vrrp协议进行组播通信,使用前建议关闭,否则则会出现脑裂现象。
  2)对后端健康检查可以使用TCP Connect或者HTTP GET,在网站类应用负载均衡方案中,推荐使用HTTP GET,可以进行应用层检查,防止出现端口存在但无法提供业务的情况。Keepalived配置文件中digest的获取,使用该软件自带的genhash工具,genhash --help
  3)重要参数:
   LVS转发行为重要参数:expire_nodest_conn     expire_quiescent_template
   LVS同步状态重要参数:sync_threshold 
 
  4)LVS-DR模式的 核心提示优化
    - LVS-DR模式,因后端服务器上同样配置了虚拟IP,如果在客户端进行ARP请求的时候,后端服务器以自身的MAC地址进行了回复,则起不到负载均衡的效果,此时客户端直接连接到了某台后端服务器上。
    - 后端服务器的虚拟IP必须绑定到lo:0上,同时指定子网掩码是255.255.255.255,否则ARP禁用会出现异常。
    - 持久连接的问题。持久连接使同一个客户端在超时时间内(ipvsadm -p 参数指定,Keepalived中的persistence_timeout指令)会持续地连接到同一台后端服务器,这个是 4层上的持久连接。来自客户端的每个新的连接会重置该超时时间。
    - Keepalived对后端服务器的健康检查,推荐使用应用层检查方式,另外可以配置Keepalived使用管理员自定义的脚本进行健康检查(MISC CHECK指令)。
    - 负载均衡器之间使用vrrp协议进行高可用设置时,禁用iptables或firewalld或者打开对vrrp协议的支持。
    - LVS集群中的负载均衡器,推荐使用16GB及以上内存,同时采用多队列网卡提高网卡吞吐量减少处理延时。
    - LVS集群中的后端服务器,根据IO密集型和CPU密集型2类,可以分别使用RAID10、SSD及高频多核CPU来优化。
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/ipyanthony/p/9100486.html