免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6899 | 回复: 8
打印 上一主题 下一主题

很多人都问过而且没有什么人能说清楚的keepalived+lvs问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-26 01:21 |只看该作者 |倒序浏览
环境:
Rserver1:192.168.0.196
Rserver2:192.168.0.172
vip:192.168.0.18
Dserver:192.168.0.238

先说问题.我看了好多人问过目前好像没有解决
我用vmware来做测试,发现一切日志正常,但是问题来了...在ipvsadm做测试wrr调度法,权重都为1的时候,当使用vip访问会调度到r1上面,再刷..还是r1....但等过一段时间后再会变r2...
dserver配置命令如下:
ifconfig eth0:0 192.168.0.18 netmask 255.255.255.0 up
ipvsadm -At 192.168.0.18:80 -s wrr
ipvsadm -at 192.168.0.18:80 -r 192.168.0.172 -g -w 1
ipvsadm -at 192.168.0.18:80 -r 192.168.0.196 -g -w 1

两个rserver都跑脚本来配置如下:
  1. cat lvs_dr_RS.sh
  2. #!/bin/bash
  3. #
  4. # Script to start LVS DR real server.
  5. # chkconfig: - 90 10
  6. # description: LVS DR real server
  7. #
  8. .  /etc/rc.d/init.d/functions

  9. VIP=192.168.0.18

  10. host=`/bin/hostname`

  11. case "$1" in
  12. start)
  13.        # Start LVS-DR real server on this machine.
  14.         /sbin/ifconfig lo down
  15.         /sbin/ifconfig lo up
  16.         echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  17.         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  18.         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  19.         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  20.         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  21.         /sbin/route add -host $VIP dev lo:0

  22. ;;
  23. stop)

  24.         # Stop LVS-DR real server loopback device(s).
  25.         /sbin/ifconfig lo:0 down
  26.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  27.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
  28.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
  29.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

  30. ;;
  31. status)

  32.         # Status of LVS-DR real server.
  33.         islothere=`/sbin/ifconfig lo:0 | grep $VIP`
  34.         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
  35.         if [ ! "$islothere" -o ! "isrothere" ];then
  36.             # Either the route or the lo:0 device
  37.             # not found.
  38.             echo "LVS-DR real server Stopped."
  39.         else
  40.             echo "LVS-DR real server Running."
  41.         fi
  42. ;;
  43. *)
  44.             # Invalid entry.
  45.             echo "$0: Usage: $0 {start|status|stop}"
  46.             exit 1
  47. ;;
  48. esac
复制代码
第2个问题就是我用结合了keepalived与ipvsadm来做lvs高可用,遇到的问题是当使用vip访问会调度到r1上面,再刷..还是r1....但等过一段时间后再会变r2...,但是如果我把正在被访问的一个rserver的httpd关掉的话,可以在日志跟ipvsadm -Ln 看到正常的被剔除..可这时候在用vip再访问的时候就没办法访问了,要等一段时间才可以调度到另外一个rserver上面......在keepalived切换上没有半点问题.目前与ipvsadm问题一样都是不会在两个rserver之前来回切...配置如下
rserver配置脚本还是上面那一个.

keepalived的配置文件我贴出一个吧.因为backup那个只改了backup跟粘性值..
keepalived.conf如下
  1. cat keepalived.conf
  2. ! Configuration File for keepalived

  3. global_defs {
  4.    notification_email {
  5.     root@localhost
  6.    }
  7.    notification_email_from Alexandre.Cassen@firewall.loc
  8.    smtp_server 127.0.0.1
  9.    smtp_connect_timeout 30
  10.    router_id LVS_DEVEL
  11. }

  12. vrrp_instance VI_1 {
  13.     state MASTER
  14.     interface eth0
  15.     virtual_router_id 51
  16.     priority 100
  17.     advert_int 1
  18.     authentication {
  19.         auth_type PASS
  20.         auth_pass 1111
  21.     }
  22.     virtual_ipaddress {
  23.         192.168.0.18/24 dev eth0 label eth0:0
  24.     }
  25. }

  26. virtual_server 192.168.0.18 80 {
  27.     delay_loop 6
  28.     lb_algo wrr
  29.     lb_kind DR
  30.     nat_mask 255.255.255.0
  31.     protocol TCP

  32.     real_server 192.168.0.196 80 {
  33.         weight 1
  34.         HTTP_GET {
  35.             url {
  36.               path /
  37.               status_code 200
  38.             }
  39.             connect_timeout 3
  40.             nb_get_retry 3
  41.             delay_before_retry 3
  42.         }
  43.     }
  44.     real_server 192.168.0.172 80 {
  45.         weight 1
  46.         HTTP_GET {
  47.             url {
  48.               path /
  49.               status_code 200
  50.             }
  51.             connect_timeout 3
  52.             nb_get_retry 3
  53.             delay_before_retry 1
  54.         }
  55.     }
  56. notify_master "/etc/keepalived/notify.sh master 192.168.0.18"
  57. notify_backup "/etc/keepalived/notify.sh backup 192.168.0.18"
  58. notify_fault "/etc/keepalived/notify.sh fault 192.168.0.18"
  59. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2014-12-26 12:27 |只看该作者
没学过,还不会?

论坛徽章:
0
3 [报告]
发表于 2014-12-26 12:43 |只看该作者
求大神们解答下疑惑....

论坛徽章:
0
4 [报告]
发表于 2014-12-26 20:53 |只看该作者
版主能来看一下吗.....真的很有意义的问题.

论坛徽章:
0
5 [报告]
发表于 2014-12-28 21:14 |只看该作者
求大神回复

论坛徽章:
10
金牛座
日期:2014-09-16 19:02:48技术图书徽章
日期:2015-11-24 01:37:29操作系统版块每日发帖之星
日期:2015-11-18 06:20:002015年亚洲杯之沙特阿拉伯
日期:2015-04-13 17:33:462015年迎新春徽章
日期:2015-03-04 09:51:162015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2014-12-04 19:33:55白羊座
日期:2014-09-17 19:34:42巨蟹座
日期:2014-09-16 21:09:4815-16赛季CBA联赛之同曦
日期:2016-06-27 23:23:07
6 [报告]
发表于 2015-01-01 23:10 |只看该作者
回复 1# 你稳我唔到



我也在学LVS, 你用WRR就是轮询算法呗,权重一样,那肯定是轮询,R1,R2,R1,R2......当其中R1挂了,R2刚轮完,此时调度器会把请求转给R1,也许此时调度器发现R1挂了,才开始把R1踢掉。



你试试换个调度算法看看,我一般用的是默认的WLC
   

论坛徽章:
0
7 [报告]
发表于 2015-01-05 16:44 |只看该作者
你说的这方法我试过...还是出现我说的那样..我不是说他轮询..是要经过一段时间才轮询...而不是每刷一下就换一个rserver回复 6# qq58945591


   

论坛徽章:
0
8 [报告]
发表于 2015-01-07 14:18 |只看该作者
是不是做了长连接呢?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2015-01-14 15:28 |只看该作者
MASTER: router_id LVS_DEVEL_1
BACKUP: router_id LVS_DEVEL_2

priority是优先级,不是粘性值哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP