大家好,又见面了,我是全栈君。
LVS介绍
- LVS是由国人章文嵩开发
- 流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高
- LVS最新版本基于Linux内核2.6,有好多年不更新了
- LVS有三种常见的模式:NAT、DR、IP Tunnel
- LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)
LVS NAT模式
- LVS NAT模式,借助iptables的nat表来实现
- 用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
- rs需要设定网关为分发器的内网ip
- 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
- 在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源
- 原理图解释:
- Load Balancer,就是一个分发器;把用户的请求,分发给后端的Real Server ,Real Server这些服务器接收到请求以后,处理好用户请求以后,就重新丢回给Load Balancer;最后Load Balancer再返回给用户;
- 这个模式的弊端,当访问量、请求量、反馈量大的时候,Load Balancer的压力很大
- LVS规模,一般规模最多支持10来台服务器,超过10台的话就会有力不从心;
- nat模式这个结构,只需要有一个公网IP,其他real server服务器全部在内网就可以实现。优点,节省很多的资源
LVS IP Tunnel模式
- LVS IP Tunnel模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip
- 客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
- rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己
- 原理图解释:
- 在load balancer与real server之间建立了虚拟通道,叫做 ip tunnel ;实际上是更改了数据包 目的IP;请求过来通过load balancer,通过在real server上配置的VIP;用户请求的时候,数据包里面包好的目的IP,当数据包到达load balancer的时候,load balancer会进行一个数据包目的IP的更改,然后发送到具体的real server上,通过lvs的自己的算法,进行实现到底传输到那个real server上;然后real server再解包处理,再通过一个VIP直接返回到用户,这就省略数据回到load balancer分发器的过程,这样就load balancer就没有瓶颈
LVS DR模式
- LVS DR模式,也需要有一个公共的IP配置在分发器和所有rs上,也就是vip
- 和IP Tunnel不同的是,它会把数据包的MAC地址修改为rs的MAC地址
- rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己
转载于:https://my.oschina.net/u/3707314/blog/1612868
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107734.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...