ELB可以根据URL重定向请求吗?

sub*_*g26 46 load-balancing amazon-web-services amazon-elb

我正在尝试在Amazon Elastic Load Balancer后面设置我的应用程序服务器.我想有一个专用于旧版本的服务器,以及专用于新版本的所有其他服务器.我想在路径参数中使用版本ID来实现它

例如

当前版本(3.0):http://example.com/APPNAME/service

旧版本(2.2):http://example.com/APPNAME/v2.2/service

我想知道:

  1. ELB是否有能力查看HTTP请求?
  2. ELB可以根据URL路径参数重定向请求吗?

Ste*_*pel 53

更新2017-04-05

去年夏天推出具有基于路径的路由支持的新应用程序负载均衡器后(请参阅前面的更新),AWS现在还为AWS应用程序负载均衡器添加了基于主机的路由支持:

[...]您现在可以创建应用程序负载均衡器规则,根据主机标头中指定的域名路由传入流量.对api.example.com的请求可以发送到一个目标组,向mobile.example.com发送请求到另一个目标组,所有其他请求(通过默认规则)可以发送到第三个目标组.您还可以创建组合基于主机的路由和基于路径的路由的规则.这将允许您将请求路由到api.example.com/productionapi.example.com/sandbox到不同的目标组.

更新2016-08-11

AWS刚刚(2016年8月11日)推出了新的弹性负载平衡服务应用负载平衡器,它旨在提高灵活性和实时应用,微服务,基于容器的结构和流媒体应用的性能:

这种新的负载均衡器(也支持WebSocket协议和HTTP/2)在应用层运行,并提供基于内容的路由支持.这允许Application Load Balancer在一个或多个Amazon Elastic Compute Cloud(Amazon EC2)实例上运行的多个服务或容器之间路由请求,从而有助于降低成本并简化服务发现.[强调我的]

正如介绍性博客文章中所强调的那样,ELB的应用程序负载均衡器选项在第7层运行并支持许多高级功能[whereras]原始选项(现在称为经典负载均衡器)仍然可用于您并继续提供第4层和第7层功能.

更具体地说,ELB现在支持手头的场景,因为每个Application Load Balancer允许您定义最多10个基于URL的规则来将请求路由到目标组(AWS计划随着时间的推移让您访问其他路由方法).


初步答复

这是不可能的 - 亚马逊ELB主要(但见下文)提供传输层负载平衡(OSI第4层),它仅根据TCP连接确定其负载平衡决策,但忽略应用程序有效负载.后者将允许应用层负载平衡(OSI第7层),其中应用有效负载实际上被考虑用于负载平衡决策.

Amazon ELB中的默认配置实际上为HTTP/HTTPS/SSL提供了基本的应用程序级支持(例如,终止SSL连接和插入X-Forwarded-*标头),但是您无法调整此配置; 换句话说,ELB确实在这里查看了HTTP请求,但在这方面你无法控制ELB的行为.

为负载均衡器选择监听器中有更详细的解释,例如:

使用带有Elastic Load Balancing的TCP/SSL(第4层)

当您对前端和后端连接使用TCP时,负载均衡器会将请求转发到后端实例,而无需修改标头.此配置也不会为会话粘性或X-Forwarded-*标头插入cookie.

[...]

使用Elastic Load Balancing的HTTP/HTTPS(第7层)

当您对前端和后端连接使用HTTP(第7层)时,负载均衡器会解析请求中的标头,并在将请求重新发送到已注册的实例之前终止连接.这是Elastic Load Balancing提供的默认配置.

[强调我的]

" 架构概述"还提供了说明和更多详细信息.

  • 谢谢,我也得出结论,仍然无法在ELB中进行基于URL的路由. (2认同)