lvs故障 部分用户无法访问 (已解决)

lvs故障 部分用户无法访问

现象

LVS+Keepalived+Nginx架构中,某天突然发现网站www.fffmo.com 部分用户访问巨慢或无法访问,有些可以访问。

产生原因

查看当前后端web连接信息
ipvsadm -Ln

Virtual Server version 1.2.1 (size=4096) 
  
 Prot LocalAddress:Port Scheduler Flags 
  
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn 
  
 TCP  192.168.10.20:80 wlc 
  
   -> 192.168.10.7:80                 Route   100    2         13         
  
   -> 192.168.10.6:80                 Route   100    120       13         
  
   -> 192.168.10.5:80                 Route   100    1363      45 

 
LVS 选择的轮训方式为加权最少连接

real_server 192.168.10.7  80  { 
  
         weight 100         
         TCP_CHECK { 
         connect_timeout 10  
         nb_get_retry 3 
         delay_before_retry 3 
         connect_port 80 
         } 
 }

配置文件我们发现LVS默认用的是TCP检测方式,只要80端口能通,请求就会转发到后端服务器。 但实际wget 具体页面过去是502。10.7服务器80端口对于LVS来说是打开的,所以LVS会把请求转发给给它。
这就造成了为什么部分用户可以访问,有的用户无法访问的问题。

解决方案

临时解决方案:10.7服务器的服务直接暂停。让lvs自动把它出。直到他恢复为止。
终极解决方案:LVS对后端Nginx URL的检测方式由端口改为 具体页面请求。这样避免端口检测是通的但服务已经死掉的情况。
如果页面请求ok 说明后端服务是通的。

real_server 192.168.10.7 80 { 
  
         weight 100 
  
         HTTP_GET { 
  
         url { 
  
         path /monitor/check.php 
  
         status_code 200 
  
         } 
         connect_timeout 10 
  
         nb_get_retry 3 
  
         delay_before_retry 3 
  
      } 
  
 } 
赞(1) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » lvs故障 部分用户无法访问 (已解决)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