适用于多个Web应用程序的Elastic Load Balancer


13

我有Nwebapp。每个Web应用程序都由我域中的不同主机名提供服务,并部署到了两个在AWS中运行的实例。换句话说,我有2N几个实例,分为两个对,分别运行N不同的Web应用程序。

我想设置一个单一的AWS Elastic Load Balancer,它将根据请求将请求代理到为其提供服务的两个实例之一Host。是否可以使用单个ELB,还是我需要部署NELB,每对实例一个?


Answers:


19

单个ELB会将流量路由到恰好一组实例,并将传入流量分配到它后面的所有实例。它不会基于对流量(例如Host:报头)的任何第7层分析来选择性地路由流量。

每一实例都需要一个 ELB 。正如您所描述的,每个Web应用程序就是一个ELB。

如果您运行ELB的主要目的是使用通配符证书卸载SSL(我有一个这样设计的系统,许多应用程序生活在许多不同的domains.my-wildcard-cert-domain.com),则这些实例ELB的“后面”可能正在运行反向代理,例如HAProxy(或其他替代方案,例如Varnish),可以做出第7层路由决策,然后将流量转发到它们后面的相应计算机子集,这也使复杂性更高负载平衡,并具有为您提供汇总和分开的统计信息和流量计数器的优势。

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

中间^^^^实例可以评估Host:标头(除其他外),甚至可以在其日志中捕获会话cookie的值以进行分析。

此设置还允许我在适当的情况下在重叠的实例子集上运行多个应用程序,并执行ELB本身不直接支持的许多其他操作。如果应用程序过载或无法使用,它还会返回一个自定义的“ 503”页面,而ELB不会自行执行该页面。除了您提到问题中的数字2之外,我没有其他特殊的原因在这里描述了2个代理服务器。我的设置实际上有3个,在部署此区域的每个可用区域中有3个。


3
2016年8月,亚马逊推出了AWS Application Load Balancer,它允许基于HTTP标头路由到不同的目标组。
Jens Bannmann '17

2
@JensBannmann是真的。当他们发布它时,它支持的唯一路由规则是基于路径的。在2017年,他们增加了基于Host:标头进行路由的功能。当我在2014年编写此答案时,它是正确的,但看起来该更新了。感谢您将它重新引起我的注意。
Michael-sqlbot

3

截至2016年8月,Amazon ELB提供两种不同类型的负载均衡器:

  • 经典负载均衡器将所有流量路由到一组实例,而无需考虑应用程序协议内容。以前,这是唯一可用的ELB类型。
  • Application Load Balancer可以根据基于URL路径的可配置规则将流量路由到不同的目标组。博客文章New – AWS Application Load Balancer提到了由几个微服务组成的应用程序作为主要用例,并提供了详细的设置说明。

对于您的用例,Application Load Balancer似乎是理想的。但是,它限制为10条规则,因此,只有您N的尺寸不超过10 条时,它才能轻松运行。


0

在您的ec2实例列表中,您看到两个实例,对吗?但是在每个实例上,您是否都有许多Web应用程序?您使用虚拟主机部署每个主机吗?

您只需要一个ELB即可在主机上分配费用。例:

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

我认为最好给我更多您的方案,也许我可以为您提供帮助。

问候。

更新

如果EC2实例上的Web应用程序不同,则需要具有两个Elastic Load Balancer(ELB)。每个实例用于一对实例。总共四个实例


在我的实例列表上,我看到了2N应用程序。有N个Web应用程序,每个都有两个实例。我将编辑问题以澄清这一点。
thesamet 2014年

更新了响应。
青少年Rocha 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.