LVS 之 初识LVS

LVS 之 初识LVS

0x00 概述

LVS : Linux Virtual Server

lvs 工作在 IOS 第四层(tcp), 所以又称 l4: 四层交换,四层路由
LVS 由 ipvs、ipvsadm 两部分组成
ipvs 工作于 input 链上

lvs 与 nginx 工作模式上的区别:

lvs 工作于 IOS 的4 层,仅作请求分发用,没有流量。(根据请求报文的目标IP和目标协议 及PORT 将其调度转发至某 后端主机集群(RealServer) 的某一台主机,根据调度算法来挑选RS;)

nginx工作在网络的第7层,所以它可以针对http来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能

0x01 LVS拓扑结构图:

ipvs 工作于内核空间的netfilter的 INPUT 钩子上的框架, 通过 ipvsadm 命令来管理。

LVS 之 初识LVS

lvs集群类型中的术语 :

VS:Virtual Server, Director, Dispatcher, Balancer (调度器)
RS:Real Server, upstream server, backend server
CIP:Client IP,
VIP: Virtual serve IP,
DIP: Director IP,
RIP: Real server IP,

0x02 lvs-type

有 lvs-nat , dr , tun , fullnat 四种

lvs-nat

修改请求报文的目标IP 和 端口.   ( masquerade )

  • lvs-nat 拓扑结构

Alt text

  • 特性要点:

    1. DIP 和 RIP 在同一IP 网络,且使用私有地址。 RIP 的网关要指向DIP
    2. 请求报文和响应报文都必须经由Director转发;极高负载的场景中,Director易于成为系统瓶颈;
    3. 支持端口映射,可修改请求报文的目标PORT;
    4. vs必须是Linux系统,rs可以是任意系统;

lvs-dr

保留原IP 首部,为新的帧首部的目标MAC 定义 为选定的RS MAC; (即:封装帧首部完成转发)  ( gateway )

  • lvs-dr 拓扑结构

Alt text

  • lvs-dr 请求过程

    1. 请求报文到达前端路由器,ARP 广播,得到vip 的 MAC地址, 将报文送达 VIP
    2. director 由于工作于 dr 模型,只拆封 MAC 封闭, 根据调度算法得到 RS
    3. DIP 进行 ARP 广播, 获得RS 中的 RIP 所在网卡的MAC 地址; 重新封装MAC首部( S_mac:DIP, D_mac:RIP ),发往 RS
    4. RIP 所在网卡得到报文, 解封装,得到 源IP(CIP),目标IP(VIP)。

    若目标IP 不是自己,则拒收。所以各主机上均需要配置VIP,但是,前端路由进行ARP 广播时,RS 的VIP 都能响应, 产生地址冲突

    • 解决地址冲突的方式有三种:
      (1) 在前端网关做静态绑定;
      (2) 在各RS使用arptables;
      (3) 在各RS修改内核参数,来限制arp响应(arp_ignore)和通告(arp_announce)的级别;

      • 限制响应级别:arp_ignore:
        0:默认值,表示可使用本地任意接口上配置的任意地址进行响应;
        1: 仅在请求的目标IP配置在本地主机的接收到请求报文接口上时,才给予响应;

      • 限制通告级别:arp_announce:
        0:默认值,把本机上的所有接口的所有信息向每个接口上的网络进行通告;
        1:尽量避免向非直接连接网络进行通告;
        2:必须避免向非本网络通告;

  • 特性要点

    1. 保证前端路由将目标IP 为VIP 的请求报文发送给director
      a) 静态绑定 ( 前端路由 )
      b) arptables (RS)
      c) 修改RS 主机内核的参数

    2. DIP, RIP 可以是私网地址,也可以使用公网地址,因为它们不作为跟客户端通信的地址,仅用于本地间 主机网络通信

    3. RS 跟Director 必须在同一物理网络中
    4. 请求报文经由Director 调度, 但响应报文一定不能经由Director
    5. 不支持端口映射
    6. RS 可以是大多数的OS
    7. RS 的网关不能指向DIP

nat 与 dr 都不支持远距离转发, 要想实现远距离转发,则采用隧道模式进行转发

