LVSLinux Virtual Server)项目由毕业于国防科技大学的章文嵩博士成立,是中国国内最早出现的自由软件项目之一。该项目在linux操作系统上提供了最常用的负载均衡软件。
LVS的工作方式类似于netfilter,分为两段式:一段工作于用户空间中,用于定义集群服务、负载均衡的调度方法;另一段工作于内核中,根据定义的集群服务的定义和调度方法来调度后台服务器工作。
LVS的相关概念
Director --前端的负载均衡器,接受来自客户端的请求,然后调度后台服务器响应请求。其配置的IP地址称为VIP,DIPVIP是用于提供服务的IPDIP是用于和后台real server通信。
Real server 真正提供服务的服务器。其配置的IP地址称为RIP
LVS的三种模型
1LVS-NAT
特点:
1real server 和 director 需要在同一个子网当中;
2、通常RIP 是私有地址,只用于集群节点之间通信
3director 同时处理入站和出站请求;
4real server的网关要指向DIP
5、可以实现端口映射;
6real server 可以是任意操作系统;
7Director 很可能成为性能瓶颈;
2LVS-DR
客户端请求通过Director Director通过修改目标MAC地址转发客户端请求给real server,然后由real server直接响应给客户端。
特点:
1real server Director必须在同一个物理网络中,
2RIP 可使用公网地址;
3Director 仅处理入栈请求;
4Real server的网关不能指向Director,所以不用Director处理出栈请求;
5、不支持端口映射 ;
6real server操作系统需支持隔离VIPARP广播;
7DR模型的性能要优于NAT模型;
3LVS-TUN
特点:
1real server 和 director 不需要在同一网络中,可跨越互联网;
2RIP 一定不能是私有地址
3Director 仅处理入栈请求,
4real server的网关不能指向DIP
5、不支持端口映射
6real server操作系统需支持IP隧道功能
负载均衡调度方法
调度方法分为:态调度方法Fixed scheduling)、动态调度方法Dynamic scheduling)。
态调度方法
1. RRRound Robin) 轮叫
2. WRR Weighted Round Robin)加权轮叫
3. Destination Hashing  (键值对)将同一个客户端的请求转到同一个服务器上(应用于real server为缓存服务器)
4.  Source Hashing 当存在多个防火墙管理内网用户时,将
动态调度方法
1. LCLeast-Connection -最少连接,根据计算real server的连接数,来决定新请求转给哪一台real server。计算方法如下:
Real Serveractive*256+inactive=overhead
2. WLC:(Weighted Least Connection) --加权最少连接
Real Server:(active*256+inactive)/weigh=overhead (默认的调度方法)
3. SED(Shortest Expected Delay) --最少期望延迟
Real Server:(active+1)*256/weight=overhead
4. NQ(Never Queue)
Real Server:(active+1)*256/weight=overhead
5. LBLCLocality-Based Least-Connection--基于本地的最少连接,动态地实现DH算法。
6. LBLCR(Locality-Based Least-Connection with Replication)  --带复制的基于本地的最少连接。通常用于在缓存服务器之间共享缓存(基于ICP协议共享)。
集群服务定义工具--ipvsadm 的使用方法
ipvsadm 软件包位于系统安装光盘的Cluster目录中。
ipvsadm -A|E -t|u|f VIPport [-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模型