我们正在开发一个 WebSocket 应用程序,它将在为我们的 API 提供服务的相同应用服务器上运行,这些 API 都属于新Amazon 应用程序负载均衡器。
我不确定套接字升级后是否需要粘性会话,但是,使用侦听器转发规则应该可以轻松完成此工作。
我担心的是目标组自动扩展期间执行的扩展操作,特别是操作scale-in
。由于当前的扩展操作基于RequestCountPerTarget
,当实例因该指标未超过阈值而终止时,这并不能保证实例没有活动的 WebSocket 连接。
我假设这意味着当实例关闭并终止时,这些套接字连接将突然被打断。
- 对抗这一问题的最佳方法是什么?
scale-out
除了 API 请求之外,是否还有其他指标可以用来根据每个目标的活动连接数自动进行分组,以便更好地促进 WebSocket 扩展?
我考虑创建一个 SNS 主题和LifecycleHook
一个自动缩放组上的实例终止,我可以在其中处理该主题和实例终止,以便向该WebSocketHandler
服务器上的所有套接字发送一条消息,使它们需要断开连接并连接到负载均衡器中的另一台服务器。