负载均衡与TCP连接:初始连接后如何转发数据至对应后端服务器?
TCP负载均衡器的后端转发逻辑
当客户端和负载均衡器完成TCP三次握手、建立连接后,负载均衡器会基于预设的调度算法,把这条连接的所有后续数据转发到固定的后端服务器——因为TCP是面向连接的协议,必须保持会话的连续性,除非后端服务器故障才会触发切换。
常见的调度算法包括:
- 轮询(Round Robin):按顺序轮流分配新连接,比如第1个连A,第2个连B,第3个再连A,循环往复。适合后端服务器配置、负载相近的场景。
- 加权轮询(Weighted Round Robin):给性能更强的服务器设置更高权重,权重高的会拿到更多连接。比如A权重3、B权重1,每4个新连接里3个分配给A,1个给B。
- 最小连接数(Least Connections):实时统计各后端的当前连接数,把新连接甩给连接数最少的那台。适合请求处理时长差异大的场景,能更均衡地分散负载。
- IP哈希(IP Hash):对客户端IP做哈希计算,把同一IP的所有连接固定分配到同一后端。适合需要会话保持的场景,比如用户的购物车数据存在某台服务器上的情况。
- 源端口哈希:结合客户端IP和源端口做哈希,解决NAT网络下同一公网IP对应多个终端的问题,避免所有终端都被分配到同一后端。
- 应用层内容调度:部分高级负载均衡器会解析TCP载荷里的应用层内容(比如HTTP的URL、Cookie),再决定转发目标。这属于7层负载均衡范畴,虽然基于TCP,但已经深入到应用层判断。
需要注意的是,绝大多数TCP负载均衡器都是连接绑定的——一旦连接建立,这条连接的所有数据都会固定走同一台后端,直到连接断开。只有在后端服务器故障时,才会触发故障转移,把后续连接分配到其他健康节点。
内容的提问来源于stack exchange,提问作者SamuraiMelon
相关产品推荐
相关产品推荐

