【问题标题】:AWS ALB - Same string in URL should go to same EC2 instanceAWS ALB - URL 中的相同字符串应该转到相同的 EC2 实例
【发布时间】:2019-07-03 19:37:42
【问题描述】:

我想实现自定义负载均衡。我的要求如下。 我有像

这样的 URL 模式的应用程序
dns-name.com/conference1/abc......
dns-name.com/conference2/xyz......
dns-name.com/conference1/abc......
dns-name.com/conference3/pqr......

我希望来自不同 IP/浏览器的所有用户都使用 URL 会议 1 应该转到 ALB 下的同一个实例,直到它启动并运行。

conference1 字符串不是固定的,我们是通过应用程序动态获取的,因此基于路径的路由没有帮助。

由于用户不同,带有 Sticky Session 的 AWS ALB 也无济于事。

有什么解决办法吗?

【问题讨论】:

  • “应该转到 ALB 下的同一个实例直到它启动并运行”是什么意思?
  • 如果 URL (conference1) 中带有字符串的第一个用户 www.dns-name.com/conference1/abc........ 转到 server1,那么 URL 中带有字符串 conference1 的所有其他用户应该转到服务器 1(如果服务器 1 已启动并正在运行,否则服务器 2)

标签: amazon-web-services nginx load-balancing haproxy amazon-elb


【解决方案1】:

没有依赖应用程序负载均衡器 (ALB) 或任何其他类型 ELB 的内置功能的解决方案。

ALB 使用静态规则将请求路由到目标组,并期望给定目标组的所有成员都能够处理请求。

您要么需要设计服务以消除对此类早期路由决策的需要,要么需要 ALB 后面的另一个(自定义)服务层。

【讨论】:

    【解决方案2】:

    没有执行此操作的内置功能。

    一种选择是稍微更改 URL。而不是:

    dns-name.com/conference1/abc...
    

    使用:

    conference1.dns-name.com/abc...
    

    这将允许您在 DNS 级别引导流量,因此到该 URL 的所有流量都将转到一个 IP 地址。当然,您需要在任何流量使用该 DNS 子域之前对其进行定义。

    当然,这几乎消除了对负载平衡器的需求,因为您实际上并不希望以传统方式平衡任何流量。

    但是,最好的建议可能是重新考虑您的应用程序架构,以无需将此类流量定向到特定服务器。如果实例发生故障,此要求使系统更容易发生故障。在流量高峰的情况下横向扩展也更加困难(因为所有conference1 流量只流向一个实例),也不容易通过横向扩展来降低成本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 2012-09-06
      相关资源
      最近更新 更多