高性能负载均衡器集群LVS

此文档主要来自高俊峰老师的资料汇总

LVS体系结构

  使用 LVS 架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用 Load Balancer表示,中间的服务器群组层,用 Server Array 表示,最底端的数据共享存储层,用 Shared Storage 表示,在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

LVS 体系结构如下图所示:


  • Load Balancer 层:位于整个集群系统的最前端,有一台或者多台负载调度器
    (Director Server)组成,LVS 模块就安装在 Director Server 上,而 Director 的主要作用类似于一个路由器,它含有完成 LVS 功能所设定的路由表,通过这些路由表把用户的请求分发给 Server Array 层的应用服务器(Real Server)上。同时,在 Director Server 上还要安装对 Real Server 服务的监控模块 Ldirectord,此模块用于监测各个Real Server 服务的健康状况。在 Real Server 不可用时把它从 LVS 路由表中剔除,恢复时重新加入。
  • Server Array 层:由一组实际运行应用服务的机器组成,Real Server 可以是 WEB 服务器、MAIL 服务器、FTP 服务器、DNS 服务器、视频服务器中的一个或者多个,每个Real Server 之间通过高速的 LAN 或分布在各地的 WAN 相连接。在实际的应用中,Director Server 也可以同时兼任 Real Server 的角色。
  • Shared Storage 层:是为所有 Real Server 提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过 NFS网络文件系统共享数据,但是 NFS 在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如 Red hat 的 GFS 文件系统,oracle 提供的 OCFS2 文件系统等。


lvs负载均衡

  负载均衡技术有很多实现方案,有DNS负载均衡、HTTP重定向、反向代理负载均衡、IP负载均衡、直接路由、IP隧道,在这些负载调度算法中,执行效率最高的是数据链路负载均衡。
关于服务器集群负载均衡参考文档:https://www.zhihu.com/question/22610352
注意:
反向代理负载均衡不是数据链路层的负载均衡,数据链路层的负载均衡可以实现三角传输(DR模式)。
数据链路层负载均衡是目前使用最广泛的一种负载均衡方式。著名的负载均衡开源产品LVS(Linux Virtual Server),同时支持上面的IP负载均衡和数据链路层负载均衡。

  LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 是 LVS 集群系统的核心软件,lvs集群整个执行流程为:访问的请求首先经过 VIP 到达负载调度器,然后由负载调度器从 Real Server 列表中选取一个服务节点响应用户的请求。
  当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的 Real Server 节点,而 Real Server 节点如何返回数据给用户,是 IPVS 实现的重点技术,IPVS 实现负载均衡机制有三种,分别是 NAT、TUN 和 DR,详述如下:

1. DR模式
DR模式

DR 模式: 即 Virtual Server via Direct Routing,也就是用直接路由技术实现虚拟服务器。VS/DR 通过改写请求报文的 MAC 地址,将请求发送到 Real Server,而 Real Server将响应直接返回给客户。这种调度方式的性能最好的。

DR模式小结:
1、DR 模式是通过在调度器 LB 上修改数据包的目的 MAC 地址实现转发。因此数据包来源地址保持不变,目的地址仍然是 VIP 地址。
2、请求的报文经过调度器,而 RS 响应处理后的报文无需经过调度器 LB,因此并发访问量大时使用效率很高(和 NAT 模式比)
3、因为 DR 模式是通过 MAC 地址改写机制实现转发,因此所有 RS 节点和调度器 LB 只能在一个局域网里面
4、RS 主机需要绑定 VIP 地址在 LO 接口上,并且需要配置 ARP 抑制。
5、RS 节点的默认网关不需要配置成 LB,而是直接配置为上级路由的网关,能让 RS 直接出网就可以。
6、由于 DR 模式的调度器仅做 MAC 地址的改写,所以调度器 LB 就不能改写目标端口,那么 RS 服务器就得使用和 VIP 相同的端口提供服务。

2. NAT模式
NAT模式

NAT 模式: 即 Virtual Server via Network Address Translation,也就是网络地址翻译技术实现虚拟服务器。当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP 地址)改写成选定的 Real Server 地址,同时将报文的目标端口也改成选定的 Real Server的相应端口,最后将报文请求发送到选定的 Real Server。在服务器端得到数据后,Real Server 将数据返回给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP 地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。

NAT模式优缺点:
1、NAT 模式不需要 LB IP 和 realserver ip 在同一个网段(此图是在同一个局域网下)。只需要在 LB 上配置一个公网 IP 地址就可以了。
2、NAT 技术将请求的报文和响应的报文都需要通过 LB 进行地址改写,因此网站访问量比较大的时候,LB 负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20 台节点
3、每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址。
4、NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

3. FULL NAT模式

FULL NATT 模式,与 NAT 模式基本一样,不同之处在于对报文的处理方面,如下图:

NAT与FULL NAT报文

1、FULL NAT 模式也不需要 LB IP 和 realserver ip 在同一个网段。
2、FULL NAT 因为要更新 Source IP 所以性能正常比 NAT 模式下降 10%。

4. IP TUNNEL模式
IP隧道.png

TUN :即 Virtual Server via IP Tunneling 也就是通过 IP 隧道技术实现虚拟服务器。 在 VS/TUN 方式中,调度器采用 IP 隧道技术将用户请求转发到某个 Real Server,而这个Real Server 将直接响应用户的请求,不再经过前端调度器。此外,对 Real Server 的地域位置没有要求,可以和 Director Server 位于同一个网段,也可以在独立的一个网络中。因此,在 TUN 方式中,调度器将只处理用户的报文请求,从而使集群系统的吞吐量大大提高。

IP TUNNEL模式注意事项:
1、TUNNEL 模式必须在所有的 realserver 机器上面绑定 VIP 的 IP 地址
2、TUNNEL 模式的 vip ------>realserver 的包通信通过 TUNNEL 模式,不管是内网和外网都能通信,所以不需要 lvs vip 跟 realserver 在同一个网段内
3、TUNNEL 模式 realserver 会把 packet 直接发给 client 不会给 lvs 了
4、TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用。

LVS调度算法

Lvs 的调度算法决定了如何在集群节点之间分布工作负荷。当 director 调度器收到来自客户端访问 VIP 的上的集群服务的入站请求时,director 调度器必须决定哪个集群节点应该处理请求。Director 调度器用的调度方法基本分为两类:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr

LVS调度算法的生产环境选型:
1、一般的网络服务,如 www,mail,mysql 等常用的 LVS 调度算法为:
a.基本轮询调度 rr
b.加权最小连接调度 wlc
c.加权轮询调度 wrr
2、基于局部性的最小连接 lblc 和带复制的给予局部性最小连接 lblcr 主要适用web cache 和 DB cache
3、源地址散列调度 SH 和目标地址散列调度 DH 可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一。

LVS的安装与使用

  • 安装 IPVS 管理软件
[root@localhost ~]#yum -y install ipvsadm
[root@localhost ~]# ipvsadm --help
  • ipvsadm 的用法


    ipvsadm的用法

可以用“ipvsadm --clear”代替“ipvsadm -C”

列子:

[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600
[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g
[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 –g

你可能感兴趣的:(高性能负载均衡器集群LVS)