如何设计一个系统,为 AWS 负载均衡器后面的客户端提供一致的 WebSockets

问题描述 投票:0回答:1

我有数量可扩展的 websocket 主机,为了简单起见,让它们成为一个简单的 ec2 实例,每个这样的主机都是一个 websocket 服务器,并且可以连接多个连接。
我还有数量可扩展的客户端,我们称它们为 C1...Cn,它们都与其中一台 websocket 主机上的 websocket 服务器有持久的 websocket 连接。 客户端和 websocket 主机之间有一个 aws LB(ELB 或 ALB)。
我如何设计一个基于aws的系统,当添加新客户端时,在该客户端的生命周期内,在该客户端和websocket服务器之间创建一个新的websocket连接。所有进出此客户端的流量都应通过此连接移动。
此外,websocket 主机组需要可扩展,在高负载的情况下,应添加新的 websocket 主机,反之亦然。

amazon-web-services websocket architecture amazon-elb aws-application-load-balancer
1个回答
1
投票

启用粘性会话的 AWS Application Load Balancer 将完全完成您所描述的任务。

问题将出在实例的自动扩展上。当某个实例因缩减而被删除时,所有与该实例具有 Websocket 连接的客户端现在都将断开其 Websocket 连接,并且必须使用与不同服务器的新连接重新开始。如果这是一个问题,那么您应该考虑使用 Amazon MQ (Active MQ) 作为 Websocket 代理,这将允许您的 EC2 服务器无状态。我还看到这个问题是通过 Redis 而不是 ActiveMQ 解决的。

© www.soinside.com 2019 - 2024. All rights reserved.