我们有一些服务的集群。客户端通过 Websocket 连接到集群。客户端根据它们所属的组定位到节点(我们称之为“会议”)。
换句话说,一整组客户端(会议)由一个特定节点提供服务。因此,应该根据发起 WebSocket 连接时发送的一些元数据来选择目标节点。
Client Tom Hanks connects to Actors conference -> LB routes to node EU Server
Client Tom Hanks connects to Tesla fans conference -> LB routes to node USA Server
Client Ada Zizkova connects to Actors conference -> LB routes to node EU Server
Client Ada Zizkova connects to Tesla fans conference -> LB routes to node USA Server
...
请注意,这不是基于 HTTP 会话的粘性。对于同一个用户,HTTP 会话是相同的。
这一切都是我们想要的。但目前我们使用的是简单的 AWS 弹性负载均衡器,我们即将在内部实现这种粘性并绕过 ELB。
在此之前,我正在研究 ALB 是否可以执行我上面描述的操作。找不到任何东西,只是这样:Application Load Balancer 是否支持 WebSockets?这看起来像是一般的连接粘性。在此处查看AWS 文档。
如何使用 ALB 进行基于元数据的 WebSocket 粘性?(或者在 AWS 中使用其他东西)。