发生在阿里云 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上,阿里云还是做得不错的 ,但是现 ...
随机推荐
- BZOJ2216 Poi2011 Lightning Conductor 【决策单调性优化DP】
Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt( ...
- Java 按行拆分txt
T028619630|@|聚二零|@|M|@|1983-01-01|@|0|@|110101198301010098|@||@||@||@|湖南省衡阳市耒阳市蔡伦步行街1005号302|@|42100 ...
- C# 导出图片到Word (通过XML实现)
private void ExportDataToWord(string content) { StringBuilder sbMain = new StringBuilder(); #region ...
- gradle java 简单项目使用
预备环境 gradle 配置好变量,方便生成项目 1. 环境配置 gradle wrapper 生成项目结构 ├── build.gradle ├── gradle │ └── wrapper │ ├ ...
- display的flex属性使用详解
flex的兼容性在pc端还算阔以,但是在移动端,那就呵呵了.今天我们只是学习学习,忽略一些不重要的东西. 首先flex的使用需要有一个父容器,父容器中有几个items. 父容器:container 属 ...
- Request.UrlReferrer详解
使用前需要进行判断: if (Request != null && Request.UrlReferrer != null && Request.UrlReferrer ...
- .NET基础复习一
. ] ; 等号左边开辟了一个小的栈的空间.等号右边在堆空间开辟了5个空间,会将堆里开辟的第一个空间给地址赋值给栈里的空间 ,]; productList[,] ="1号"; pr ...
- MxNet C++和python环境配置
MxNet C++和python环境配置 安装文件: 1.为了与python已经安装好的版本一致,在这个网站下载mxnet 1.0.0的源码 https://github.com/apache/inc ...
- cocos2d js 利用texture packer生成sprite
cc.spriteFrameCache.addSpriteFrames(res.winLose_plist,res.winLose_png); var frame = cc.spriteFrameCa ...
- ios生成自签名证书,实现web下载安装app
抄自http://beyondvincent.com/blog/2014/03/17/five-tips-for-using-self-signed-ssl-certificates-with-ios ...