适用于多个webapps的弹性负载平衡器

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

我想要设置一个AWS Elastic Load Balancer,它将根据Host头将代理请求发送给提供服务的两个实例之一。 有可能使用单个ELB,否则我需要部署N ELB,每个ELB对一个?

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

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

    如果您运行ELB的主要目的是使用通配符证书卸载SSL(我有一个这样devise的系统,有几十个应用程序位于多个不同的域名.my-wildcard-cert-domain.com),那么实例在ELB之后的“后面”可以运行一个反向代理,比如HAProxy(或者其他一些替代品,比如Varnish),这个代理可以做出第7层路由决定,然后把stream量转发到它们后面的适当的机器子集,这也允许更复杂负载均衡,并具有为您提供统计和stream量计数器,聚合和分离的优势。

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

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

    此设置还允许我在适当的情况下在重叠的实例子集上运行多个应用程序,并执行ELB本身不直接支持的许多其他事情。 它也返回一个自定义的“503”页面,在应用程序被超载或以其他方式变得不可用的情况下,ELB不能自行完成。 我在这里描述了2个代理服务器,除了你提到问题中的第二个数字以外,没有特别的理由。 我的设置实际上有3个,每个可用区在这个部署的地区。

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

    • 经典负载均衡器将所有stream量路由到一组实例,而不考虑应用程序协议内容。 以前,这是唯一可用的ELBtypes。
    • 应用程序负载平衡器可以根据URLpath的可configuration规则将stream量路由到不同的目标组 。 新的AWS应用程序负载均衡器博客文章提到由几个微服务组成的应用程序作为主要用例,并提供了详细的设置说明。

    对于您的使用情况,应用程序负载均衡似乎是理想的。 然而,它只限于10条规则,所以如果你的N不大于10,它将很容易地工作。

    在你的ec2实例列表中,你会看到两个实例,对吧? 但是在每个实例中都有很多webapps? 你使用虚拟主机来部署每一个?

    您只需要一个ELB就可以在主机上分摊费用。 例:

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

    我觉得你最好给我更多的scheme,也许我可以帮你。

    问候。

    UPDATE

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