发生在阿里云 SLB 4 层的一次故障记录
阿里云 SLB 与 ECS 之间发生故事。环境如下:
SLB api-node: 该 SLB 后端接着 10 台节点服务器
SLB sql-node: 该 SLB 后端接着 2 台节点服务器
问题描述:
访问 web 站点发现,连续点击几次页面就会有一次请求时间很长 30s 。
这个 30s 是超过了 php.ini 中 max_execution_time = 30 该参数的设置最大值,最终请求失败,返回 400 。
分析故障现象应该是有一台 api-node 有问题,当请求被轮询到该节点时,请求失败。
通过监控服务器观看,各个 api-node 负载都均衡,无法直观的发现是哪台服务器故障。
(如果有每台 api-node 的访问日志,做了日志分析,可以通过统计图直观的反应出来)
最终写脚本拿问题URL去循环请求每台 api-node ,发现了这台问题服务器。
通过开发人员调试代码,发现问题为该节点连接数据库故障。具体情况如下:
1、该 ECS 请求三四次数据库的SLB就会出现连接超时。( 直接使用 mysql 命令连接 )
2、该 ECS 单独去请求数据库SLB后端的服务器,没有任何问题。
通过上面的测试,排除服务器环境、代码、数据库服务器的问题。最终问题定位在数据库的SLB上。
由于是做 mysql 的负载均衡,使用的是 TCP 协议的 4 层负载均衡。
向阿里云发起工单,提交问题,经过一系列排查,最终阿里云给出故障原因及解决方法如下:
"这是由于您使用的slb 4层tcp 协议,由于slb 的一些底层架构原因引起的,这个问题我们也已经向后端反馈过了;
只要客户端ecs 的内网ip 和 slb 后端的ecs 内网ip 有在一个路由段的,就会出现这个问题;
建议您可以手工删除slb 后端ecs 重复的路由条目,或者将您的slb 配置修改成7层http 协议"
解决方法:
1、登录问题 ECS 查看路由表
shell > route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
159.110.44.0 0.0.0.0 255.255.252.0 U eth1
110.27.240.0 0.0.0.0 255.255.252.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth1
172.16.0.0 110.27.243.247 255.240.0.0 UG eth0
100.64.0.0 110.27.243.247 255.192.0.0 UG eth0
10.0.0.0 110.27.243.247 255.0.0.0 UG eth0
0.0.0.0 159.110.47.247 0.0.0.0 UG eth1
2、登录数据库 SLB 后端 ECS 查看路由表 ( 与问题 ECS 内网同一网段的服务器 )
shell > route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
59.110.20.0 0.0.0.0 255.255.252.0 U eth1
110.27.240.0 0.0.0.0 255.255.252.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth1
172.16.0.0 110.27.243.247 255.240.0.0 UG eth0
100.64.0.0 110.27.243.247 255.192.0.0 UG eth0
10.0.0.0 110.27.243.247 255.0.0.0 UG eth0
0.0.0.0 159.110.23.247 0.0.0.0 UG eth1
3、删除这台数据库服务器内网地址与问题 ECS 重复的路由 (只删数据库服务器这台就可以)
shell > route del -net 110.27.240.0 netmask 255.255.252.0 dev eth0 shell > route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
159.110.20.0 0.0.0.0 255.255.252.0 U eth1
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth1
172.16.0.0 110.27.243.247 255.240.0.0 UG eth0
100.64.0.0 110.27.243.247 255.192.0.0 UG eth0
10.0.0.0 110.27.243.247 255.0.0.0 UG eth0
0.0.0.0 159.110.23.247 0.0.0.0 UG eth1
# 经测试,问题解决。最终关闭工单提示,实际处理时长:6小时2分钟
# 记录:确保以后新买的需要访问数据库 SLB 的 ECS 不与数据库 SLB 后端的 ECS 在同一内网段,如果在,删除数据库 SLB 后端 ECS 重复路由。
发生在阿里云 SLB 4 层的一次故障记录的更多相关文章
- 阿里云SLB后Nginx、Tomcat获取真实IP
一.SLB后Nginx如何获取真实IP 前提:nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加 ...
- [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断
大家好,阿里云将于3月10日23:00-4:00对负载均衡服务(SLB)做升级操作,升级期间SLB网络连接会有约4-8次闪断.由此给您带来麻烦,敬请谅解! 阿里云SLB升级公告内容如下: 尊敬的用户: ...
- [云上天气预报-有时有闪电]2月3日23:00-4:00阿里云SLB升级期间网络会闪断
大家好,2月3日23:00-2月4日4:00,阿里云将对SLB(负载均衡)进行升级,在升级期间,SLB会有约4-8次的网络闪断.由此给您带来麻烦,望谅解! 阿里云官方公告内容如下: 尊敬的用户: 您好 ...
- 解决阿里云SLB无法添加https证书的问题
私钥是在Linux中通过下面的openssl命令生成的: openssl req -new -newkey rsa:2048 -nodes -keyout cnblogs.key -out cnblo ...
- 阿里云SLB出现502 Bad Gateway 错误排查解决方法
502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...
- 记阿里云SLB后配置Nginx反向代理百度地图API的坑
需求: 百度的原始请求:https://api.map.baidu.com/place/v2/suggestion?query=s®ion=sc&city_limit=true& ...
- 阿里云SLB负载均衡与使用SSL域名证书
阿里云SLB负载均衡与使用SSL证书 1.购买两台ECS服务器,这就是后台服务器,在这两个服务器上面部署你的网站,注意网站的端口要一样:比如都是 88. 2.在阿里云控制台的菜单里找到 负载均衡,创建 ...
- 阿里云SLB快速切换至https
域名caifuxiang.com是直接解析到阿里云SLB的,运行了好几年的http服务,今天通过修改配置快速切换到了https,莫名就感觉更上档次了! 首先,SSL证书 服务可以提供免费单域名证书 w ...
- 阿里云slb实现多域名https
刚开始接锅,没注意原来站点的https配置在slb上,在服务器上配置一顿操作猛如虎,细细检查一遍,感觉良好,一测试发现不对劲,检查发现原来https配置在阿里云slb上,阿里云还是做得不错的 ,但是现 ...
随机推荐
- biginteger转Long
pjProDocumentFolderTreeNodeBySeqnoDTO.setFolderId(((java.math.BigInteger) objects[0]).longValue()); ...
- python string 之 format
python 在 2.6之后支持了string的format功能, 很强大, 应该成为使用习惯. http://blog.csdn.net/handsomekang/article/details/9 ...
- tomcat nginx 证书切换
1. 导出公钥 keytool -export -alias tomcat -keystore <you jks>wsriakey.keystore -file <outputfil ...
- Cucumber 之Gherkin
1.Gherkin简介: Cucumber是一个解释程序,就像ruby命令执行解释 .rb文件里的Ruby代码一样,Cucumber用来执行解释 .feature文件里的Gehrkin代码. 2. ...
- smarty核心思想 自制模板引擎
<?php $tit = '今天下雨了,淋了半条街'; function tit($file){ //读文件 $h = file_get_contents($file); $h = str_re ...
- C++代码规范之命名
C++代码规范之命名 一.命名的两个基本原则 1.含义清晰,不易混淆: 2.不和其它模块.系统API的命名空间相冲突. 二.命名通则 1.在所有命名中,都应使用标准的英文单词或缩写:不得使用拼音或拼音 ...
- 谈谈GPU与FPGA的一些看法
从几个方面来介绍一下GPU和FPGA. 从峰值性能来说,GPU(10Tflops)远远高于FPGA(<1TFlops).GPU上面成千上万个core同时跑在GHz的频率上还是非常壮观的,最新的G ...
- jmeter数据关联_后置处理器_正则表达式提取器
- nginx基于TCP的反向代理
一.4层的负载均衡 Nginx Plus的商业授权版开始具有TCP负载均衡的功能.从Nginx 1.7.7版本开始加入的,现在变成了一个商业收费版本,想要试用,需要在官网申请.也就是说,Nginx除了 ...
- POJ 2549 Sumsets(折半枚举+二分)
Sumsets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11946 Accepted: 3299 Descript ...