【问题标题】:Has anyone used Primus with websockets behind aws Elastic Load Balancer?有没有人在 aws Elastic Load Balancer 后面使用 Primus 和 websockets?
【发布时间】:2016-06-13 08:14:45
【问题描述】:

我有一个 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 侦听器。
  • aws documentation 中所述启用代理协议。
  • 在 primus 服务器配置中添加了 proxywrap。

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

【问题讨论】:

    标签: node.js websocket amazon-elastic-beanstalk primus


    【解决方案1】:

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

    安全组:

    负载平衡器监听器:

    容器选项:

    负载均衡器:

    【讨论】:

      【解决方案2】:

      你需要做两件事

      增加 ELB 的空闲超时时间

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

      定期 Ping

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

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 1970-01-01
        • 2013-03-28
        • 2014-02-24
        • 2016-12-26
        • 2017-05-10
        • 2014-09-28
        • 2017-03-10
        • 2017-05-18
        相关资源
        最近更新 更多