Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145517
  • 博文数量: 68
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 20:01
文章分类

全部博文(68)

文章存档

2015年(68)

我的朋友

分类: 系统运维

2015-08-31 19:12:59

集团一门户网站,结构如下

                                                     web1

                                                  /

->(KEEPALIVED+LVS)-—  web2

                                                  \                     

                                                    web3

用ipvsadm查看连接情况时发现各个后端连接情况差异很大

日志文件里面有大量的后端检查失败然后从服务器池移除后端服务器的日志,得知这种情况是由于不断反复的从服务器池添加、移除后端所造成。

那接下来就是找找不断反复的从服务器池添加、移除后端的原因了。还是看日志,终于发现状况了,就是对后端检查失败的时间怎么会那短的?


keepalived健康检查的配置是这样的:

    delay_loop 20 //检查的间隔时间,每隔20秒检查一次

    real_server 172.x.x.x 80 {

        weight 100

        TCP_CHECK {

            connect_timeout 6     //连接超时时间

            nb_get_retry 3        //失败重试次数

            delay_before_retry 4  //失败重试的间隔时间

            connect_port 80       //连接的后端端口

        }

    }

##关于keepalved健康检测可以看 style="font-size:14px;"> 

按上面的配置,从keepalived启动或上一次检查成功开始,如果后端有问题,要经过(20+6+4+6+4+6)=46秒才会检查失败然后把后端从服务器池移除。
但从日志里面的记录来看,检查失败到称除只用了26秒(间隔时间+超时间时间),重试被忽略,只要检查超时一次就把后端从服务器池移除,就是说配置的nb_get_retry 3 与delay_before_retry 4没生效。
为了确认,我做了下面的测试:
配置不变,在一台后端上执行下面命令让keepalived检查失败,看看检查失败所经过的时间

//后端

[root@localhost ~]# date;iptables -A INPUT -s keeplivedIP -p tcp --dport 80 -j DROP

2012年 07月 03日 星期二 16:55:09 CST

//下面为keepalived上的日志


可以看到在 16:55:02 时检查的OK的,我在下一次的检查时间16:55:22(16:55:02 + 20秒)到来之前用iptables模拟故障,那么按照配置,keepalived会在16:55:42(16:55:02 +(20+6+4+6+4+6)秒)检查失败。但结果却不是这样的,keepalived会在16:55:28(16:55:02 +(20+6)秒)就报检查失败了,忽略了重试。

这个还真不知道是我配置有问题还是bug什么的,上google找了下,没结果,倒是有个外国哥们遇到了同样的问题,然后有人回复了个patch(http://marc.info/?l=keepalived-devel&m=120369079614173&w=2),据说可以搞定,不过他用的是1.1.15版,跟我用的版本不符所以没去测它,自已后面写了个检测脚本后配置MISC_CHECK搞定。

阅读(7256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~