前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >负载均衡的健康检查

负载均衡的健康检查

原创
作者头像
云售后焦俊成
发布2020-08-02 18:05:36
3.4K0
发布2020-08-02 18:05:36
举报

腾讯云的负载均衡产品发布至今,产品形态变化还是比较大的,最开始有传统型负载均衡,应用型负载均衡,后面结合自身产品特性以及云上相关用户的产品需求,逐渐开始改造,使其管理更加方便,更加适应全量云用户业务行为。

现在比较常见的是负载均衡、传统负载均衡了,架构摘抄自腾讯云官网

1、基础架构

腾讯云负载均衡当前提供四层和七层的负载均衡服务:

  • 四层主要基于腾讯自研的统一接入网关(Tencent Gateway,TGW)来实现负载均衡,TGW 具有可靠性高、扩展性强、性能高、抗攻击能力强等特点,支持 Data Plane Development Kit(DPDK)高性能转发,单集群可支持亿级并发、千万级 PPS。腾讯内部诸多业务均通过 TGW 接入服务,包括腾讯游戏、腾讯视频、微信、QQ 等。
  • 七层主要基于 Secure Tencent Gateway(STGW)实现负载均衡,STGW 是腾讯基于 Nginx 自研的支持大规模并发的七层负载均衡服务,承载了腾讯内大量的七层业务流量,包括腾讯新闻、理财通、腾讯游戏、微信等。

转发路径

负载均衡负责转发业务流量,由后端服务实际处理业务请求。CLB 与后端 CVM 之间是通过腾讯云内网进行通信的。TGW 和 STGW 均由多台服务器部署,通过集群来提供负载均衡服务。CLB 的转发路径如下图所示:

  • TCP/UDP 协议由 TGW 集群处理转发逻辑。
  • 业务流量到达后,由 TGW 通过腾讯云内网转发给后端 CVM,后端 CVM 的回包也是通过 TGW 返回给客户端。TCP SSL 协议
  • 处理 TCP SSL 协议时,业务流量会先经过 TGW 集群,而后由 STGW 集群来转发给后端 CVM。
  • 新建会话时需经过加速卡集群来进行证书验证和加解密等前置操作。
  • 业务流量到达后,在腾讯云内网中依次通过 TGW、STGW、后端 CVM,回包也依次逆向返回给客户端。HTTP/HTTPS 协议
  • 处理 HTTP/HTTPS 协议时,业务流量会先经过 TGW 集群,而后由 STGW 识别 HTTP 协议并转发给后端 CVM。
  • 新建 HTTPS 会话时需经过加速卡集群来进行证书验证和加解密等前置操作,将 HTTPS 转换成 HTTP 协议,再转发给后端 CVM。
  • 业务流量到达后,在腾讯云内网中依次通过 TGW、STGW、后端 CVM,回包也依次逆向返回给客户端。

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 的健康状态。

内网负载均衡:

  • 对于内网负载均衡(原“应用型内网负载均衡”),如果您的 CLB 属于 VPC 网络,您需要在后端 CVM 的安全组上放通 CLB 的 VIP(用作健康检查);如果您的 CLB 属于基础网络,无需在后端 CVM 的安全组上配置,默认放通健康检查 IP。
  • 对于传统型内网负载均衡,如果实例创建于2016年12月5日前且网络类型为 VPC 网络,则需要在后端 CVM 的安全组上放通 CLB 的 VIP(用作健康检查);其他类型的传统型内网 CLB 无需在后端 CVM 的安全组上配置,默认放通健康检查 IP。

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、基础架构
  • 转发路径
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档