描述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 09:01
下一篇 2016-08-29 09:01

相关推荐

  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; %s/^([[:space:]]{1,}.*)/#\1/s 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行…

    Linux干货 2016-08-10
  • sed 高级用法(1) 之 n N

    前言 我在参考其它多个Blog中发现,有些Blog中sed的功能介绍和实际有出入,这可能和版本有关系,正如sed文档中所说“might change in future versions”,所以本文sed是以4.2.1为例。如果以后sed更新版本了,有可能会不一样。 好记性不如烂笔头! sed的工作原理 sed维护着两个数据的缓冲空间,一个是模式空间(pat…

    Linux干货 2015-07-03
  • 常用命令总结

    &:将要执行的进程送入后台进行执行alias:定义命令别名authconfig :对系统资源进行安全认证basename:抓取一个目录的基名basename pwdbzip2:压缩工具bzip2 case.sh case.sh.bz2    -[1-9]:指定压缩比   &nbsp…

    Linux干货 2017-04-09
  • LVM2详解

    1、什么是lvm LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样…

    Linux干货 2017-01-03
  • mysql备份还原

    一、前言 数据对于一个公司来说有多重要这点不说大家也知道,数据还在,服务崩溃还可重建。为什么要备份?很简单,天灾人祸。比如硬件故障,软件故障,自然灾害,黑客攻击或自身误操作等因素。这时候备份,恢复数据就显得至关重要了。 二、基础概念 由于备份与恢复需要用到一些必要的知识,故在此先讲解下 2.1二进制日志 myql日志有多种,其中二进制日志文件对数据恢复有很大…

    Linux干货 2015-11-30
  • LINUX命令帮助

    命令帮助 在维护和使用Linux系统时,常常会遇到忘记命令的使用方法,遇到一个比较陌生的命令,又或者想知道这个命令是什么的情况可以查看命令使用帮助。 LINUX命令使用帮助可参考:程序自身的帮助文档、官方文档、官方站点、LINUX的发行版官方文档、其他网站或者搜索引擎 LINUX命令分为内部命令(shell内置的命令)和外部命令,内部命令和外部命令…

    Linux干货 2017-05-28

评论列表(1条)

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

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