描述LVS的工作原理

一、LVS结构

  LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。
  

二、LVS内核

LVS内核.png

1.当客户端的请求到达负载均衡器的内核空间时,首先会到达prerouting链。

2.当内核发现请求数据包的目的地址是本机时,将数据包送往input链。

3.LVS由用户空间的ipvsadm和内核空间的ipvs组成,ipvsadm用来定义规则,ipvs利用ipvsadm定义的规则工作,ipvs工作在input链上,当数据包到达input链时,首先会被ipvs检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。

4.如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往postrouting链。

5.最后经由postrouting链发往后端服务器。

三、LVS工作模式

1、NAT模式

LV-NAT.png

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。 

在NAT模式中,RIP和DIP必须在同一个VLAN,且应该使用私有地址,Real Server的网关必须指向LVS,否则报文无法送达客户端。

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器Director 将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

2、DR模式,直接路由模式

LVS-DR.png

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

注意:需要设置lo接口的VIP不能响应本地网络内的arp请求(通过内核参数开关或arptables),lo接口配置别名为VIP。要求负载均衡器的网卡DIP必须与物理网卡在同一个物理网络(同一个交换机)上。RS服务器一般都全部是linux,也可以使用其他OS。

3、TUN模式,ip隧道模式

LVS-TUN.png

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。注意:需要设置lo接口的VIP不能在公网上出现。

VS必须是Linux,RS可以是任意支持隧道功能的OS。

4、FULLNAT模式

LV-FULLNAT.png

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,同时修改报文的源IP和目标IP。源IP改为DIP,目标IP改为RIP。

③.RS收到请求报文后,发现源IP是DIP,目标IP是自己,会响应该请求,并将响应报文返还给DIP。 

请求和响应报文都经过Director,支持端口映射。VS必须是linux,RS可以是任意OS。

原创文章,作者:N22-深圳-晓志,如若转载,请注明出处:http://www.178linux.com/40719

(0)
N22-深圳-晓志N22-深圳-晓志
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • openssh及基于ssl的https的配置

    openssh的简介             OpenSSH 是 SSH 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。 而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rs…

    Linux干货 2017-05-30
  • Linux基础知识(三)

    1、列出当前系统上所有已经登录的用户的用户名(多次登录的用户,只显示一次即可) [root@bogon ~]# w |grep -E ".*(pts|tty).*"|awk '{print $1}'|uniq 2、列出最后登录到当前系统的用户的相关信息 [root@bogon ~]# last -aF 3、取出当前系统…

    Linux干货 2016-10-09
  • LVM逻辑卷扩展与缩小

    逻辑卷扩容:扩展逻辑卷前一定要卸载设备和挂载点的关联 第一步:把逻辑卷lv扩展至300M 第二步:检查硬盘,并重置硬盘容量 第三步:重新挂载,查看挂载状态   缩小逻辑卷:对逻辑卷缩容时,丢失数据的风险更大。在执行操作前一定要提前备份好数据。在进行缩减前先把文件系统卸载掉。 第一步:检查文件 第二步:把逻辑卷lv减小到100M 第三步:重新挂载并查…

    2017-12-17
  • 硬盘及文件系统基础概念

    机械硬盘HDD(Mechanical hard disk) 机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。 磁头(Head): 对硬盘上的数据进行读写操作. 磁道(Track) 当磁盘旋转时,磁头若保持在一个…

    Linux干货 2017-04-09
  • mount挂载

    mount 1 挂载mount                                               &nb…

    Linux干货 2017-04-24
  • linux文件系统目录结构

    FHS标准      文件和目录被组织成一个单根的倒置树结构 文件系统从根目录开始用“/”表示 根文件系统:root filesystem 目录名称vfat格式不敏感大小写 以.开头的为隐藏文件 路径分割的/ /boot:引导文件存放目录,内核文件,引导加载器都存放此目录 /bin:供所有用户使用的基本命令;不能关联到…

    Linux干货 2016-07-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-30 12:38

    图文并茂,原理解析的很明了,加油