LVS故障解决案例解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

 记上一篇LVS防火墙配置后,接下来想分享一篇LVS故障排错案例,仅供大家参考和学习,LVS使用过程中,我们都会遇到很多的问题,但是遇到问题后,我们需要该如何处理呢?那这里分享我的解决思路。

LVS+Keepalived+Nginx架构中,某天突然发现网站www.wuguangke.cn 部分用户访问巨慢,甚至无法访问,那这个问题我们该如何定位呢?分两种情况:如果有监控,如果有报警短信再好不过了。然后可以很快的定位到某一台机器。

如果没有监控,或者其他的原因没法看监控,那我们该如何排查呢?如下步骤:
 
  1. 第一步:首先我们想到ping www.wuguangke.cn ,通过ping返回数据部正常

  2. 第二步:登录LVS服务器,ipvsadm –Ln 查看当前后端web连接信息,显示如下: 
  3.  
  4. [root@LVS-Master keepalived]# ipvsadm -Ln 
  5.  
  6. IP Virtual Server version 1.2.1 (size=4096) 
  7.  
  8. Prot LocalAddress:Port Scheduler Flags 
  9.  
  10.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn 
  11.  
  12. TCP  192.168.1.10:80 wlc 
  13.  
  14.   -> 192.168.1.6:80                 Route   100    2         13         
  15.  
  16.   -> 192.168.1.5:80                 Route   100    120       13         
  17.  
  18.   -> 192.168.1.4:80                 Route   100    1363      45 

通过LVS信息,我们看到LVS 选择的轮训方式为加权最少连接,而网站也是部分无法访问,我们可以猜测是其中一台web服务器无法访问或者访问巨慢导致,我们会想难道LVS不会自己判断吗?想法很好,

那我们接下来查看keepalived.conf配置,部分截图如下:
 
  1. real_server 192.168.1.4  80  { 
  2.  
  3.         weight 100         
  4.         TCP_CHECK { 
  5.         connect_timeout 10  
  6.         nb_get_retry 3 
  7.         delay_before_retry 3 
  8.         connect_port 80 
  9.         } 
  10. }

通过配置文件我们发现LVS默认用的是TCP检测方式,只要80端口能通,请求就会转发到后端服务器。

紧接着在LVS /tmpwget  http://192.168.1.4/  返回502超时,另外几台nginx返回正常,1.4服务器80端口对于LVS来说是打开的,所以LVS会把请求转发给给它。

这就造成了为什么部分用户可以访问,有的用户无法访问的问题。

登录1.4 nginx服务器,pkill nginx ,临时停止nginx保证服务保证正常访问,然后再查看nginx日志发现是后端程序连接一台数据库出现的问题。

回过头来我们会发现,LVS不会检测你后端502超时错误,只关心80端口是否开启对于应用来说,这样检测明显不足,那我们需要如何处理呢?增加LVS对后端Nginx URL的检测,能访问URL则表示服务正常,直接看代码:
 
  1. real_server 192.168.1.4 80 { 
  2.  
  3.         weight 100 
  4.  
  5.         HTTP_GET { 
  6.  
  7.         url { 
  8.  
  9.         path /monitor/warn.jsp 
  10.  
  11.         status_code 200 
  12.  
  13.         } 
  14.         connect_timeout 10 
  15.  
  16.         nb_get_retry 3 
  17.  
  18.         delay_before_retry 3 
  19.  
  20.      } 
  21.  

我们对比之前的检测方式,从单纯的80端口到现在的URL检测,后端如果某台出现502超时错误LVS会自动踢出,等后端恢复后自动添加。自此故障解决完毕!欢迎大家共同交流和学习!


本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1103096


相关文章
|
1月前
|
数据采集 人工智能 安全
数据治理的实践与挑战:大型案例解析
在当今数字化时代,数据已成为企业运营和决策的核心资源。然而,随着数据量的爆炸性增长和数据来源的多样化,数据治理成为了企业面临的重要挑战之一。本文将通过几个大型案例,探讨数据治理的实践、成效以及面临的挑战。
数据治理的实践与挑战:大型案例解析
|
4天前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
|
13天前
|
Prometheus 监控 Cloud Native
实战经验:成功的DevOps实施案例解析
实战经验:成功的DevOps实施案例解析
29 6
|
17天前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
38 4
|
16天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
13 1
|
29天前
|
数据格式
常用的Lambda表达式案例解析,工作中都会用到!
常用的Lambda表达式案例解析,工作中都会用到!
|
2月前
|
缓存 网络协议 Linux
DNS解析工具使用案例
关于如何在Windows和Linux操作系统下使用DNS解析工具的案例,包括查看和清空DNS缓存、使用whois查询工具以及安装和使用dig工具进行DNS记录查询。
37 2
DNS解析工具使用案例
|
1月前
|
存储 数据采集 监控
CDGA\如何建立实现数据治理的效率价值框架:实践案例解析
数据治理是一个持续优化的过程。组织应建立健全的监督与评估机制,定期对数据治理工作进行评估,发现问题及时整改。广东药科大学通过数据全景图和数据监控大屏,实现了对数据治理成果的动态、多维度呈现与监控,为科学管理决策提供了有力支撑。
|
3月前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`<h:inputText>`、`<h:dataTable>`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
42 0
|
3月前
|
UED 存储 自然语言处理
【语言无界·体验无疆】解锁Vaadin应用全球化秘籍:从代码到文化,让你的应用畅游世界每一个角落!
【8月更文挑战第31天】《国际化与本地化实战:构建多语言支持的Vaadin应用》详细介绍了如何使用Vaadin框架实现应用的国际化和本地化,提升用户体验和市场竞争力。文章涵盖资源文件的创建与管理、消息绑定与动态加载、日期和数字格式化及文化敏感性处理等方面,通过具体示例代码和最佳实践,帮助开发者构建适应不同语言和地区设置的Vaadin应用。通过这些步骤,您的应用将更加灵活,满足全球用户需求。
56 0

推荐镜像

更多
下一篇
无影云桌面