弹性负载均衡 ELB-为什么同一客户端同时访问不同ELB实例、IP或端口会概率性超时?:问题分析

时间:2025-02-12 15:02:33

问题分析

什么场景下后端服务器上不同四层连接会出现五元组冲突?

  • 客户端请求源端口硬编码为固定端口:客户端访问不同的弹性负载均衡时,客户端请求的源端口固定,例如固定为80端口。
  • 客户端请求源端口由操作系统自动选择:由于客户端访问不同的弹性负载均衡,即访问的目的IP地址不同,从而导致操作系统选择的客户端请求源端口可能相同。
图1 后端服务器接收请求报文五元组冲突示意图

同一客户端通过两个负载均衡器访问同一个后端服务器,客户端请求源端口相同且弹性负载均衡已开启获取客户端IP(DNAT模式)功能时,连接建立过程如图1

  1. 客户端发出源IP(IP-client)和源端口(100)相同的TCP请求1和TCP请求2到两个弹性负载均衡的公网IP地址EIP-1(12.xx.xx.xx)和EIP-2(13.xx.xx.xx)。
  2. 两个弹性负载均衡的TCP监听端口都是80,收到的请求1和请求2的五元组报文如下:
    表2 负载均衡器接收五元组详情

    五元组报文

    协议

    源IP

    源端口

    目的IP

    目的端口

    五元组1-ELB

    TCP

    IP-Client

    100

    12.xx.xx.xx

    80

    五元组2-ELB

    TCP

    IP-Client

    100

    13.xx.xx.xx

    80

  3. 弹性负载均衡将接收到请求转发到同一台后端服务器(IP-E CS ),该后端服务器配置的业务端口都是90。
  4. 由于弹性负载均衡已开启获取客户端IP功能,源IP和源端口不会被修改,后端服务器接收到ELB转发的请求1和请求2,请求报文五元组如下:
    表3 后端服务器接收五元组详情

    五元组报文

    协议

    源IP

    源端口

    目的IP

    目的端口

    五元组1-ECS

    TCP

    IP-Client

    100

    IP-ECS

    90

    五元组2-ECS

    TCP

    IP-Client

    100

    IP-ECS

    90

  5. 后端服务器接收到五元组报文相同的请求1和请求2,就会导致连接建立失败。
support.huaweicloud.com/elb_faq/elb_faq_0101.html