amazon-web-services - 如何配置 AWS 负载均衡器使用特定的机器?
问题描述
我们有一个视频会议应用程序,它依赖于使用 WebSockets 的服务器。
客户端使用 WebSockets 与服务器通信。
我们想水平扩展我们的应用程序。所以我们一直在考虑使用 AWS 负载平衡。
基本上,我们的服务器应用程序将安装在多台 EC2 机器上,用户将被重定向到负载最低的机器。
问题是我们有一个特定的要求,即第一个连接到会议(机器)的用户,连接到同一会议的所有用户都应该转发到同一台机器。这样我们的服务器应用程序就可以识别同一会议的所有参与者。
所以基本上这里是过程:
- 第一个用户连接到会议 A => 转发到负载最低的机器(我们称之为:X)
- 第二个用户连接到会议 A => 转发到机器 X
- 第一个用户连接到会议 B => 转发到负载最低的机器(我们称之为:Y)
- 第二个用户连接到会议 B => 转发到机器 Y
- 等等
有没有人知道如何配置 AWS 负载均衡器以这种方式工作?
谢谢。干杯,
解决方案
在尝试将旧版 Windows 应用程序迁移到 AWS 时,我遇到了类似的问题。我无法利用 AWS 资源来解决这个问题,但我想出了另一种方法。
我使用了开源 HAProxy 的粘性表来控制服务器分配(https://www.haproxy.com/blog/introduction-to-haproxy-stick-tables/)。我有一个用例,我必须将来自特定 IP 地址的所有请求定向到自动缩放组中的同一台服务器。
我在 ASG 中设置了一个 HAProxy 服务器组。在 HAProxy ASG 前面有一个 ELB,然后 HAProxy 服务器将流量路由到适当的后端服务器。设置听起来要复杂得多,但它达到了目的,并且仍然可以完美运行,没有任何问题。我设置它已经 3 年了。
如果这对您有帮助,请告诉我。很高兴分享设置细节和其他可能对您有帮助的东西。
推荐阅读
- python - 为什么 where 子句在 pandas 中不起作用?
- python - 使用事件将键盘键绑定到小部件
- c# - 使用 Blazor 和 C# 刷新 html 表数据
- python - 如何使用 python 和 kivy 获取函数外的值
- python - 在 pySpark 中自定义大型数据集比较
- css - 动画边框颜色自下而上变化?
- ios - 由于列表,导航视图的背景颜色未显示
- firebase - 如何设置 Stripe && React && Firebase 函数
- python - 成功构建后使用 Heroku 以错误状态部署破折号
- snowflake-cloud-data-platform - 雪花:如何从选择查询中删除反斜杠?