Answers:
单个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个。
Host:
标头进行路由的功能。当我在2014年编写此答案时,它是正确的,但看起来该更新了。感谢您将它重新引起我的注意。
截至2016年8月,Amazon ELB提供两种不同类型的负载均衡器:
对于您的用例,Application Load Balancer似乎是理想的。但是,它限制为10条规则,因此,只有您N
的尺寸不超过10 条时,它才能轻松运行。
在您的ec2实例列表中,您看到两个实例,对吗?但是在每个实例上,您是否都有许多Web应用程序?您使用虚拟主机部署每个主机吗?
您只需要一个ELB即可在主机上分配费用。例:
External request > ELB (based on CNAME pointer) > EC2 Instance.
我认为最好给我更多您的方案,也许我可以为您提供帮助。
问候。
更新
如果EC2实例上的Web应用程序不同,则需要具有两个Elastic Load Balancer(ELB)。每个实例用于一对实例。总共四个实例
2N
应用程序。有N个Web应用程序,每个都有两个实例。我将编辑问题以澄清这一点。