【问题标题】:AWS application load balancer on unknown dynamic url paths未知动态 url 路径上的 AWS 应用程序负载均衡器
【发布时间】:2019-03-31 00:45:26
【问题描述】:

当动态生成路径时,是否可以在 AWS 应用程序负载均衡器上进行 url 路径负载均衡? 例如

example.com/abc12345 example.com/abc54321

请注意,网址的形成方式没有结构

我有一个动态生成“房间”的场景,我希望能够对它们进行负载平衡。房间的名称不会预先知道,另一个问题是外部服务会 ping 它们(因此我需要在 url 而不是 cookie/会话上进行负载平衡)。

有谁知道这是否能够实现,或者有更好的方法来实现这一点。我对负载平衡方法还不够熟悉。我最初的想法很简单,因为我对 PATH 进行哈希处理,然后从中检索一个整数值(通过模数或等效值)并基于此进行负载平衡。

非常感谢任何建议。

由于其他资源的位置,我在此实例中特别关注 AWS,但如果这可以通过 NGINX 之类的东西实现并启动我自己的负载均衡器,我会全神贯注。

【问题讨论】:

  • 要运行的代码会因房间号而异?
  • 我想拥有某种字典会很好。因此,以“abc”开头的路径到一台服务器,以“xyz”开头的路径到另一台服务器。唯一需要注意的是,我无法确保负载分布均匀。对于给定的 url,它应该返回相同的服务器
  • 我认为您想要的不是负载均衡器。你看,负载均衡器就是在相同的实例之间分配负载,以确保所有请求都能得到处理。如果您需要根据/ 之后的内容采用不同的逻辑,那么可能需要的是nginx。使用 ngninx 路由您的请求,您可以将它们转发到适当的实例/负载均衡器。
  • 我明白了,理论上每个实例都应该能够处理任何请求。因此,理想情况下,一个新房间会进行负载平衡,然后对同一 url 的任何后续请求将根据当时的流量发送到该房间最初发送到的同一台服务器。
  • 您可以通过在负载均衡器上启用sticky sessions 来实现。这样,用户将始终被路由到同一个实例,除非该实例死亡或他们的 IP 发生变化。

标签: amazon-web-services nginx load-balancing aws-load-balancer aws-application-load-balancer


【解决方案1】:

您可以在应用程序前面部署 Cloudfront 发行版。使用 CF,您可以通过前缀将不同的路径路由到不同的负载均衡器。 (/abc* 到 LB1 和 /xyz* 到 LB2)您甚至可以将一些路径路由到非 AWS 端点或 S3 存储桶。

文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern

使用 Cloudfront,您还可以访问其他功能,例如缓存特定路径,与在一个区域拥有负载均衡器相比,它还将在全球范围内加速您的应用程序。

【讨论】:

  • 谢谢,我想问题是我仍然无法真正“负载平衡”我的解决方案,除非我在创建随机房间名称以平均分配流量时实施某种循环法
猜你喜欢
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 2021-08-10
  • 2017-12-26
  • 2017-02-11
  • 2017-09-27
相关资源
最近更新 更多