阿里云 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 层的一次故障记录的更多相关文章

  1. 阿里云SLB后Nginx、Tomcat获取真实IP

    一.SLB后Nginx如何获取真实IP 前提:nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加 ...

  2. [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断

    大家好,阿里云将于3月10日23:00-4:00对负载均衡服务(SLB)做升级操作,升级期间SLB网络连接会有约4-8次闪断.由此给您带来麻烦,敬请谅解! 阿里云SLB升级公告内容如下: 尊敬的用户: ...

  3. [云上天气预报-有时有闪电]2月3日23:00-4:00阿里云SLB升级期间网络会闪断

    大家好,2月3日23:00-2月4日4:00,阿里云将对SLB(负载均衡)进行升级,在升级期间,SLB会有约4-8次的网络闪断.由此给您带来麻烦,望谅解! 阿里云官方公告内容如下: 尊敬的用户: 您好 ...

  4. 解决阿里云SLB无法添加https证书的问题

    私钥是在Linux中通过下面的openssl命令生成的: openssl req -new -newkey rsa:2048 -nodes -keyout cnblogs.key -out cnblo ...

  5. 阿里云SLB出现502 Bad Gateway 错误排查解决方法

    502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...

  6. 记阿里云SLB后配置Nginx反向代理百度地图API的坑

    需求: 百度的原始请求:https://api.map.baidu.com/place/v2/suggestion?query=s&region=sc&city_limit=true& ...

  7. 阿里云SLB负载均衡与使用SSL域名证书

    阿里云SLB负载均衡与使用SSL证书 1.购买两台ECS服务器,这就是后台服务器,在这两个服务器上面部署你的网站,注意网站的端口要一样:比如都是 88. 2.在阿里云控制台的菜单里找到 负载均衡,创建 ...

  8. 阿里云SLB快速切换至https

    域名caifuxiang.com是直接解析到阿里云SLB的,运行了好几年的http服务,今天通过修改配置快速切换到了https,莫名就感觉更上档次了! 首先,SSL证书 服务可以提供免费单域名证书 w ...

  9. 阿里云slb实现多域名https

    刚开始接锅,没注意原来站点的https配置在slb上,在服务器上配置一顿操作猛如虎,细细检查一遍,感觉良好,一测试发现不对劲,检查发现原来https配置在阿里云slb上,阿里云还是做得不错的 ,但是现 ...

随机推荐

  1. Luogu 3806 点分治1

    Luogu 3806 点分治 要分清楚各个函数的作用及互相调用的关系. 因为是无根树,找重心的时候,父亲一边的所有节点也可以看做是一颗子树. #include<bits/stdc++.h> ...

  2. 20179223《Linux内核原理与分析》第一周学习笔记

    第一周实验 尝试创建两个文件,用通配符查找这两个文件:在创建文件的时候,需要同时创建多个文件的方法运行. 根据作业要求,实现一个lilux命令. 根据作业要求添加一个用户loutest,使用sudo创 ...

  3. 使用python处理selenium中的鼠标悬停问题

    # 导入selenium中的actionchains的方法 from selenium.webdriver.common.action_chains import ActionChains #识别需要 ...

  4. 20165222 实验三 敏捷开发与XP实践

    实验内容: 1.XP基础 2.XP核心实践 3.相关工具 二.具体实验内容 (一)代码规范格式化 总结:感觉就那个Code->Reformate Code代码重新格式化最好用,其他的我都点了下, ...

  5. 文件上传 jqueryForm

    关于formData方式ajax上传文件的方式在笔者随笔开发日记5-18中有描述,在此不做记录. 由于之前使用的是formData方式上传文件,但是在后期处理浏览器兼容问题的时候出现头痛的事情,for ...

  6. LG3835 【模板】可持久化平衡树

    题意 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作) 查询x数的排名 ...

  7. 配置 VS Code 调试 JavaScript

    原文:配置 VS Code 调试 JavaScript 1. 安装 Debugger for Chrome 扩展.Open in Browser  扩展.View In Browser 扩展 2.用v ...

  8. Proteus 仿真运算放大器出现 GMIN 问题

    Proteus 仿真运算放大器出现 GMIN 问题 为了仿真一个反相运算放大器,在仿真时出现 GMIN 问题,将 后面的 4.7UF 去掉就可以正常仿真. 初步检查是因为输入频率太低,输入时我用的是 ...

  9. php mysql 字符集(三) (转)

    http://bbs.csdn.net/topics/390097514 gbk页面插入数据到utf8表,然后取出到gbk页面 首先, 这个set names x等价于SET character_se ...

  10. linux CentOS 安装rz和sz命令 lrzsz

    lrzsz在linux里可代替ftp上传和下载. lrzsz 官网入口:http://freecode.com/projects/lrzsz/ lrzsz是一个unix通信套件提供的X,Y,和ZMod ...