我想实现自定义负载平衡。我的要求如下。 我有使用
这样的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,因此粘性会话也无济于事。
有什么解决办法吗?
答案 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
流量仅流向一个实例),也不容易进行横向扩展以降低成本。