【发布时间】:2015-06-27 16:14:56
【问题描述】:
我有一个在亚马逊 AWS 上运行的标准 LAMP EC2 实例设置。还安装了 Node.js、socket.io 和 Express 以满足实时更新的需求,我现在正处于应用程序负载平衡的阶段。这一切正常,但我的插座没有。这是我的设置的样子:-
--- EC2 >> Node.js + socket.io
/
Client >> ELB --
\
--- EC2 >> Node.js + socket.io
[RDS MySQL - EC2 instances communicate to this]
如您所见,每个实例都安装了 Node 和 socket.io。但是,偶尔 Chrome 调试会 400 套接字请求返回原因 {"code":1,"message":"Session ID unknown"},我猜这是因为它正在与另一个实例通信。
另外,假设我在页面 A 并且套接字需要发送到页面 B - 因为负载均衡器,这两个页面很可能在不同的实例上(它们都将同时打开)。据我所知,使用 Sticky Sessions 之类的东西在这种情况下是行不通的,因为这两个页面都被限制在各自的实例中。
我该如何解决这个问题?我是否需要一个专门用于 Node 的完整实例?这似乎有点矫枉过正......
【问题讨论】:
标签: node.js sockets amazon-web-services amazon-ec2