与AWS / ALB负载均衡器和Nginx

时间:2017-08-27 01:22:18

标签: node.js sockets amazon-web-services firebase nginx

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

我的问题:由于可能有任何Node服务器与Firebase通信,如何使套接字变得粘滞,这样无论哪个Node服务器打开套接字,它都是每个通信的正确套接字?

谢谢!

ZE

1 个答案:

答案 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的粘性。

参考:Target Groups for Your Application Load Balancers

相关问题