LVS 之 RS 检测机制调整

这是好几周前处理的一个问题了,现在记录下来备忘;

问题是这样的,我们的服务节点(RS:real service)一个机房是多个的,放在LVS下进行转发;当所有RS顺序重启(服务重启时间比较长,超过一分钟,如果时间很短就没有接下来操作的必要了)的时候,调用LVS的PHP节点会发生短时间内大量的超时请求,找了下原因:

LVS通过TCP_CHECK来判断RS是否有效,一般每过3s check一次,超过5次(3s和5次都是可配置的)发现该RS无效之后就暂时把这个节点从LVS摘除;理解了LVS check机制就会发现,当某个RS重启的时候,期间3s*5(大约)的时间内LVS都还会把请求转发给该RS,导致前端出现大量的请求堆积和超时,这段时间之后LVS判断RS失效后就不会把请求转发给该RS了;

怎么解决这个问题?我这里找了一个简单的方法:

在RS重启之前就告知LVS该服务暂时关闭,显然TCP_CHECK方式就无法通知的,所以这里就改用了HTTP_CHECK的方式,LVS通过判断该RS下标识文件的MD5值来判断该RS是否有效。接下来做法就非常简单了,重启之前先将修改标识文件,LVS判断RS标识文件MD5值匹配不上(这里check时间现在也是3s*5)就会使RS失效,RS只要等待一小段时间(超过3s*5,我这里设置的30s,这个时候重启LVS已经不会将请求转发给该RS了)再重启即可,期间(修改标志文件到重启之前这段时间)LVS分发给RS请求还能照常处理,等RS重启完了之后再将标志文件重置为正常的标志文件,就不会再出现之前的问题了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值