0

我有一个 node.js 应用程序服务器在端口 80 上运行,我最近通过Primus websockets 转换器在端口 9001 上添加了实时消息传递。

它在单个实例中运行良好。我使用以下配置将消息传递到 Beanstalk 环境。

AWS Elastic Beanstalk
Platform version v2.0.0
Nodejs version v0.12.6
Primus version v4.0.5
  • 如屏幕截图所示,端口 9001 已添加到实例的安全组中。 在此处输入图像描述
  • 代理服务器在配置选项中设置为“无”。 在此处输入图像描述
  • TCP 侦听器已添加到 Elastic Load Balancer 配置中。 在此处输入图像描述
  • 如aws 文档中所述启用代理协议。 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述
  • 在 primus 服务器配置中添加了 proxywrap。

但是客户端请求没有到达实例并且连接超时。有没有人在 AWS ELB 后面使用 primus 和 websockets?请让我知道在 Elastic Beanstalk 后面启用 websockets 通信的配置。

4

2 回答 2

1

我设法让 websockets ( https://github.com/websockets/ws ) 在 ELB 的端口 80 和 8080 上工作,配置如下。那就是没有启用代理协议。

安全组:

https://cloud.githubusercontent.com/assets/3421858/14969922/ff6659f4-10bc-11e6-903c-168a530efebd.png

负载均衡器监听器:

https://cloud.githubusercontent.com/assets/3421858/14969937/160c7544-10bd-11e6-8357-a11f5481d9fd.png

容器选项:

https://cloud.githubusercontent.com/assets/3421858/14969950/38776f1c-10bd-11e6-961b-aabbf0ab1d66.png

负载均衡器:

https://cloud.githubusercontent.com/assets/3421858/14969983/6c4f47ce-10bd-11e6-8fa0-eb8180ffb281.png

于 2016-05-02T22:59:09.340 回答
0

你需要做两件事

增加 ELB 上的空闲超时

在 EC2 仪表板上,访问负载均衡器设置并打开负载均衡器的描述选项卡。寻找设置“空闲超时”,输入类似“600”(10分钟)

定期 Ping

每 5 分钟执行一次 WS ping(或其他,但需要低于 ELB 上的空闲超时)。如果 primus 不支持其 API,请实现自己向客户端发送虚拟消息。

于 2016-05-12T18:40:55.183 回答