在实现负载平衡器时将同一房间的请求路由到使用 Web 套接字的同一服务器

Posted

技术标签:

【中文标题】在实现负载平衡器时将同一房间的请求路由到使用 Web 套接字的同一服务器【英文标题】:Route requests for the same room to the same server which uses web sockets when implementing a load balancer 【发布时间】:2019-05-15 12:39:02 【问题描述】:

我有一个在线白板,用户根据房间名称所在的 URL 的最后一部分连接到同一个房间。 url 是动态的,并且是为每个新房间创建的。

例如:https://.../room/123456

我使用 Web 套接字在客户端和服务器之间进行通信。用户根据房间名称订阅相同的频道。我将实现一个负载平衡器服务器来处理流量。由于我们在该特定房间的服务器上创建了一个会话,因此房间中的每个用户都必须被定向到该特定服务器。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

我认为使用 uri balancing method 创建代理可能是您想要的。默认情况下,它将根据您的 URL 路径的哈希分配流量。

backend bk_whiteboard
    balance uri

【讨论】:

非常感谢@mweiss。关于如何处理 websockets 的任何想法? @YasithPrabuddhaka HAProxy 有一篇关于如何优化 websocket haproxy.com/blog/websockets-load-balancing-with-haproxy 的配置的好文章。这是你要找的吗?

以上是关于在实现负载平衡器时将同一房间的请求路由到使用 Web 套接字的同一服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用LVS+DR搭建集群实现负载均衡

如何在java中实现负载均衡器

aws - 通过基于子域的应用程序负载均衡器路由请求

AWS Route 53 未路由到负载均衡器

如何将健康检查请求 ip 添加到负载均衡器安全组?

负载均衡器&http正向代理