负载均衡服务TCP端口健康检查成功,为什么在后端业务日志中出现网络连接异常信息?

原文: https://help.aliyun.com/document_detail/127193.html?spm=a2c4g.11186623.6.606.5b7a7ee5RD6Xai

问题现象:

负载均衡后端配置TCP服务端口后,后端业务日志中频繁出现类似如下网络连接异常错误信息。经进抓包分析,发现相关请求来自负载均衡服务器,同时负载均衡主动向服务器发送了RST数据包。

问题原因:

该问题和负载均衡的健康检查机制有关。

由于TCP对上层业务状态无感知,同时,为了降低负载均衡健康检查成本和对后端业务的冲击,当前负载均衡针对TCP协议服务端口的健康检查只会做简单的TCP三次握手,而后直接发送RST包断开TCP连接。数据交互流程如下:

  1. 负载均衡服务器向后端负载均衡服务端口发送SYN请求包;
  2. 后端服务器收到请求后,如果端口状态正常,则按照正常的TCP机制返回相应的SYN+ACK应答包;
  3. 负载均衡服务器成功收到后端服务端口应答后,则认为端口监听是正常的,判定健康检查成功;
  4. 负载均衡服务器向相应TCP服务端口直接发送RST包主动关闭连接,结束本次健康检查操作,且没有继续发送业务数据。

如上所述,由于健康检查成功后,负载均衡服务器直接发送TCP RST包中断了连接,并没有做进一步的业务数据交互,导致上层业务(比如Java连接池等)认为相应的连接是异常的,所以会出现Connection reset by peer等错误信息。

解决方案:

    • 更换TCP协议为HTTP协议。
    • 在业务层面,对来自SLB服务器IP地址段的相关请求做日志过滤,忽略相关错误信息。

最新文章

  1. 在UP Board 上搭建M——L服务器
  2. python 线程之threading(五)
  3. YII2学习第一天
  4. hdu 5762 Teacher Bo 曼哈顿路径
  5. javascript的window.onload()方法和jQuery的$(document).ready()的对比
  6. ZOJ 1016 Parencodings
  7. 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析
  8. 快速同步mysql数据到redis中
  9. ArcGIS学习记录—dbf shp shx sbn sbx mdb adf等类型的文件的解释
  10. [转]ASP.NET MVC 入门11、使用AJAX
  11. [科普]MinGW vs MinGW-W64及其它
  12. iOS 6 Passbook 入门 1/2
  13. 原型模式-Prototype(Java实现)
  14. Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法
  15. Django REST framework 简介
  16. JavaScript基础笔记(一)基本概念
  17. 「功能笔记」Spacemacs+Evil备忘录
  18. 基于 Apache 在本地配置多个虚拟主机
  19. 部署showdoc
  20. ES6-let & const

热门文章

  1. Linux在丢失的情况下重置密码
  2. USB之基本协议和数据波形1
  3. Linux磁盘管理——MBR 与 GPT
  4. VueCli3 使用 NutUI (按需加载、定制化主题)
  5. Union-Find(并查集): Dynamic Connectivity 问题
  6. python同时取每个列表的第一个元素
  7. 脚本安装redis
  8. C二维字符数组的使用及如何获取二维数组的总行数和总列数!
  9. Problem 4 dp
  10. codevs 4014EZ系列