首页 > 解决方案 > AWS ALB - URL 中的相同字符串应该转到相同的 EC2 实例

问题描述

我想实现自定义负载平衡。我的要求如下。我有 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 字符串不是固定的,我们通过应用程序动态地获取它,因此基于路径的路由没有帮助。

由于用户不同,具有粘性会话的 AWS ALB 也无济于事。

有什么解决办法吗?

标签: amazon-web-servicesnginxload-balancinghaproxyamazon-elb

解决方案


没有内置功能可以做到这一点。

一种选择是稍微更改 URL。代替:

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

利用:

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

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

当然,这在很大程度上消除了对 Load Balancer 的需求,因为您实际上并不想以传统方式平衡任何流量。

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


推荐阅读