本文分享自天翼云开发者社区《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 应答进而判定健康检查成功,最终导致服务真实状态与健康检查不一致。

ELB UDP健康检查常见故障分析的更多相关文章

  1. ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇

    背景 笔者所在的公司正在进行微服务改造,这其中服务治理组件是必不可少的组件之一,在一番讨论之后,最终决定放弃 Zookeeper 而采用 Consul 作为服务治理框架基础组件.主要原因是 Consu ...

  2. ASP.NET Core之跨平台的实时性能监控(2.健康检查)

    前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性 ...

  3. keepalived健康检查方式【转】

    keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...

  4. Nginx负载均衡中后端节点服务器健康检查的操作梳理

    正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...

  5. keepalive的工作原理和如何做到健康检查

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的 ...

  6. Kubernetes Pod 健康检查

    参考文档: https://jimmysong.io/kubernetes-handbook/guide/configure-liveness-readiness-probes.html 一.Pod的 ...

  7. Nginx实战系列之功能篇----后端节点健康检查(转)

    公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出:   1.ngx_http_proxy_m ...

  8. CentOS7.4 Keepalived+LVS 负载均衡 后台节点健康检查

    主机信息 VIP 10.10.10.55 LVS01 10.10.10.59 Web01 10.10.10.60 Web02 10.10.10.61 一.apache简单配置 1.(10.10.10. ...

  9. Springboot监控之一:SpringBoot四大神器之Actuator之2--springboot健康检查

    Health 信息是从 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring Boot 内置了一些 HealthIndicator. ...

  10. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

随机推荐

  1. SQLSERVER 2019数据库(可疑) 数据修复案例

    2019 数据库 , 在正常使用过程中 , 服务器突然断电 , 重新启动服务器后 , 数据库变为(可疑). [数据恢复故障分析] 由于数据库在正常读写操作过 , 服务器突然断电 , 导致数据库无法把所 ...

  2. Java 10大优点—Part4—Java内存模型

    本文由 ImportNew - 靳禹 翻译自 zeroturnaround.如需转载本文,请先参见文章末尾处的转载要求. 在忙着参加在爱沙尼亚进行的 TEDx talk 演讲活动以及在比利时举办的一届 ...

  3. golang之sync包

    介绍sync包中常用的方法, - sync:提供基本的同步原语(比如Mutex.RWMutex.Locker)和 工具类(Once.WaitGroup.Cond.Pool.Map) - sync/at ...

  4. Pytorch 手写数字识别 深度学习基础分享

    本篇是一次内部分享,给项目开发的同事分享什么是深度学习.用最简单的手写数字识别做例子,讲解了大概的原理. 手写数字识别 展示首先数字识别项目的使用.项目实现过程: 训练出模型 准备html手写板 fl ...

  5. .NET 使用 ZXing.Net 生成二维码,并识别

    .NET 使用 ZXing.Net 生成二维码,并识别 前言 前面已经分享给很多创建二维码,条形码...等一系列的方式 各有优缺点,暂时不做评价.今天推荐ZXing.Net .也是比较全面的一种方式, ...

  6. Postman无法启动

    前情 最近在捣鼓node.js,需要一个接口测试工具,而Postman是业界有名的接口测试工具,自然接口测试就用它了. 坑 已经有一段时间没启动Postman了,突然发现启动一直卡在修复界面,重启也不 ...

  7. Shiro简单入门+个人理解(2)

    今天开始了Shiro认证及授权的部分,认证及授权是Shiro的主要功能,虽然Shiro还具有加密等功能,但在实际开发时,很少会使用到,在公司一般都有自己的一套加密方式,具体我就不说话了,毕竟有保密协议 ...

  8. 在 ASP.NET Core 中使用 Tailwind

    在 ASP.NET Core 中使用 Tailwind https://khalidabuhakmeh.com/install-tailwind-css-with-aspnet-core 表单和函数是 ...

  9. JEP 462 结构化并发是一个很愚蠢的提案

    https://openjdk.org/jeps/462 Motivation Developers manage complexity by breaking tasks down into mul ...

  10. 【uni-app】【01】底部导航栏与页面切换

    1.(配置文件在哪)uni-app 路由控制是在 pages.json文件中的. 2.(基本配置项有哪些)初学的时候主要有三个配置项,①pages ② globalStyle ③ tabbar [!T ...