lvs-tun

保留原IP 首部,在原请求IP报文之外新加一个IP 首部;   ( ip-ip )

  • lvs-tun 拓扑结构

Alt text

  • 转发方式:
    不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP);

  • 特性要点

    1. DIP, VIP, RIP都应该是公网地址;
    2. RS的网关不能,也不可能指向DIP;
    3. 请求报文要经由Director,但响应不能经由Director;
    4. 不支持端口映射;
    5. RS的OS得支持隧道功能;

lvs-fullnat :

修改请求报文的目标IP 和 端口, 以及源IP地址。

  • lvs-dr 拓扑结构

Alt text

  • 特性要点

    1. VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
    2. RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;
    3. 请求和响应报文都经由Director;
    4. 支持端口映射;
    5. RS 可以使用任意OS;

0x03 调度算法(scheduler)

根据其调度时是否考虑各RS当前的负载状态,分为 静态( static) , 动态( dynamic) 两类
static: RR/WRR, SH, DH (请求时间差不多的情形)
dynamic: LC/WLC, SED, NQ, LBLC, LBLCR (请求时间不一的情形)

静态方法:仅根据算法本身进行调度;
RR : Round Robin, 轮询

WRR:Weighted RR, 加权轮询

SH : Source Hashing, 实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理, web cache 中的负载均衡

动态方法:主要根据每RS当前的负载状态及调度算法进行调度;

Overhead=

LC: Least Connections (挑选出连接最少的用做 RS)

WLC: Weighted LC,
Overhead=(activeconns*256+inactiveconns)/weight

SED:Shortest Expection Delay (最短期望延迟)
Overhead=(activeconns+1)*256/weight

NQ:Never Queue, 按权重由大到小的顺序,每个RS 分配一个请求,余下的再以SED 算法进行调度。

LBLC:Locality-Based LC,动态的DH算法;
正向代理情形下的 cache server 调度

LBLCR:LBLC with Replication,带复制功能的LBLC;

原创文章,作者:Yanglibin,如若转载,请注明出处:http://www.178linux.com/75189

(0)
YanglibinYanglibin
上一篇 2017-05-11 22:46
下一篇 2017-05-11 23:20

相关推荐

  • rpm包管理

    rpm包管理 rpm(RedHat Package Manager) 是RedHat公司发展的一种将软件安装到Linux系统的管理机制,也是一种数据库记录方法。 Linux系统上软件的安装主要分两种方式,从厂商发布的tarball通过编译来安装;或者使用厂商已经在相应平台上编译好的二进制文件。 从源码编译安装的程序,在漏洞修补以及软件功能升级时太过麻烦,并且…

    Linux干货 2016-11-18
  • The second week’s homework

    一.linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 首先需要知道什么是绝对路径与相对路径。 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/shar…

    Linux干货 2016-12-12
  • mysql主从复制

    MySQL主从复制        主从复制原理: mysql主从同步其实是一个异步复制的过程,要实现复制首先在master上开启bin-log日志功能。整个过程需要开启3个线程, 分别是master开启IO线程,slave开启IO线程和SQL线程. (1) 在slave服务器执行start…

    Linux干货 2016-06-26
  • 马哥教育网络班19期+第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。    主要功能:    网桥是一个局域网与另一个局域网之间建立连接的桥梁,属于数据链路层的一种设备。    集线器是可以将一些机器连接起来组成一个局域网的设备。   &n…

    Linux干货 2016-06-26
  • linux第五周小结

    不知不觉已经第五周了,好快啊!这周我们主要讲了读命令,查找命令,压缩,解压缩,安装等命令,今天我总结一下查找命令 查找命令主要有:locate和find命令,但我们经常用到的也最实用的当属find,下面我重点总结一下find命令 有时可能需要在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性…

    2017-08-13
  • Linux文件类型

    Linux文件类型常见的有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等。 1、普通文件,颜色为白色 纯文本档 二进制文件 数据格式文件 2、目录文件,颜色为蓝色 当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。首字符是【d】字母。 3、字符设备和块设备…

    Linux干货 2016-10-16