腾讯云的负载均衡产品发布至今,产品形态变化还是比较大的,最开始有传统型负载均衡,应用型负载均衡,后面结合自身产品特性以及云上相关用户的产品需求,逐渐开始改造,使其管理更加方便,更加适应全量云用户业务行为。
现在比较常见的是负载均衡、传统负载均衡了,架构摘抄自腾讯云官网
腾讯云负载均衡当前提供四层和七层的负载均衡服务:
负载均衡负责转发业务流量,由后端服务实际处理业务请求。CLB 与后端 CVM 之间是通过腾讯云内网进行通信的。TGW 和 STGW 均由多台服务器部署,通过集群来提供负载均衡服务。CLB 的转发路径如下图所示:
2、平常问题比较多的是负载均衡健康检查报警端口异常,通过lb访问返回5xx,通过lb访问出现超时等等问题。这里先说下端口异常的情况一般怎么去排查,怎么去处理。负载均衡本身的探活是依靠负载均衡vip去探活后端服务器的,tcp协议下, 用的syn来探活,udp协议下,直接是ping探测,http协议的话也是vip发起的,会针对某个后端的业务路径发起get请求(默认)来探活。
测试实例:公网负载均衡
我们抓包看下负载均衡的健康探测是怎样的,在健康正常的时候如下
http协议下,会发送一个请求到后端服务器看是否正常响应,如果响应没问题,会发送一个rst结束探测,依次循环。
tcp协议下,仅仅是一个握手过程,通过syn包来探测,最后由vip发送rst包来结束探测。
2.1、安全组或者后端服务器内部原因导致健康检查告警:
1)cvm安全组禁止vip访问
健康检查立即异常
2)只允许vip+非监听器端口访问
针对vip的探活规则如下:
公网负载均衡:CLB 使用 VIP 来探测后端 CVM 的健康状态。
内网负载均衡:
2.2、后端服务器相关端口的进程没起来或者异常
健康探测如下:
http协议:这里因为是模拟请求到后端来负责探活的,同时负载均衡vip到后端服务器走的是内网通信,所以需要我们后端服务器的相关进程存在并监听在内网ip上,一般的检验方式如下
1)查看进程监听是否正常:
Windows netstat -ano | findstr :8081
linux netstat -anp | grep :8081
或者监听在 内网ip:端口即可
2)http协议下可以模拟curl测试返回200来测试,找台同vpc下的机器测试
Windows 系统可以直接在 CVM 内的浏览器输入内网 IP 测试是否正常,本例为:http://1.1.1.1 Linux 系统可以通过命令查看状态是否为 HTTP/1.1 200 OK,本例为:curl -I 1.1.1.1
3)tcp协议下或者http协议 的检测方式:telnet 后端服务器端口
2.3、http协议下监听规则中状态码配置
比如404状态码的探测
配置的探测路径不存在,并且不勾选4xx的情况下会出现异常
测试方式:curl -vosa '健康检查的url',返回404了
后端访问日志,也是有404的记录
2.4、关于快速回收的影响
tcp_timestamps : 是否开启 tcp timestamps 选项,timestamps 是在 tcp 三次握手过程中协商的,任意一方不支持,该连接就不会使用 timestamps 选项。 tcp_tw_recycle : 是否开启 tcp time_wait 状态回收。 tcp_tw_resuse : 开启后,可直接回收超过1s的 time_wait 状态的连接。
检查方式:sysctl -a | grep -E "net.ipv4.tcp_timestamps|net.ipv4.tcp_tw_recycle|net.ipv4.tcp_tw_reuse"
net.ipv4.tcp_timestamps和net.ipv4.tcp_tw_recycle两个参数不能同时为1
如果后端服务器开启了,我们看下效果如何
下图这个是探测异常的监控图,可以看出来如果开启快速回收后,实际不是一直探测异常,而是时好时坏,如果有短信告警,会间隔的收到端口异常告警的,所以建议不要开启开始快速回收的功能
快速回收其实一般是用来解决time_await的,这里可以参考腾讯云官网文档的建议来规避time_await的问题
https://cloud.tencent.com/document/product/214/10328#.E5.8E.9F.E5.9B.A0.E5.88.86.E6.9E.90
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。