lvs算法

1. 大锅饭调度(Round-Robin Scheduling RR)
rr - 纯轮询方式,比较垃圾。把每项请求按顺序在真正服务器中分派。

2. 带权重的大锅饭调度(Weighted Round-Robin Scheduling WRR)
wrr -带权重轮询方式。把每项请求按顺序在真正服务器中循环分派,但是给能力较大的服务器分派较多的作业。

3. 谁不干活就给谁分配(Least-Connection LC)
lc - 根据最小连接数分派

4. 带权重的谁不干活就给谁分配(Weighted Least-Connections WLC 默认)
wlc - 带权重的。机器配置好的权重高。

5. 基于地区的最少连接调度(Locality-Based Least-Connection
Scheduling LBLC)
lblc - 缓存服务器集群。基于本地的最小连接。把请求传递到负载小的服务器上。

6. 带有复制调度的基于地区的最少连接调度(Locality-Based Least-Connection Scheduling with Replication Scheduling LBLCR)
lblcr - 带复制调度的缓存服务器集群。某页面缓存在服务器A上,被访问次数极高,而其他缓存服务器负载较低,监视是否访问同一页面,如果是访问同一页面则把请求分到其他服务器。

7. 目标散列调度(Destination Hash Scheduling DH)
realserver中绑定两个ip。ld判断来者的ISP商,将其转到相应的IP。

8. 源散列调度(Source Hash Scheduling SH)
源地址散列。基于client地址的来源区分。(用的很少)

9. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)
基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A:(1+1)/1
B:(1+2)/2
C:(1+3)/3
根据运算结果,把连接交给C 。

10.最少队列调度(Never Queue Scheduling NQ)
无需队列。如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算。
### LVS调度算法详解 LVS(Linux Virtual Server)是一种基于Linux操作系统的高性能服务器集群解决方案,它通过不同的调度算法将网络流量分发到多个后端服务器上,以实现负载均衡和高可用性。以下是LVS支持的主要调度算法及其应用场景。 #### 1. **轮询(Round Robin, RR)** 轮询算法是最简单的调度方式之一,它按照顺序依次将请求分配给每个后端服务器(Real Server, RS)。这种算法适用于所有后端服务器性能相近的场景,确保每个服务器都能均匀地处理请求[^3]。 ```bash # 示例命令:设置LVS为轮询调度模式 ipvsadm -A -t 192.168.1.100:80 -s rr ``` #### 2. **加权轮询(Weighted Round Robin, WRR)** 加权轮询算法在轮询的基础上引入了权重的概念,允许为每个后端服务器分配不同的权重值。权重较高的服务器会比权重较低的服务器获得更多请求,适用于后端服务器性能不一致的情况[^3]。 ```bash # 示例命令:设置LVS为加权轮询调度模式 ipvsadm -A -t 192.168.1.100:80 -s wrr ``` #### 3. **最少连接(Least Connections, LC)** 最少连接算法根据当前各后端服务器的活动连接数来选择目标服务器,优先将新请求分配给连接数最少的服务器。这种算法适合于请求处理时间差异较大的场景,能够有效避免某些服务器因长时间处理复杂请求而过载。 ```bash # 示例命令:设置LVS为最少连接调度模式 ipvsadm -A -t 192.168.1.100:80 -s lc ``` #### 4. **加权最少连接(Weighted Least Connections, WLC)** 加权最少连接算法结合了最少连接和加权轮询的优点,不仅考虑了服务器的当前连接数,还考虑了服务器的权重。该算法首先计算每个服务器的 `(active_connections + 1) / weight` 值,然后选择最小值对应的服务器进行请求分配[^3]。 ```bash # 示例命令:设置LVS为加权最少连接调度模式 ipvsadm -A -t 192.168.1.100:80 -s wlc ``` #### 5. **目标地址哈希(Destination Hashing, DH)** 目标地址哈希算法根据客户端的目标IP地址进行哈希运算,确保来自同一目标地址的请求始终被转发到相同的后端服务器。这种算法特别适用于需要保持会话状态的场景,例如正向代理缓存服务中的负载均衡,宽带运营商常用此方法提高缓存命中率。 ```bash # 示例命令:设置LVS为目标地址哈希调度模式 ipvsadm -A -t 192.168.1.100:80 -s dh ``` #### 6. **地址哈希(Source Hashing, SH)** 地址哈希算法与目标地址哈希类似,但它根据客户端的IP地址进行哈希运算,确保来自同一地址的请求始终被转发到相同的后端服务器。这种算法同样适用于需要保持会话状态的场景,尤其是在反向代理环境中[^3]。 ```bash # 示例命令:设置LVS地址哈希调度模式 ipvsadm -A -t 192.168.1.100:80 -s sh ``` #### 7. **局部性基最少连接(Locality-Based Least Connections, LBLC)** LBLC算法是动态的目标地址哈希算法,结合了目标地址哈希和最少连接的优点。它首先根据目标地址哈希选择一个后端服务器,如果该服务器的负载过高,则会选择负载较低的其他服务器。这种算法适用于需要根据负载状态实现正向代理的场景[^1]。 ```bash # 示例命令:设置LVS为局部性基最少连接调度模式 ipvsadm -A -t 192.168.1.100:80 -s lblc ``` #### 8. **带复制功能的局部性基最少连接(Locality-Based Least Connections with Replication, LBLCR)** LBLCR算法是在LBLC的基础上增加了复制功能,解决了LBLC可能存在的负载不均衡问题。当某个后端服务器负载较重时,系统会自动将部分请求复制到负载较轻的服务器上,从而实现更均衡的负载分配[^1]。 ```bash # 示例命令:设置LVS为带复制功能的局部性基最少连接调度模式 ipvsadm -A -t 192.168.1.100:80 -s lblcr ``` #### 9. **短连接最少连接(Shortest Expected Delay, SED)** SED算法是另一种改进的最少连接算法,它不仅考虑了当前的连接数,还预测了未来一段时间内的延迟情况。该算法优先选择预计延迟最短的服务器,适用于短连接较多的场景。 ```bash # 示例命令:设置LVS为短连接最少连接调度模式 ipvsadm -A -t 192.168.1.100:80 -s sed ``` #### 10. **永不排队(Never Queue, NQ)** NQ算法是对SED算法的一种优化,它假设所有服务器都处于空闲状态,直接选择第一个可用的服务器进行请求分配。这种算法适用于请求量非常大的场景,能够减少等待时间,提高响应速度[^3]。 ```bash # 示例命令:设置LVS为永不排队调度模式 ipvsadm -A -t 192.168.1.100:80 -s nq ``` #### 11. **公平队列(Fair Queueing, FQ)** FQ算法通过公平队列机制,确保每个请求都能获得公平的处理机会。该算法适用于多用户并发访问的场景,能够有效避免某些用户因请求频繁而导致其他用户的服务质量下降[^3]。 ```bash # 示例命令:设置LVS为公平队列调度模式 ipvsadm -A -t 192.168.1.100:80 -s fq ``` #### 12. **随机早期检测(Random Early Detection, RED)** RED算法通过随机丢弃即将进入队列的请求,防止队列过载,从而避免网络拥塞。该算法适用于高流量、低延迟要求的场景,能够有效提升系统的稳定性和可靠性[^3]。 ```bash # 示例命令:设置LVS为随机早期检测调度模式 ipvsadm -A -t 192.168.1.100:80 -s red ``` ### 总结 LVS提供了多种调度算法,每种算法都有其适用的场景和特点。用户可以根据实际需求选择合适的调度算法,或者结合多种算法的优势,构建更加高效、稳定的负载均衡系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值