Chinaunix

标题: LVS weight权重分配的奇怪现象,科学都无法解释有木有 [打印本页]

作者: royzs    时间: 2013-06-27 10:45
标题: LVS weight权重分配的奇怪现象,科学都无法解释有木有
本帖最后由 royzs 于 2013-07-31 09:54 编辑

我以前配置了一个LVS一直很稳定,最近又配置了一台,然后出现了一些科学无法解释的问题
【问题描述】:
服务器lvsmaster一台,realserver两台,realserver1和realserver2,realserver1服务器配置DELL r720,16G内存并且不做他用;realserver2配置Dellr710,内存8G上面有其他业务;
1.模式:DR
2.算法wrr
3.权重分配realserver1,realserver2都分配成1;
【现象1】:
流量分发realserver1:realserver2约为1:3
各位看官,您说这现象奇怪吗,wrr模式是根据真实服务器的不同处理能力来调度访问请求,可以保证处理能力强的服务器能处理更多的访问流量,调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。按理说应该realserver1的流量多才对………………
【现象2】
当我把权重分配realserver1,realserver2都分配成100;
流量分发依然是realserver1:realserver2约为1:3
【现象3】
当我把权重分配realserver1为100,realserver2分配成90;
流量分发依然是realserver1:realserver2约为1:3
【现象4】出现了逆转
当我把权重分配realserver1为100,realserver2都分配成80;
流量分发依然是realserver1:realserver2约为3:1
【现象5】依然保持逆转
当我把权重分配realserver1为100,realserver2都分配成30;
流量分发依然是realserver1:realserver2约为10:1——15:1之间

您可能想说把算法改成round robin(轮叫),会不会流量就均衡了呢,我正是这样的目的,我的目的就是让这两台服务器的流量分发均衡,但是我试过了,以失败告终
不管我的算法是rr还是wrr,其结果都一样,见【现象1】——【现象5】
您说着现象是不是连【科学都无法解释】呢,电脑是机器,代码是死的,软件也是按照代码的要求去运作,他怎么就不按照数字才算呢
【注】:每次修改配置都重启pulse进程,有配置keepalived,有配置memcached


今天看了下/var/log/message里面的日志
  1. Jul 31 09:42:12 lvsmaster Keepalived[31846]: Stopping Keepalived v1.2.7 (02/21,2013)
  2. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[31848]: VRRP_Instance(VI_1) sending 0 priority
  3. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[31848]: VRRP_Instance(VI_1) removing protocol VIPs.
  4. Jul 31 09:42:12 lvsmaster Keepalived[12498]: Starting Keepalived v1.2.7 (02/21,2013)
  5. Jul 31 09:42:12 lvsmaster Keepalived[12499]: Starting Healthcheck child process, pid=12500
  6. Jul 31 09:42:12 lvsmaster Keepalived[12499]: Starting VRRP child process, pid=12501
  7. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Interface queue is empty
  8. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em2
  9. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em3
  10. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em4
  11. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, bond0
  12. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Netlink reflector reports IP "LVSMASTER_IP" added
  13. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Interface queue is empty
  14. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Netlink reflector reports IP fe80::d6ae:52ff:fe9b:4fde added
  15. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: No such interface, em2
  16. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: No such interface, em3
  17. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Registering Kernel netlink reflector
  18. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: No such interface, em4
  19. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: No such interface, bond0
  20. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Registering Kernel netlink command channel
  21. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Netlink reflector reports IP "LVSMASTER_IP" added
  22. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Netlink reflector reports IP fe80::d6ae:52ff:fe9b:4fde added
  23. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Registering Kernel netlink reflector
  24. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Registering Kernel netlink command channel
  25. Jul 31 09:42:12 lvsmaster Keepalived_vrrp[12501]: Registering gratuitous ARP shared channel
  26. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Opening file '/etc/keepalived/keepalived.conf'.
  27. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Configuration is using : 15039 Bytes
复制代码
重点关注一下这几行
  1. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: Interface queue is empty
  2. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em2
  3. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em3
  4. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, em4
  5. Jul 31 09:42:12 lvsmaster Keepalived_healthcheckers[12500]: No such interface, bond0
复制代码
我怀疑问题出在这里,我的lvsmaster是用的bonding绑了em1和em2两块网卡,realserver1也是bonding绑了两块网卡,惟独realserver2没有做bonding,只有一块网卡在跑
难道我现在就去换服务器,那简直是不可能的,谁帮帮我啊,,,,
作者: zhaopingzi    时间: 2013-06-27 11:10
科学无法解释就用神学来解释
作者: royzs    时间: 2013-06-27 11:19
回复 2# zhaopingzi


    兄台试用神学解释一下下
