wlc算法和sed算法有什么区别?还有在开启了持久服务以后如何将同一IP不同端口的连接也进行分发?

最近仔细看了一下LVS的中文文档,还有这两个问题不大明白,希望高手给予解答。

我看wlc算法是要将新连接分发给,``连接数/权值''最小的真实服务器;但sed算法是分发给``(连接数+1)/权值''最小的真实服务器,这有什么本质上的区别吗?为什么要搞两种不同的分发算法?

还有就是开启了持久服务以后,如何根据不同的端口进行分发?现在好像是最细粒度是根据IP进行分发,-M选项再指定掩码也指定不到端口吧,但连接模板中不还是有一种是指定具体端口的吗,那如何实现这种配置呢?好像以前有个ppc算法,但现在2.4内核的1.0.12版本中已经没有这个算法了呀。

谢谢啊!

Forums:

自己顶一下,希望懂的人回答一下,谢谢了!

权重最少连接(WLC)

权重最少连接调度方法是联合最少连接方法并为每个服务器指定一个权重或排序来选择集群节点的(如果你没有指定方法,这将是默认的选择方法),这个方法是有意为集群中节点处理能力不一样的集群设计的。

Director通过计算每个集群节点总开销值确定新的入站请求分配给哪个集群节点,然后通过你给每个集群节点指定的权重值划分,最小WLC值的节点将为这个请求提供服务[15]。

如果所有集群节点的WLC值相同,第一个在列表中被发现的节点将被选中(我们将在后面三章对叫做IPVS表的列表进行详细的讨论)。
对Linux企业集群而言,WLC调度方法是一个很好的调度方法,因为在平衡企业负载方面做得相当出色。

最短预期延迟(SED)

SED是最近才添加将来的LVS调度方法,它在WLC方法基础上稍微做了一下改善,当集群节点在处理每个请求(大批量作业是这种请求最好的例子)时它使用TCP并保持活动状态。

SED是按照后面这样计算的:每个集群节点的总开销值是通过在活动连接数量值上加1得到的,然后通过你给每个集群节点指定的权重值来划分总开销值,最小SED值的节点将被选中。

关于SED调度方法有两个事情需要注意:

在判断每个集群节点的总开销值时不使用非活动连接数值。

在入站连接被分配后,它在活动连接数值基础上加1来预料总开销值

例如:假设你有两个节点,其中一个比另一个要快三倍(一个是1GHZ的处理器,另一个是3GHz的处理器[16]),因此,你决定将一个的权重值设为1,另一个设为3,假设集群已经启动并运行了一段时间,较慢的节点上有10个活动连接,较快的节点上有30个活动连接,当新的请求抵达时,Director必须决定请求分配给哪个节点,如果这个请求没有增加每个集群节点的活动连接数量,SED值应该按下面这样计算:

较慢的节点(1GHz处理器) 10个活动连接/权重 1=10
较快的节点(3GHz处理器) 30个活动连接/权重 3=10

因为SED值相同,Director会选择首先在集群节点的表中显示的节点,如果首先显示的是较慢的节点,新的请求也将分配给它,哪怕它很慢。
如果新的连接首先增加了活动连接的数量,计算方法应该这样:

较慢的节点(1GHz处理器) 11个活动连接/权重 1=11
较快的节点(3GHz处理器) 31个活动连接/权重 3=10.34

现在较快的节点SED值更小,因此它适合分配新的连接请求。

增加活动连接数值一方面是影响是集群节点可能处于空闲状态,即使多个请求被分配给另一个集群节点了,例如:让我们使用同样的两个集群节点,但是本次我们假设较慢的节点没有活动连接,较快的节点有1个活动连接,每个节点的SED计算方法如下(回想活动连接已经增加了1):

较慢的节点(1GHz处理器) 1个活动连接/权重 1=1
较快的节点(3GHz处理器) 2个活动连接/权重 3=0.67

--------------------------------------------------------

我知道这两种算法都是什么意思,我想知道的是有什么本质的不同,为什么要搞两种算法?

PPC算法就是根据访问端口分发到不同的机器上,
持续端口连接(PPC)强制所有来自客户端计算机的连接都连接到同一真实服务器的一个特定的目标端口上

我知道ppc算法是什么,我想问的问题是在当前的2.4内核的1.0.12版本中,已经没有该算法了,如果想做到这一点还可能吗?