amazon-ec2 - 是否可以在 TCP 模式下使用 Amazon ELB 在多个基于 Tomcat 的 websocket 服务器之间传播 websocket 连接?

标签 amazon-ec2 websocket

我看过 3 篇关于将 ELB 与 websockets 一起使用的不同帖子,但它们似乎都在使用 javascript 客户端或有一些其他变量不适用于我们的情况。

我们有多个在 Tomcat 中运行的 websocket 服务器。我们希望使用 ELB 将它们放在前面,并将所有 websocket 客户端(即 100 个/1000 个)连接到 ELB,这需要:

  • 将升级请求/连接转发到我们的 1 个 websocket 服务器
  • 然后使该连接保持粘性,以便在连接的生命周期内所有双向流量都在同一客户端和服务器之间传输

  • 今天的 ELB 有可能实现吗?
    如果可能,是否需要进行任何特殊的配置/设置?
    Amazon ELB 在 TCP 模式下支持的并发连接数有哪些限制?

    我们曾尝试在 TCP 模式下对此进行测试,但超过 100 个连接后,连接开始失败。但是,如果我们直接连接到单个 websocket 服务器,我们可以建立 80K(或更多)websocket 连接。

    谢谢,
    鲍勃

    最佳答案

    总之,通过 ELB 连接时,请注意以下几点:

  • 如果您期望有大量连接,请向 EC2 提交支持请求,要求他们“预热”您的 ELB。这需要填写一个表格,为他们提供时间窗口、连接数、请求/响应消息大小、消息频率和一些其他参数。在幕后,ELB 正在分配能够在配置的后端实例之间分配计划负载的机器
  • 如果您的连接是持久的(就像我们使用 websockets 所要求的那样),重要的是要知道 ELB 有 1 分钟的默认空闲超时。在那之后,如果没有看到流量,连接就会关闭。您可以要求他们将该时间增加到 15 分钟。注意:这就是为什么如果连接需要保持打开的时间超过 ELB 允许的时间,那么利用 ping/heartbeat 机制很重要。
  • 关于amazon-ec2 - 是否可以在 TCP 模式下使用 Amazon ELB 在多个基于 Tomcat 的 websocket 服务器之间传播 websocket 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737958/

    相关文章:

    websocket - libwebsockets 发送 websocket 关闭原因

    firefox - 使用 Firefox Quantum 检查 Websocket 帧

    http - WSS 适用于 http?

    image - 如何创建没有 EBS 的预留实例的 "Instance Store"AMI 镜像

    amazon-ec2 - 为 Spot 实例分配私有(private) IP

    linux - 使用 Amazon EC2 了解 Linux 分区

    websocket - 在 golang 中存储 websocket 连接的最佳方式是什么

    java - 是否可以通过 Spring WebSocket 发送同步消息?

    python - 使用 python 检查重启后 AWS 实例是否启动

    amazon-web-services - 测试 TURN 服务器的简单方法