LVS负载均衡集群理论
目录
一、概述
1、集群概述
1.1、集群介绍
集群是一组相互独立的、通过高速计算机网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。
计算机集群Cluster,可以把多台计算机 连接在一起使用,平分资源或互为保障。其好处不言而喻,群集中的每个计算机被称为一个节点,节点可添加可减少,在这些节点之上虚拟出一台计算机供用户使用;从使用用户的角度看始终是使用一台计算机,无所谓多少节点。
特点:
高性能、高性价比、可扩展性、高可用性、负载均衡、错误恢复、透明性、可管理性、可编程性
1.2、集群类型
-
负载均衡集群(Load Balance Cluster)
-
高可用集群(High Availability Cluster)
-
科学计算集群(High Performance Computing Cluster)
1.3、负载均衡技术类型
四层负载均衡器: 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
七层负载均衡器 :也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
1.4、负载均衡实现方式
硬件负载均衡产品:F5 、深信服 、Radware
软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
2、LVS介绍
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。
3、LVS和nginx区别
-
LVS比nginx具有更强的抗负载能力,性能更高,对内存和cpu资源消耗低。
-
LVS工作在网络层,具体流量由操作系统内核进行处理,nginx工作在应用层,可针对http应用实施一些分流策略。
-
LVS安装配置比较复杂点,网络依赖性较大,稳定性高,lvs不支持正则表达式,不能实现动静分离操作。
-
LVS使用的协议范围广, Nginx 仅支持 HTTP、HTTPS、Email 协议,适用范围小。
4、LVS相关术语
-
DS:Director Server。指的是前端负载均衡器节点。
-
RS:Real Server。后端真实的工作服务器。
-
VIP:Virtual IP 向外部直接面向用户请求,作为用户请求的目标的IP地址。
-
DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
-
RIP:Real Server IP,后端服务器的IP地址。
-
CIP:Client IP,访问客户端的IP地址。
5、LVS负载均衡算法
5.1、静态负载均衡
rr(round robin,轮询 )
轮询是最简单的负载均衡方法,按照预定的顺序,轮流将请求分配给后端服务器。
wrr(weight round robin,加权轮询)
类似于轮询,但是每个后端服务器可以设置一个权重,表示其处理能力。权重高的服务器将接收更多的请求。
sh(source hashing,源地址散列算法(HASH))
根据请求的源IP地址,通过散列函数计算出一个槽位,将请求分发到对应的服务器。
dh(destination hashing,目标地址 HASH)
与源地址散列算法相反,是根据请求的目标IP地址来进行散列分发的。
5.2、动态负载均衡
lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)
哪个服务器当前的活跃连接数最少,就将新的请求分配给它。
wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)
谁的结果最小,就分配给谁。
二、三种LVS工作模式详解
1、基于NAT的LVS模式负载均衡
1.1、工作原理
-
当用户的请求到达调度器时,请求报文会先到内核空间的PREROUTING链上。此时报文的源IP为CIP,目标IP为VIP
-
PREROUTING检查发现数据包的目标IP是本机,就将数据包送至INPUT链。
-
IPVS工作在INPUT链上,当数据包抵达INPUT链后,IPVS会检查数据包所请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器RIP,然后将数据包送往 POSTROUTING链。此时报文的源IP为CIP,目标IP为RIP。
-
POSTROUTING链通过选路,将数据包转发给Real Server
-
Real Server对比发现目标IP是自己,就会接受这个请求报文,开始构建响应报文发回给调度器。源IP为RIP,目标IP为CIP
-
调度器在响应客户端前,会将报文的源IP地址修改为自己的VIP,然后响应给客户端。此时报文的源IP为VIP,目标IP为CIP
1.2、LVS-NAT模型的特性
-
RS应该使用私有地址,RS的网关必须指向DIP
-
DIP和RIP必须要在同一网段中
-
请求报文和响应报文都需要经过调度器,高负载场景中,调度器容易成为性能瓶颈。
-
支持端口映射
-
RS可以使用任意操作系统
1.3、NAT的优点
集群中的物理服务器可以使用任何支持TCP/IP操作系统它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。
1.4、NAT的缺点
伸缩能力有限,当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢。
2、基于TUN的LVS负载均衡
2.1、实现原理
-
在原有的ip报文外在封装多一层的ip首部,内部ip首部(原地址为cip,目标ip为vip),外层ip首部原地址为dip,.目标地址为rip
-
客户端发送数据包经过网络后到 LVS 网卡,数据包源 IP 为 CIP,目的 IP 为 VIP。
-
进入 PREROUTING 链后,会根据目的 IP 去查找路由,确定是否为本机 IP,数据包将转发至 INPUT 链中,到 LVS,源 IP 和 目的 IP 不变。
-
到 LVS 后,通过目的 IP 和目的 PORT 查找是否为 IPVS 服务,如是 IPVS 服务,将会选择一个 RS 后端服务器, 源 IP 为 DIP,目标 IP 为 RIP,数据包将会转发至 OUTPUT 链中。
-
数据包根据路由信息到达 LVS 网卡,发送至路由器网关,最终到达后端服务器。
-
后端服务器收到数据包后,会拆掉最外层的 IP 地址后,会发现还有一层 IP 首部,源 IP 为 CIP,目的 IP 为 VIP,TUNL0 上配置 VIP,查找路由后判断为本机 IP 地址,将会发给用户空间层的应用程序响应后 VIP 为源 IP,CIP 为目的 IP 数据包发送至网卡,最终返回至客户端用户。
2.2、TUN 模式的优点
-
单臂模式,LVS 负载压力小。
-
数据包修改小,信息完整性高。
-
可跨机房。
2.3、TUN 模式的缺点
-
不支持端口映射。
-
需在 RS 后端服务器安装模块(ipip)及配置 VIP。
-
隧道头部 IP 地址固定,RS 后端服务器网卡可能会不均匀。
-
隧道头部的加入可能会导致分片,最终会影响服务器性能。
3、LVS(DR)负载均衡
直接路由:Direct Routing,简称 DR 模式,采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各个地方,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。它是最常用的工作模式,因为它的功能性强大。
3.1、DR 实现原理
-
当客户端用户发送请求给 www.baidu.com 网站时,首先经过 DNS 解析到 IP 后并向百度服务器发送请求,数据包经过网络到百度 LVS 负载均衡服务器。
-
这时到达 LVS 网卡时的数据包包括:源 IP 地址(客户端地址)、目的 IP 地址(百度对外服务器 IP 地址,也就是 VIP)、源 MAC 地址(CMAC / LVS 连接路由器的 MAC 地址)、目标 MAC 地址(VMAC / VIP 对应的 MAC 地址)。
-
数据包到达网卡后,经过链路层到达 PREROUTING 链,进行查找路由,发现目的 IP 是 LVS 的 VIP,这时就会发送至 INPUT 链中并且数据包的 IP 地址、MAC 地址、Port 都未经过修改。
-
数据包到达 INPUT 链中,LVS 会根据目的 IP 和 Port(端口)确认是否为 LVS 定义的服务。
-
如是定义过的 VIP 服务,会根据配置的服务信息,从 RealServer 中选择一个后端服务器 RS1,然后 RS1 作为目标出方向的路由,确定下一跳信息及数据包通过具体的哪个网卡发出,最好将数据包通过 INET_HOOK 到 OUTPUT 链中。
-
数据包通过 POSTROUTING 链后,目的 MAC 地址将会修改为 RealServer 服务器 MAC 地址(RMAC)源 MAC 地址修改为 LVS 与 RS 同网段的 IP 地址的 MAC 地址(DMAC)此时,数据包将会发至 RealServer 服务器。
-
数据包到达 RealServer 服务器后,发现请求报文的 MAC 地址是自己的网卡 MAC 地址,将会接受此报文,待处理完成之后,将响应报文通过 lo 接口传送给 eth0 网卡然后向外发出。
-
此时的源 IP 地址为 VIP,目标 IP 为 CIP,源 MAC 地址为 RS1 的 RMAC,目的 MAC 地址为下一跳路由器的 MAC 地址(CMAC),最终数据包通过 RS 相连的路由器转发给客户端。
3.2、DR 模式的优点
-
响应数据不经过 LVS,性能高。
-
对数据包修改小,信息完整性好。
3.3、DR 模式的缺点
-
LVS 与 RS 必须在同一个物理网络。
-
RS 上必须配置 lo 和其他内核参数。
-
不支持端口映射。
3.4、DR 模式的使用场景
对性能要求高的,可首选 DR 模式,还可透传客户端源 IP 地址。
三、IPVS模块概述
IPVS是LVS的关键,因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件
1、常见选项
选项 | 作用 |
---|---|
-A | 添加虚拟服务节点 |
-D | 删除虚拟服务节点 |
-L | 查看虚拟服务节点列表 |
-n | 以数字形式显示查看内容 |
-a | 添加真实服务节点 |
-d | 删除真实服务节点 |
-l | 查看真实服务节点列表 |
-t | 指定虚拟服务器IP地址 |
-s | 指定调度算法 |
-r | 指定真实服务器节点IP地址 |
-w | 指定权重值 |
-g | 直接路由模式(默认) |
-m | NAT模式 |
-i | 隧道模式 |