我需要将Firebase连接到AWS / Elastic Beanstalk上的节点设置。有1到4个节点服务器,位于ALB负载均衡器和Nginx代理之后。 Firebase使用WSS协议(因此需要ALB,因为常规ELB不支持套接字)。当Node实例使用Firebase进行身份验证时,它会获得应用程序可以侦听的套接字。
我的问题:由于可能有任何Node服务器与Firebase通信,如何使套接字变得粘滞,这样无论哪个Node服务器打开套接字,它都是每个通信的正确套接字?
谢谢!
ZE
答案 0 :(得分:1)
您可以在AWS ALB中启用Sticky sessions以使WSS协议工作,并在一段时间内将流量发送到同一EC2实例。
另请注意,您需要在目标组级别配置粘性。
我创建了第二个目标组呼叫“xxxSocket”,启用了Stickiness, 并且使第一目标群体“xxxHTTP”没有粘性 (默认)。最后,在我的Application Load Balancer中,我添加了一个新的 规则有“路径模式”= /socket.io然后路由到目标组 “xxxSocket”,将默认模式路由保留为“xxxHTTP”。
参考:AWS Forum Anyone gotten the new Application Load Balancer to work with websockets?
WebSockets连接本身也很粘。
WebSockets连接具有固有的粘性。如果客户请求 连接升级到WebSockets,即返回HTTP 101的目标 接受连接升级的状态代码是在中使用的目标 WebSockets连接。 WebSockets升级完成后, 没有使用基于cookie的粘性。