1、LVS-NAT, DNAT(多目标)
2、LVS-DR(Direct Routing)
返回报文不经过Direct
real server 不能跨越路由
调度算法:Scheduling
静态方法:仅根据算法本身调度,不考虑realserver承载更多的请求
rr:轮循
wrr:分配权重进行轮循分配
sh:原地址hash, 反均衡(也可以使用cookie调度,但是需要基于7层hash,lvs不能实现)
dh:目标地址hash,
动态方法:根据算法及realserver上当前负载状况
- 活动链接,正传输数据。
- 非活动链接,数据传输完毕,但是未断开的。
活动链接与非活动链接的资源比例:
思考一个情况,如果长连接的请求,权重为3的只推出了1个请求,权重为1的推出了100个请求,此时基于轮询的算法,心情求还会按照设定的权重分配给权重为3的多一些,所以有了动态方法
lc:最少链接,后台的realserver那个链接的少,就分发那个。
负载 = 活动连接数*256 + 非活动链接数,结果中小者胜出。但是不考虑权重,开始就会轮询的发送。当所有的realserver都有链接以后开始计算负载
wlc:给予权重的最少链接
负载 = ( 活动链接数*256 + 非活动连接数 )/权重 , 结果中小者胜出。
sed:(改进版wlc) 最少期望延迟shortest expect delay :谁延迟最短,
负载 = (活动链接数+1)*256 /权重
例子: 权重 300 20 1
(0+1*256)/300 = 0.85 . 这里有限分配
(0+1*256)/20 = 12.8
(0+1*256)/1 = 256
nq:基于sed改进,上面的算法得出的计算算法小肯定是不会给别人调度的。就算性能再差,也可以接受一些请求,不想让他们限制了。
刚刚开局的时候上来先基于权重轮流一下,然后再按照sed算法继续分配
lblc:基于本地最少链接。
后端服务器是缓存服务器,将同一个请求都定向至同一个缓存服务器。
dh+lc
lblcr:复制的基于本地的最少链接
后端服务器是缓存服务器,将同一个请求都定向至同一个缓存服务器。
3、LVS-TUN (IPIP)
基于隧道,实现跨路由
4.LVS-FULLNAT
session持久机制
1、session绑定,时钟将同一个请求者的链接定向至同一个RS(第一次请求时仍有调度算法算则)
2、session复制,基于单播,多播广播复制session信息,(量大管理起来不便)
3、session共享,利用单独部署的服务器来统一管理session