为什么HAProxy在tcp模式下不支持“option redispatch”?

时间:2015-12-25 10:12:42

标签: tcp haproxy

在HTTP模式下,如果设置了“option redispatch”,HAProxy将自动重试另一个后端(如果当前的一个已关闭)。从客户端看,整个过程是透明的,预计响应时间会比正常情况更长。

我想知道为什么在TCP模式下支持此选项?从理论上讲,它应该是可能的。

1 个答案:

答案 0 :(得分:0)

问题是HTTP会话的工作方式。会话令牌存储在HTTP cookie中。来自Wikipedia

  

会话令牌是生成的唯一标识符,并从服务器发送到客户端以标识当前的交互会话。客户端通常将令牌存储并作为HTTP cookie发送和/或作为GET或POST查询中的参数发送。

因此,HAProxy无法在TCP模式下读取/操作会话信息,因为它必须首先打开HTTP连接才能读取cookie数据。如果HAProxy无法读取会话信息,那么就无法知道客户端是否正在尝试连接到死服务器,因此是否应该尝试重新分配它。

这已在option redispatch的{​​{3}}备份。