分享

关于Lvs调度策略的深入研究

 jas0n_liu 2013-10-22
转自:http://learnbank.blog.163.com/blog/static/128699237201212723838291/

Lvs基本问题:

在ipvsadm 的用法中,很多文档对于persistent参数是这样说明的。
-p –persistent [timeout]
持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。

“来自同一个客户”该怎么理解呢,是基于IP的客户端还是基于浏览器客户端的Cookie呢,应该是基于源地址.其实还有一个参数[-M netmask],它指出源地址的匹配方式
例如 -p 900 -M 255.255.255.0
就是掩码后网络地址相同的请求使用同一个模板
因此10.1.9.8和10.1.9.9两机器同时访问同一个vs就使用同一个模板,即到同一个rs.

Rr调度算法很简单,它只维护一个指向rs循环队列的指针,如果vs请求调度,rr就把当前指针所指的rs做为本次连接请求的rs,然后后以指针.它并不管什么模板.

即使设置"quiescent=yes",调度器能够正确的把请求分派到正常节点,那么在原来节点上的session由于不能复制到正常的节点,就丢失了,此时客户端会出现要求重新登陆等的提示, 此时可以把session保存到独立的fs,mysql,网络存储上。

Lvs连接算法:

对 于配置了p的vs,系统在建立新连接例如<x:1234,y:80>前,先调度并创建一个连接模板例 如<x:0,y:0,z:0>,该连接模板的超时时间为p的参数,例如900s,然后再根据模板创建本次可用的连接,例 如<x:1234,y:80,z:80>,这样数据就都从该连接过。如果紧接着又有<x:1235,y:443>的新请求,vs 则会寻找找模板,如果找到,就不重新schedule,而是根据该模板提供的rs创建真实连接<x:1235,y:443,z:443>,并 同时reset该模板的超时时间,即又重置到900s.

1.模板其实也是一个连接,不过比较特别罢了,ipvsadm -Lcn应该能看到
2.连接的超时时间就是p的参数,如果该模板被重用,超时时间就被重设。
如果用户的每次的http请求不超过超时时间,则用户的请求都根据模板发往固定的rs。

lvs操作的流程

数据包->vs->查找是否已存在连接
1.存在就根据该连接发包
2.不存在,是新连接,则开始调度

如果vs是普通服务器,则执行调度算法选择一个rs,然后创建连接,然后发送
如果vs是p服务器(设置了-p –persistent参数的DR服务器),则先看看是否有模板可用,如果有,则根据该模板创建连接,然后发包。
如果没有模板可用,就执行调度器调度到一个rs并创建模板,然后根据该模板创建连接,最后发包。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多