AWS ALB-URL中的相同字符串应转到相同的EC2实例

时间:2019-07-03 07:39:43

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

我想实现自定义负载平衡。我的要求如下。 我有使用

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

我希望来自URL Conference1的不同IP /浏览器的所有用户都应进入ALB下的同一实例,直到其启动并运行。

conference1字符串不是固定的,我们通过应用程序动态获取它,因此基于路径的路由无济于事。

由于用户是不同的AWS ALB,因此粘性会话也无济于事。

有什么解决办法吗?

2 个答案:

答案 0 :(得分:0)

没有一种解决方案依赖于应用程序负载平衡器(ALB)或任何其他类型的ELB的内置功能。<​​/ p>

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

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

答案 1 :(得分:0)

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

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

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

使用:

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

这将允许您直接在DNS级别上引导流量,因此,到该URL的所有流量都将流向一个IP地址。当然,您需要先定义该DNS子域,然后再将其用于任何流量。

这当然可以消除对Load Balancer的需求,因为您实际上并不希望以传统方式平衡任何流量。

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