LVS原理及工作模式

LVS简介

LVS是Linux Virtual Server的简称,也叫Linux虚拟服务器, 也就是现在常说的四层负载均衡。 它是一个由章文嵩博士发起的自由软件项目
。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

LVS常用名词概念

loadbalance:Load Balancer负载均衡器,运行LVS负责负载均衡的服务器
DS:Director Server指的是前端负载均衡器节点,也就是运行LVS的服务器;
RS:Real Server后端真实的工作服务器;
VIP:Virtual Server IP向外部直接面向用户请求,作为用户请求的目标的IP地址,一般也是DS的外部IP地址;
DIP:Director Server IP主要用于和内部主机通讯的IP地址,一般也是DS的内部IP地址;
RIP:Real Server IP后端服务器的IP地址;
CIP:Client IP访问客户端的IP地址;

LVS基本原理

一般说的LVS集群指的是对于客户端来说的一个大型快速可靠高可用的服务器集群。LVS的核心是在LVS director上的Linux内核中的ip_vs内核模块

对于LVS集群中的Director Server(以下简称DS)来说:

LVS属于四层负载均衡,DS属于四层交换,它在网络中显示为路由器,其规则与普通路由器略有不同;
DS接受从客户端发送过来的请求,并且从后端(backend)的真实服务器RS中挑选一个用来处理请求;
RS可以提供正常互联网服务中的任何服务,因为LVS是四层转发,兼容性很好,对业务无侵入性;
RS可以在客户端无感知的情况下添加或删除到LVS集群中,因此允许后端的RS出现宕机、升级、弹性伸缩。

LVS NAT模式

NAT模式的主要实现原理是通过网络地址转换,LB重写请求报文的目标地址(包括IP和MAC),根据预设的调度算法,将请求分派给后端的RS;RS的响应报文通过LB返回时,报文的源地址被重写,修改为LB的MAC和IP,再返回给客户,完成整个负载调度过程。
请添加图片描述
当用户访问服务器群集提供的服务时,发往虚拟服务器IP(VIP/LB的外部IP地址)的数据包将到达LB
LB检查数据包的目标地址和端口号。如果符合在LVS的规则表中定义添加的服务,则根据调度算法从后端群集中选择一个RS,并将该连接添加到记录已建立连接的哈希表中
然后,将数据包的目标地址和端口重写为所选RS的地址和端口,然后将数据包转发到RS
当传入的数据包符合在LVS的规则表中定义添加的服务并且可以在哈希表中找到所选的RS时,该数据包将被重写并直接转发到所选的RS
当RS处理完请求之后,会把回复数据包返回给LB,此时LB会将数据包的源地址和端口重写为虚拟服务的源地址和端口,然后发送给客户端
连接终止或超时后,连接记录将在哈希表中删除

特点
• Network Address Translation,简称NAT模式

• 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口

• 服务器节点使用私有IP地址,与负载调度器位于同一个物理网路,安全性要优于其他两种方式

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

缺点:
做为节点的调度器,同时也作为网关。当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈

原理
首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器
请添加图片描述
LVS的NAT模式需要开启LB的内核中的ip_forward功能

echo 1 > /proc/sys/net/ipv4/ip_forward

LVS via IP Tunneling(TUN)

采用NAT技术时,虽然对于客户端来说整个服务器集群中的LVS负载均衡过程是无感的(因为对于客户端来说请求包发送的目标IP和响应包返回的源IP都没有改变),但是由于请求和响应报文都必须经过LB进行重写,当客户请求越来越多时,LB的处理能力将成为整个集群中的瓶颈。

为了解决这个问题,LB把请求报文通过IP隧道转发至RS,而RS将响应直接返回给客户端,所以LB只需要处理请求报文。由于一般网络服务应答的数据包要比请求数据包大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以大大提高。

请添加图片描述
客户端请求LVS集群提供的服务,数据包发送到VIP
LB检查数据包的目的地址和端口,如果符合在LVS的规则表中定义添加的服务,则根据调度算法从后端群集中选择一个RS,并将该连接添加到记录已建立连接的哈希表中
LB对请求的数据包进行封装,在VIP外面再封装一层目标RS的IP地址,然后将它发送到对应的RS上
当传入的数据包符合在LVS的规则表中定义添加的服务并且可以在哈希表中找到所选的RS时,该数据包将被直接封装IP并转发到所选的RS
RS接收到数据包后,对其进行解封并且处理请求,然后将响应数据包直接发送到客户端
连接终止或超时后,连接记录将在哈希表中删除

特点
• Direct Routing ,简称DR模式(使用最多的是DR模式)

• 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络

• 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

优点:
负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量

缺点:
需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境

原理:
首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器
请添加图片描述
注意在这种模式下的RS可以是在物理位置上分离的服务器(如可以分布在不同地区的机房),只要拥有在任意网络中的任意真实IP即可(相对VIP而言)。此外,此时的RS需要支持IP封装协议并且需要和LB直接配置好IP隧道,同时VIP需要配置到非ARP响应的网卡设备上。
请添加图片描述
需要LB和RS上面的服务使用的端口必须保持一致,因此在添加配置规则的时候无需指定RS的端口。

LVS via Direct Routing(DR)

VS/DR通过改写请求报文的MAC地址,将请求发送到RS,而RS将响应直接返回给客户。和VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的RS也没有必须支持IP隧道协议的要求,但是因为使用的是MAC地址进行二层转发,所以要求LB和RS都有一块网卡连在同一物理网段上。
请添加图片描述
客户端请求LVS集群提供的服务,数据包发送到VIP
LB检查数据包的目的地址和端口,如果符合在LVS的规则表中定义添加的服务,则根据调度算法从后端群集中选择一个RS,并将该连接添加到记录已建立连接的哈希表中
LB对请求的数据包进行封装,在VIP外面再封装一层目标RS的MAC地址,然后将它发送到对应的RS上
当传入的数据包符合在LVS的规则表中定义添加的服务并且可以在哈希表中找到所选的RS时,该数据包将被直接封装IP并转发到所选的RS
由于RS的本地lo接口上面绑定了VIP,且这时MAC地址是RS自身的MAC地址,所以RS接收到数据包后会处理请求,然后将响应数据包直接发送到客户端
连接终止或超时后,连接记录将在哈希表中删除

特点
• Direct Routing ,简称DR模式(使用最多的是DR模式)

• 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络

• 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

优点:
负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量

缺点:
需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境

原理:
首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器
请添加图片描述
由于LB只是简单地对数据包的MAC地址更改为RS的MAC地址并且将其重新发送到局域网中,所以要求LB和RS必须要在同一个局域网中,这样才能直接利用MAC来进行二层传输。
请添加图片描述
注意DR模式也同样不支持指定RS的服务端口,因此LB和RS的端口也必须保持一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值