美文网首页
【tcp】负载均衡(SLB)简介、使用最佳实践和常见问题解决方法

【tcp】负载均衡(SLB)简介、使用最佳实践和常见问题解决方法

作者: Bogon | 来源:发表于2022-07-14 00:05 被阅读0次

    UDP 健康检查

    针对四层UDP监听,健康检查通过UDP报文探测来获取状态信息,如下图所示。


    image.png

    当前 UDP 协议健康检查可能存在服务真实状态与健康检查不一致的问题:

    如果后端 ECS 服务器是 Linux 服务器,在大并发场景下,由于 Linux 的防 ICMP 攻击保护机制,会限制服务器发送 ICMP 的速度。此时,即便服务已经出现异常,但由于无法向前端返回 “port XX unreachable” 报错信息,会导致负载均衡由于没收到 ICMP 应答进而判定健康检查成功,最终导致服务真实状态与健康检查不一致。

    如果相应服务器非正常关机,由于也不会返回 “port XX unreachable” 报错信息。所以也会导致健康检查处于"正常"状态的误报。

    image.png image.png

    为啥会失败(UDP)?

    这里介绍一下UDP健康检查的原理。

    首先,健康检查通过SLB向后端发送UDP报文探测来获取状态信息。
    SLB会周期性地给后端ECS发送UDP报文,如果UDP端口的业务处于正常情况,则没有任何回应。
    而当服务出现问题,比如指定的UDP服务端口处于不可达的情况或者无服务的状态的时候,会回复ICMP的不可达报文。

    这里也会存在一个问题就是如果后端服务器已经变成了网络中的孤岛,比如出现了整个服务器的掉电、关机情况这样完全不能工作的状态,这时候的ICMP不可达报文是永远不可能收到的,因为后端的服务器无法收到SLB发来的UDP探测报文,那么在这种情况下,可能会出现误认为后端健康的情况,但是实际上这个服务可能已经宕掉了。

    为了应对这种情况,健康检查还提供用户自定义UDP应答报文来实现精确的UDP健康检查,也就是由用户自定义指定一个字符串,当后端的云服务器收到UDP健康检查的探测的时候,也回应指定的字符串,之后SLB对于这个字符串进行对比和校验,如果匹配成功则认为服务一定是健康的,这样就可以实现非常精确的健康检查。

    image.png

    而UDP的健康检查失败也有很多原因,比如在协议栈里面有可能会有ICMP限速保护。
    当频率达到一定速率的时候,ICMP会被协议栈限制,后端无法回应ICMP不可达报文,进而导致SLB收不到ICMP的报文,出现健康检查的失败情况。
    所以这部分是需要注意的,如果可能尽量将速率限制放大一些。

    常用的均衡算法有哪些?

    Random 随机

    Round Robin 轮询

    Weighted Round Robin 加权轮询

    Least Connections 最少连接

    Source Hashing 源地址散列

    参考

    想设计亿万级高并发架构,你要先知道高并发是什么?
    https://www.csdn.net/tags/NtjaIgwsMTQ0ODUtYmxvZwO0O0OO0O0O.html

    负载均衡(SLB)使用最佳实践
    http://www.uml.org.cn/zjjs/201712141.asp

    负载均衡SLB产品家族介绍
    https://help.aliyun.com/document_detail/196874.html

    负载均衡进阶:SLB常见问题解决方法
    https://developer.aliyun.com/article/222524

    SLB技术原理浅析
    https://developer.aliyun.com/article/1803

    负载均衡>传统型负载均衡CLB>CLB用户指南>健康检查>健康检查FAQ
    https://help.aliyun.com/document_detail/55205.html

    负载均衡>传统型负载均衡CLB>CLB用户指南>健康检查>健康检查概述
    https://help.aliyun.com/document_detail/85958.html

    常用的均衡算法有哪些?
    https://mp.weixin.qq.com/s/AYwnc76hfbxTZMOUoa59Tg

    负载均衡SLB高可用的四个层次
    https://developer.aliyun.com/article/247044

    再聊负载均衡SLB的主备可用区和高可用部署最佳实践
    https://developer.aliyun.com/article/247044

    阿里云SLB 会话保持常见问题
    https://help.aliyun.com/document_detail/55202.html

    阿里云SLB 高精度秒级监控
    https://help.aliyun.com/document_detail/251757.html

    阿里云 SLB 添加UDP监听
    https://help.aliyun.com/document_detail/86130.htm

    相关文章

      网友评论

          本文标题:【tcp】负载均衡(SLB)简介、使用最佳实践和常见问题解决方法

          本文链接:https://www.haomeiwen.com/subject/kyhcmrtx.html