LVS(Linux Virtual Server)项目由毕业于国防科技大学的章文嵩博士成立,是中国国内最早出现的自由软件项目之一。该项目在linux操作系统上提供了最常用的负载均衡软件。
LVS的工作方式类似于netfilter,分为两段式:一段工作于用户空间中,用于定义集群服务、负载均衡的调度方法;另一段工作于内核中,根据定义的集群服务的定义和调度方法来调度后台服务器工作。
LVS的相关概念
Director
--前端的负载均衡器,接受来自客户端的请求,然后调度后台服务器响应请求。其配置的IP地址称为VIP,DIP。VIP是用于提供服务的IP,DIP是用于和后台real server通信。
Real server
真正提供服务的服务器。其配置的IP地址称为RIP。
LVS的三种模型
1
、LVS-NAT
特点:
1、real server 和 director 需要在同一个子网当中;
2、通常RIP 是私有地址,只用于集群节点之间通信
3、director 同时处理入站和出站请求;
4、real server的网关要指向DIP;
5、可以实现端口映射;
6、real server 可以是任意操作系统;
7、Director 很可能成为性能瓶颈;
2、LVS-DR
客户端请求通过Director ,Director通过修改目标MAC地址转发客户端请求给real server,然后由real server直接响应给客户端。
特点:
1、real server 和Director必须在同一个物理网络中,
2、RIP 可使用公网地址;
3、Director 仅处理入栈请求;
4、Real server的网关不能指向Director,所以不用Director处理出栈请求;
5、不支持端口映射 ;
6、real server操作系统需支持隔离VIP的ARP广播;
7、DR模型的性能要优于NAT模型;
3、LVS-TUN
特点:
1、real server 和 director 不需要在同一网络中,可跨越互联网;
2、RIP 一定不能是私有地址
3、Director 仅处理入栈请求,
4、real server的网关不能指向DIP
5、不支持端口映射
6、real server操作系统需支持IP隧道功能
负载均衡调度方法
调度方法分为:
静
态调度方法
(Fixed scheduling)、
动态调度方法
(Dynamic scheduling)。
静
态调度方法
1.
RR(Round
Robin) 轮叫
2.
W
RR
(Weighted Round Robin)加权轮叫
3.
D
estination Hashing
(键值对)将同一个客户端的请求转到同一个服务器上(应用于real server为缓存服务器)
4.
Source Hashing
当存在多个防火墙管理内网用户时,将
动态调度方法
1.
LC
:Least-Connection -最少连接,根据计算real server的连接数,来决定新请求转给哪一台real server。计算方法如下:
Real Server:active*256+inactive=overhead
2.
WLC
:(Weighted Least Connection) --加权最少连接
Real Server:(active*256+inactive)/weigh=overhead (默认的调度方法)
3.
S
ED(Shortest Expected Delay
) --
最少期望延迟
Real Server:(active+1)*256/weight=overhead
4.
NQ(Never Queue)
Real Server:(active+1)*256/weight=overhead
5.
L
BLC
(Locality-Based Least-Connection)--基于本地的最少连接,动态地实现DH算法。
6.
LBLCR
(Locality-Based Least-Connection with Replication) --带复制的基于本地的最少连接。通常用于在缓存服务器之间共享缓存(基于ICP协议共享)。
集群服务定义工具--ipvsadm 的使用方法
ipvsadm
软件包位于系统安装光盘的Cluster目录中。
ipvsadm -A|E -t|u|f VIP:port [-s scheduler] --定义集群服务
ipvsadm -a|e -t|u VIP:PORT -r RS_address [-g|i|m] [-w weight] --添加real server
-A 定义新的集群服务 ;-a 添加 Real Server
-E 修改已存在的集群服务 ;-e 编辑Real Server
-D 删除某集群服务 ; -d 删除Real Server
-C #清空所有关于集群服务的定义
-R #相当于ipvsadm-restore
-S #相当于ipvsadm-save
-L|l #显示所有关于集群服务器的定义
-Z #zero 清空所有集群服务的计数器
--stats #输出统计信息与‘-l’连用;
--rate #速率统计信息
-n #以数字显示信息
-c #显示连接详情
-t #TCP
-u #UDP
-f #firewall mark
-g #gateway,工作为DR模型(默认值)
-i #工作为TUN模型
-m #工作为NAT模型