ELB UDP健康检查常见故障分析

天翼云开发者社区
• 阅读 15

本文分享自天翼云开发者社区《ELB UDP健康检查常见故障分析》,作者:王****宁

什么是UDP健康检查 UDP是面向非连接的一种协议,在发送数据前不会通过进行三次握手建立连接,UDP健康检查的实现过程如下: 1.健康检查的节点根据健康检查配置,向后端发送ICMP request 消息。 如果健康检查节点收到了后端服务器返回的ICMP reply消息,则认为服务正常,继续进行健康检查。 如果健康检查节点没有收到后端服务器返回的ICMP reply消息,则认为服务异常,判定健康检查失败。 2.健康检查的节点收到ICMP reply消息后,会给后端服务器发送UDP探测报文。 如果在【超时时间】之内,健康检查的节点服务器收到了后端服务器返回的port unreachable的ICMP消息,则认为服务异常,判定健康检查失败。 如果在【超时时间】之内,健康检查的节点服务器没有收到后端服务器返回的ICMP错误信息,则认为服务正常,判定健康检查成功。

常见故障分析 由于同一台后端服务器可以被添加到不同的负载均衡监听器。当不同的监听器分别向同一台后端服务器发起健康检查是。由于后端服务器限制了ICMP消息产生的速率,导致ICMP reply 不能在超时时间内到达健康检查节点,就被判定为服务异常。产生误报。

异常排查方法 1.Linux系统下,检查ICMP消息速率的限制。默认值1000 sysctl -q net.ipv4.icmp_ratelimit

2.取消 port unreachable消息产生的速率限制。 sysctl -w net.ipv4.icmp_ratemask=6160

注意事项 1.负载均衡健康检查是通过UDP报文和Ping报文探测来获取后端云服务器的状态信息。针对此种情况,用户需要确保后端云服务器开启ICMP协议,确认方法如下: 用户登录后端云服务器,以root权限执行以下命令: cat /proc/sys/net/ipv4/icmp_echo_ignore_all 若返回值为1,表示ICMP协议关闭;若为0,则表示开启。

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

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
tcp、netstat、dns
传输层协议与应用掌握TCP的封装和工作原理掌握UDP的封装和工作原理了解常用的TCP和UDP端口号对TCP和UDP首部能够进行分析!(https://oscimg.oschina.net/oscnet/7614088914017ad2c404c2a31fd3a0b3c92.png)传输层的作用IP层提供点到点的连接传输层提
Easter79 Easter79
3年前
tcp编程、socket编程、redis
tcp编程(需要建立连接,三次握手,四次挥手,然后发送信息流,数据包是有序的)udp编程(知道IP、端口直接发送数据,数据包可能是无序的)1、客户端和服务器客!(http
Wesley13 Wesley13
3年前
Udp简单的服务器与客户端07
UDP协议:UDP协议传输数据是不可靠的,在java中,java.util.DatagramSocket负责接收和发送UDP数据报,java.util.DatagramPacket表示UDP数据表。每个DatagramSocket与一个本底地址绑定,每个DatagramSocket可以把UDP数据报发送给任意一个远程DatagramSocket,
Wesley13 Wesley13
3年前
IM总结
发送消息UDP打洞,登录的时候HTTP。登录成功后,会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登录的时候,端口是8000。如果采用UDP协议,通过服务器中转方式。UDP协议是不可靠协议,它只管发送,不管对方是否收到的。如果client使用UDP协议发送消息后,服务器收到该包,需要使用UDP协议发回一个
Stella981 Stella981
3年前
Android 中的Socket通讯机制
Android中的网络通讯无非Http和Socket,Socket有两种形式——TCP和UDP。TCP与UDP区别TCP传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到
Wesley13 Wesley13
3年前
TCP UDP有什么区别
前言计算机分层中的传输层,主要是负责计算机之间的数据传输,TCP和UDP都属于传输层协议。在实际开发过程中,需要根据实际需求的来选择适当的传输协议。在这里我们简单总结下TCP、UDP的特点和区别以及实际开发中如何选择。TCP和UDP的定义TCP是面向有连接,可靠的流协议。保证两端通讯主机之间
Easter79 Easter79
3年前
TCP三次握手与Linux的TCP内核参数优化
感谢各位技术大佬的资料分享,这里我把我理解的内容做一个整理一:TCP的三次握手1、TCP简述  TCP是一个面向连接的协议,在连接双方发送数据之前,首先需要建立一条连接。TCP建立连接可以简单称为:三次握手(说白了就是建立一个TCP连接的时候,客户端
Stella981 Stella981
3年前
Netty实战十三之使用UDP广播事件
1、UDP的基础知识我们将会把重点放在一个无连接协议即用户数据报协议(UDP)上,它通常用在性能至关重要并且能够容忍一定的数据报丢失的情况下。面向连接的传输(如TCP)管理了两个网络端点之间的连接的建立,在连接的生命周期内的有序和可靠的消息传输,以及最后,连接的有序终止。相比之下,在类似于UDP这样的无连接协议中,并没有持久化连接这样的概念,并且每个
Wesley13 Wesley13
3年前
TCP是如何实现三次握手的?
什么是三次握手1.TCP是网络传输层的协议,提供面向连接的可靠的字节流服务,要通信得先建立连接2.所谓三次握手就是指,建立一个TCP连接时,需要CLient与Server发送三个包,确认连接的建立3.这一过程由Client执行connect触发简单描述下三次握手的具体过程第一
API 小达人 API 小达人
1年前
如何在 Eolink Apikit 中发起 TCP/UDP 文档测试
TCP/UDP是两种常用的网络传输协议。TCP协议提供可靠的连接,而UDP协议提供不可靠的连接。
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
745
粉丝
16
获赞
40