1

我们预计我们的应用程序会有巨大的流量激增 - 约1000分钟的Websocket keepalive连接每秒开启约15分钟。我们希望通过ELB路由它们,但担心由于亚马逊不能及时提供足够的ELB实例,我们可能会丢失一些流量(尚未运行测试)。我的问题是 - 你能强制他们提供至少x个ELB实例吗?您可以控制多个Amazon Elastic Load Balancer实例吗?

The docs建议您每个ELB实例只能获得〜64k个端口,我们总共需要约1m。

也许我错误地认为这是必要的,而且64k就足够了,因为ELB实例一旦建立就不会坐在websocket连接的中间(考虑到我们的流量浪涌特性)。澄清这一点也会有帮助。

编辑:ELB实例似乎坐在连接的中间。当我关闭ELB监听器时,连接就会消失(我的websocket服务器将其视为客户端关闭)。

+1

64k端口?即标准端口范围。您可以接收每个端口的多个连接。您将只在标准Web套接字端口上创建一个侦听器。连接排水也应该打开。 – datasage

+0

ELB部署中的单个节点只能转发64k个并发连接...但是再次,与单个后端实例的终止能力相同。在这种情况下,ELB的缩放并不是我最关心的问题。 –

回答

1
  • 您不能强制或控制API的ELB供应,它会根据感知流量自动进行缩放。
  • 您可以打开支持凭单并请求更多容量。
  • 如果您必须处理不可预测的峰值,则在DNS循环中使用多个ELB可能会有所帮助。同样考虑更适合可伸缩数据摄取的其他服务,如果是这种情况,例如Amazon Kinesis。
  • 如果您使用HTTP侦听器,ELB将“坐在中间”。对于websockets流量,您可能需要TCP侦听器。
  • 请注意ELB会自动关闭空闲连接,请考虑定期发送“keep-alives”并从连接丢失中恢复。
+2

如果你知道流量何时会被击中,那么你绝对可以要求ELB预热:https://aws.amazon.com/articles/1636185810492479#pre- warming – Mircea

+1

你也可以写一些产生大量数据的东西要求ELB欺骗它提高容量。诀窍就是在真正的流量达到时停止这样做。 – Mircea

+0

谢谢@Mircea,它回答了原来的问题。 – haren

相关问题