关于lvs系统中的“调度”一词的疑问

今天翻帖子,看到了这一篇。
由oufeng发表的“有关LVS动态负载反馈均衡”
(http://zh.linuxvirtualserver.org/node/118)

在章老师的回复中说“目前没有功能强大的Monitor Daemon实现”,

那么,
现在在LVS系统中的那些调度算法,
都不去调查真实服务器的负载情况吗?

如果不调查真实服务器的负载情况的话,
那么怎么去“调度”应该用哪台真实服务器处理当前的请求呢?

也就是说,
现在是“以自己为主”的去调度那些数据包到真实服务器吗?
(“以自己为主”的意思就是,
通过记录以前在调度器上被转发过的信息,来挑选真实服务器,确定调度结果。例如最小连接调度
或者就是干脆不去分析什么信息,直接调度真实服务器。例如轮转调度)

那么,会不会出现处理某一个http请求的时候,
如果这个请求过多的占用了某台真实服务器的资源之后,
再新收到的数据,会不会又发到这台服务器上呢?

如果发生这样的情况,
用lvs的系统,也就是ipvsadm,
有什么办法可以避免吗?

“权值”的概念是不是就是解决这个问题而引出的呢?

如果是的话,那么也是服务器(或者说是网络管理员)以自己为主的去控制调度,
(也就是网络管理员去估算每个真实服务器的处理能力)

有没有可能在现在有系统的框架上,加入动态负反馈的机制,
来调度真实服务器呢?

也就是根据真实服务器的负载情况(包括cpu,内存,当前真实服务器的数据吞吐能力等)

说了一大堆,如果有什么地方说错了,
还请朋友们指正。

谢谢!

Forums:

我现在也在苦苦寻觅LVS节点资源动态反馈的软件。
在LVS中有两种算法,一是加权最少连结(WLC) ,一种是加权轮叫(WRR),其实这两种算法是比较好的,可是它们都没有涉及到节点的负载反馈。
所以我担心如果一个节点由于正在处理当前的任务,资源已很有限,如果在接到一个比较大的请求时,根本就无法处理。这样这个节点就可能挂起了。在也无法处理分配来的请求。
真的不知道有没有能反馈节点资源的软件?
我上次也就相关的问题请教了章博士,他的问答是目前只有增加节点的性能。

今天又看了看站上的算法描述,
好像有种感觉,

如果真实服务器池里面的某一台电脑真的到了100%的状态,
要么是权值设置的有问题,
要么就是其他服务器也应该不会有多清闲。

虽然不知道对不对,
而且也说不出理由。
;P

我正在着手做这方面的工作,添加一个新的调度算法以支撑动态获取后台节点的负载信息。
准备用使用内核线程的模块实现,udp的通讯方式,现在通讯的模块已经写好了,还在考虑算法以及和通讯相关的问题。
ps,我是新手,刚刚接触lvs,还出在分析现有代码的阶段,现在连测试系统都还没有搭建起来,我预期5月中下旬就要把这个工作结束,也欢迎感兴趣的加入讨论,也请章教授多指点
我的电邮hust_blood@163.com

你说的基本上没有错。

在请求的处理时间变化比较大的时候,这种在内核中的连接调度可能会导致服务器间的负载不均衡。所以,需要引人动态反馈负载均衡机制,请参见手册中的“动态反馈负载均衡算法”章节。

在piranha中有简单的动态反馈负载均衡实现,还有feedbackd中有相关实现。

学习中。。。192.168.1.1&192.168.0.1

randomness