lvs:linux Virtual Server
  L4:Layer 4,四层交换,四层路由

lvs管理工具:

ipvsadm/ipvs(让用户定义规则)

ipvsadm:用户空间的命令行工具,用于管理集群服务;(即规则的增删查改)

支持TCP,UDP,AH,EST,AH_EST,SCTP等诸多协议

lvs几个概念

  •   调度器:director,dispatcher,balancer
  •   RS:Real Server(后端真实提供服务主机)
  •   Client IP:CIP(客户访问的IP)
  •   Director Virtual IP:VIP(提供外网访问的虚拟IP)
  •   Director IP:DIP(虚拟IP主机上的真实IP)
  •   Real Server IP:RIP(后端真实提供服务主机的IP)

lvs工作模式

  •   Lvs-nat:通常称为MASQUERADE
  •   Lvs-dr(direct routing直接路由):GATEWAY
  •   Lvs-tun(ip tunneling,隧道模式):IPIP
  •   Lvs-fullnat:

lvs-nat模式

技术图片

  请求和响应报文都经过director,而且DIP和RIP    必须在同一网段;
  多目标的DNAT(iptables):它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP实现转发;
  (1)RS应该和DIP应该使用私网地址,且RS的网关要指向DIP; 
  (2)请求和响应报文都经由director转发;极高负载的场景中,director可能会成系统瓶颈;
  (3)支持端口映射;
  (4)RS可以使用任意OS;
  (5)RS的RIP和Director的DIP必须在同一IP网络;
  (6)由于数据包来回都需要经过高度器,因此要开启内核转发功能,当然防火墙Iptables也要开启forward功能

lvs-dr模式(生产中最常用的模式)

技术图片

  dr模式的工作原理:
    a.direct routing,客户端请求报文经由director; 
    b.direct通过修改请求报文的目标MAC地址进行转发,将MAC改为后端RS的MAC,然后将请求发送给修改后的MAC对应的RS;
    c.响应报文经由RS直接经由网关响应客户端; 

    在以上流程中,唯一修改的就是目标MAC
    所有节点和LVS要处于一个局域网,可以是不同网段; 

  后端RS如何实现直接将请求直接响应:

    a.在RS的lo上绑定VIP

    b.抑制arp广播响应

    注:修改RS主机内核的参数(抑制arp广播,因为RS会在lo上配置VIP,客户端请求时会发arp广播,如果不抑制,会有2个主机进行响应,LVS功能就会失效;在LVS和RS之间没有广播进行,LVS是直接封闭信息,经由Director算法找到RS,从而由RS直接进行转发)

  (1)保证前端路由器将目标IP为VIP的请求报文发送给director;
  (2)RS的RIP可以使用私有地址,但也可以使用公网地址;
  (3)RS跟Director必须在同一物理网络中;可以是不同网段;
  (4)请求报文经由Director调度,但响应报文一定不能经由Director;
  (5)不支持端口映射;
  (6)RS可以是大多数OS;
  (7)RS的网关不能指向DIP;
  (8)理论上只要RS可以出网即可,不是必须要配置外网IP,当然配置外网响应速度会更快(否则容易造成网关瓶颈)
  (9)总的来说DR模式效率很高,但配置较麻烦,建议日PV在1000-2000WPV或并发请求1万以下的建议用haproxy/nginx模型
  (10)直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址,如果不直接对外的业务,例如:mysql,存储系统RS节点,最好只用内部IP地址

Lvs-tun模式:(ipip隧道)

技术图片

  不修改请求报文的IP首部,而是通过在原有的IP首部(CIP-VIP)之外,再封装一个ip首部(DIP-RIP);
  (1)RIP,DIP,VIP全得是公网地址;
  (2)RS的网关不能指向DIP;
  (3)请求报文必须经由director调度,但响应报文必须不能经由director;
  (4)不支持端口映射;
  (5)RS的OS必须支持隧道功能;
  基本上同dr模式一样,只是在客户端请求的时候在首部添加一个指向RS的IP头部

Lvs-fullnat:源地址和目标地址都会改变

  director通过同时修改请求报文的上标地址和源地址进行转发;
  (1)VIP是公网地址;RIP和DIP是私网地址,二者无须在同一个网络中:
  (2)RS接收到的请求报文的源地址为DIP,因此要响应给DIP; 
  (3)请求报文和响应报文都必须经由Director;
  (4)支持端口映射机制;
  (5)RS的OS可以是任意OS;

LVS的负载调度算法

  • 轮询 (Round Robin)
    • 将收到的访问请求按照顺序轮流分配给群集中的各节点(真是服务器),均等的对待每一台服务器,而不管服务器的实际连接数和系统负载
  • 加权轮询(Weighted Round Robin)
    • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
    • 保证性能强的服务器承担更多的访问流量