作者: zhaopingzi    时间: 2013-06-27 11:21
本帖最后由 zhaopingzi 于 2013-06-27 11:37 编辑

用神学解释就是:出现这种情况都是上帝安排的
作者: royzs    时间: 2013-06-27 11:50
zhaopingzi 发表于 2013-06-27 11:21
用神学解释就是:出现这种情况都是上帝安排的


有没有唯物的解释
作者: wenhq    时间: 2013-06-27 12:13
你是不是还用别的opensource了,比如memcache之类的?
作者: royzs    时间: 2013-06-27 12:57
回复 6# wenhq


    对啊,有memcached
作者: wenhq    时间: 2013-06-27 14:11
还是你的问题哈,才发现。你看看memcache原理哈。
作者: royzs    时间: 2013-06-27 14:54
回复 8# wenhq


    额,难道lvs不能用memcached,我先看看
作者: royzs    时间: 2013-06-27 15:08
回复 8# wenhq


   我把memcached的原理看了一遍,兄台再讲解一下为什么两边流量不一样呢
作者: xiaodylan    时间: 2013-06-27 16:23
wenhq说的是一方面哦
再有你real1的系统限制使用资源是否有限制?是否和real2一样呢?
作者: xiaodylan    时间: 2013-06-27 16:24
我是觉得应该不会是很难解决问题 呵呵 当然 旁观者清当局者迷。
分析原理解决问题吧。
回复 1# royzs


   
作者: royzs    时间: 2013-06-27 16:54
回复 11# xiaodylan


    这个没有,限制我都打开过的
作者: royzs    时间: 2013-06-27 16:55
回复 12# xiaodylan


    ╮(╯▽╰)╭
是我,我也觉得这事不难,可是颠来倒去就是不能如我愿分发
作者: xiaodylan    时间: 2013-06-27 17:11
嗯现在已经解决了吧?
回复 14# royzs


   
作者: xiaodylan    时间: 2013-06-27 17:13
分享一下解决办法吧。
回复 14# royzs


   
作者: royzs    时间: 2013-06-28 14:11
回复 15# xiaodylan


   木有解决啊,这个分发完全不按常理分发,有时候这台多有时候那台多,不管我怎样配置结果都一样
作者: royzs    时间: 2013-06-28 14:12
回复 16# xiaodylan


    解决了一定分享
作者: xiaodylan    时间: 2013-06-28 15:12
你的系统使用资源参数 有限制么?
回复 18# royzs


   
作者: royzs    时间: 2013-06-28 15:20
回复 19# xiaodylan


    是说的/etc/sysctl.conf 配置和/etc/ecurity/limit.conf配置吗,这个我都打开了的,
ulimit那个1024的限制也打开了
作者: xiaodylan    时间: 2013-06-28 15:24
ulimit -a  贴上来看一下。
作者: royzs    时间: 2013-06-30 18:41
xiaodylan 发表于 2013-06-28 15:24
ulimit -a  贴上来看一下。
  1. [root@qxt2 ~]# ulimit -a
  2. core file size          (blocks, -c) 0
  3. data seg size           (kbytes, -d) unlimited
  4. scheduling priority             (-e) 0
  5. file size               (blocks, -f) unlimited
  6. pending signals                 (-i) 127080
  7. max locked memory       (kbytes, -l) 64
  8. max memory size         (kbytes, -m) unlimited
  9. open files                      (-n) 409600
  10. pipe size            (512 bytes, -p) 8
  11. POSIX message queues     (bytes, -q) 819200
  12. real-time priority              (-r) 0
  13. stack size              (kbytes, -s) 10240
  14. cpu time               (seconds, -t) unlimited
  15. max user processes              (-u) 1024
  16. virtual memory          (kbytes, -v) unlimited
  17. file locks                      (-x) unlimited
复制代码

作者: left360    时间: 2013-07-03 12:44
建议仔细研究lvs指南,及memcache中文教程。
lol
作者: wenhq    时间: 2013-07-03 13:59
建议还是下把memcache踢掉试试LVS。真有你的现象真就是鬼来了。
作者: royzs    时间: 2013-07-04 15:27
left360 发表于 2013-07-03 12:44
建议仔细研究lvs指南,及memcache中文教程。
lol


可以大概说一下原因吗
作者: royzs    时间: 2013-07-31 09:08
问题木有解决,继续顶贴
作者: royzs    时间: 2013-07-31 11:42
没人关注,我再顶
作者: onion0610    时间: 2014-07-18 12:57
顶,我也遇到同样的情况,求解释
作者: royzs    时间: 2014-07-18 13:53
回复 29# onion0610


    另外我的两台服务器一台是单网卡,一台网卡做的bonding,不知道跟这个有关系没




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2