负载均衡集群,顾名思义,就是让多台服务器共同负担压力。负载均衡是企业级大型项目所需的重要模块。

当前实现负载均衡集群的优秀开源软件有LVS、Nginx、haproxy、keepalived等,而优秀的商业负载均衡设备有F5、NetScaler等。商业负载均衡设备稳定性好,但是成本昂贵。

接下来介绍一下负载均衡软件LVS。

 

一、LVS介绍

LVS(Linux Virtual Server)是由国内大牛章文嵩开发的开源负载均衡软件。它是一款四层的负载均衡软件,即基于OSI模型第四层传输层,TCP/IP协议(IP+端口)的转发和路由。稳定性和效率很高。

LVS架构如图所示,核心角色是调度器LB(Load Blancer),用来分发用户的请求;以及剩下的真实服务器RS(Real Server),用于处理用户请求。

LB为网关服务器,对外服务使用的是公网IP,在集群中也称为VIP(Virtual IP),即虚拟IP,或者浮动IP。服务器靠这个IP对外提供服务,但是这个IP并非是真正处理用户请求的真实服务器RS的IP,因此称之为虚拟的IP。

负载均衡 openwrt 负载均衡厂商排名前十_IP

 

 

二、三种LVS模式

LVS根据实现方式不同可以分为:NAT模式、IP Tunnel(IP 隧道)模式、DR模式三种。

(1)NAT模式

NAT(Network Address Translation,网络地址转换),用于解决ipv4地址不足提出来的方案。主要思想是将网络分为公私网,一个局域网由一台网关控制,NAT网关同时拥有公网IP以及内网IP两个网卡,让一个局域网的主机只需使用一个公网IP,减少资源占用。

LVS的NAT模式即使用NAT标准,调度器LB即是一个NAT网关,把用户的请求通过预设的iptables规则,使用交换机/路由器转发给后端的RS。LB拥有两个IP,一个是公网IP,一个是内网IP,而RS只有内网IP。用户访问地址是LB的公网IP,LB收到用户请求后将会把请求使用调度算法进行计算后,转发给内网中的RS,通过LB与RS的内网IP进行源、目标地址转发。

这种模式的好处是节省公网IP,但是LB的性能是瓶颈。

架构如图所示。

负载均衡 openwrt 负载均衡厂商排名前十_IP_02

 

 

(2)IP Tunnel模式



IP隧道技术:是路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。



隧道技术是一种数据包封装技术,它是将原始IP包(其报头包含原始发送者和最终目的地)封装在另一个数据包(称为封装的IP包)的数据净荷中进行传输。



这样可以使报文到达首个IP地址之后再被转发到包装里的另一个IP地址,比如我们所熟知的VPN技术。



 



在LVS的IP隧道架构中,由于是服务器集群,不可能静态地建立一一对应隧道,而是需要将报文封装和转发给 动态选择出的一台RS,这样就可以将一组服务器上的网络服务组成一个IP上的虚拟网络服务。



隧道模式运作:LB接收到用户请求目标为集群VIP(对外服务虚拟IP)的报文之后,通过调度算法,挑选出一个目标RS,使用其IP地址封装请求报文转发给RS。目标RS受到报文后解析,获取用户源目标地址为VIP的报文,服务器即发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表iptables将响应报文直接返回给用户。



这种模式下,需要给LB和所有RS全部分配公网IP,比较浪费公网IP。



架构如图所示。




负载均衡 openwrt 负载均衡厂商排名前十_网络_03

 

 

(3)DR模式

原理与Tunnel模式相同。但是不使用隧道技术,不会封装IP,而是将数据帧的MAC地址改为RS的MAC地址。LB与RS必须在一个网段内,才可通过MAC地址直接转发。最后RS将响应结果直接返回给用户。

架构如图所示。

 

负载均衡 openwrt 负载均衡厂商排名前十_运维_04

 

三、总结

NAT模式适合小型的服务器集群,优点节省公网IP。TUN和DR相差不大,都能支撑较大规模的集群,缺点浪费公网IP。