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

时间:2013-11-02 01:21:34

标签: amazon-ec2 websocket

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

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

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

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

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

谢谢, 鲍勃

1 个答案:

答案 0 :(得分:4)

总之,通过ELB连接时请注意以下事项:

  • 如果您希望有大量连接,请向EC2提交支持请求,要求他们“预热”您的ELB。这需要填写一个表单,为其提供时间窗口,连接数,请求/响应消息大小,消息频率和一些其他参数。在幕后,ELB正在分配能够在配置的后端实例中分配计划负载的机器
  • 如果你的连接是持久的(就像我们需要的websockets),重要的是要知道ELB有1分钟的默认空闲超时。在此之后,如果没有看到流量,则关闭连接。您可以要求他们将时间增加到15分钟。注意:这就是为什么如果连接需要保持打开的时间长于ELB允许的话,利用ping /心跳机制很重要。