HAProxy 可以透明地将 websocket 重新连接到另一个后端服务器吗?

HAProxy 可以透明地将 websocket 重新连接到另一个后端服务器吗?

我是 HAProxy 的新手,所以这可能有一个显而易见的答案,但我无法找到它。

考虑以下设置:

  • 两个后端 Web 应用程序;
  • 在 Web 应用程序前面有一个 HAProxy;
  • 许多客户端都拥有支持 websocket 的浏览器;

客户端打开与 HAProxy 的 websocket 连接,HAProxy 会以轮询的方式选择一个 Web 应用程序,假设选择了 WebApp1。websocket 连接保留在 WebApp1 上,并通过 HAProxy 进行隧道传输。

如果 WebApp1 发生故障,客户端将收到断开连接的消息,然后重新连接,并通过 HAProxy 选择 WebApp2,并且 websocket 连接将保留在通过 HAProxy 建立隧道的 WebApp2 上。

这是正常设置,对吗?

我想问的是,HAProxy 是否可以保持与客户端的 websocket 保持打开状态,并且当 WebApp1 发生故障时,透明地将连接的该端移动到 WebApp2,而客户端对此一无所知。这可能吗?

答案1

不,这是不可能的,因为新服务器对上一个连接的状态一无所知。WebSocket 不像 UDP 或 ØMQ 那样无状态。在这种情况下,客户端必须重新连接。

相关内容