Firebase与AWS/ALB负载平衡器和Nginx后面的多个Node.js连接

Firebase与AWS/ALB负载平衡器和Nginx后面的多个Node.js连接,node.js,sockets,amazon-web-services,firebase,nginx,Node.js,Sockets,Amazon Web Services,Firebase,Nginx,我需要将Firebase连接到AWS/Elastic Beanstalk上的节点设置。在ALB负载平衡器和Nginx代理后面有1-4个节点服务器。Firebase使用WSS协议(因此需要ALB,因为常规ELB不支持套接字)。当节点实例使用Firebase进行身份验证时,它会获得应用程序可以侦听的套接字 我的问题是:既然可能有任何节点服务器与Firebase通信,那么如何使套接字具有粘性,以便无论哪个节点服务器打开了套接字,它都将是每次通信的正确套接字 谢谢 ZE您可以在AWS ALB for W

我需要将Firebase连接到AWS/Elastic Beanstalk上的节点设置。在ALB负载平衡器和Nginx代理后面有1-4个节点服务器。Firebase使用WSS协议(因此需要ALB,因为常规ELB不支持套接字)。当节点实例使用Firebase进行身份验证时,它会获得应用程序可以侦听的套接字

我的问题是:既然可能有任何节点服务器与Firebase通信,那么如何使套接字具有粘性,以便无论哪个节点服务器打开了套接字,它都将是每次通信的正确套接字

谢谢

ZE

您可以在AWS ALB for WSS协议中启用,并在一段时间内将流量发送到同一EC2实例

还要注意,您需要在目标组级别配置粘性

我创建了第二个目标组调用“xxxSocket”,并启用了粘性, 并使第一个目标群体“xxxHTTP”无粘性 (默认)。最后,在我的应用程序负载平衡器中,我添加了一个新的 规则为“路径模式”=/socket.io,然后路由到目标组 “xxxSocket”,将默认模式路由保留为“xxxHTTP”

参考:

此外,WebSocket连接本身具有粘性

WebSocket连接本身就是粘性的。如果客户端请求 连接升级到WebSockets,返回HTTP 101的目标 接受连接升级的状态代码是中使用的目标 WebSocket连接。WebSocket升级完成后, 不使用基于cookie的粘性


参考资料:

谢谢Ashan,根据您的说明,我查找了AWS目标群体,事实上,我的ALB目前没有目标群体,但目标群体文档中还有其他内容:它说“WebSocket连接本身就是粘性的。如果客户端请求到WebSockets的连接升级,则返回HTTP 101状态代码以接受连接升级的目标是WebSockets连接中使用的目标。WebSockets升级完成后,将不使用基于cookie的粘性。“您是否也可以共享参考链接,以便我更新答案?使用您的信息和参考更新答案。感谢@zi88Its在“粘性会话”下:谢谢你的回答。在ALB listener中定义规则到端口3000后的一个查询如何在url上显示端口(如下图所示)。我正在使用socket.io 2.1.1,它正在使用(如下图所示)定义的ALB规则路径,但我希望显示为“”。你知道我怎样才能做到这一点吗?我们将不胜感激。谢谢