是否可以使用多个负载平衡器将stream量redirect到我的应用程序服务器?

我是新来的负载平衡,我想知道是否有可能使用多个负载平衡器redirectstream量到我的应用程序服务器。 我真的不明白如何做到这一点。 一个域名不能与某个服务器的IP地址一一对应(在这个例子中是一个负载均衡器的IP地址)? 如果每个负载均衡服务器具有不同的IP,那么两个负载均衡器(或10个负载均衡器或50或100)是如何接收请求的?

使用循环法DNS对于高可用性来说并不是很好 – 如果一台服务器脱机,客户端仍然会尝试连接到它并等待超时。

还有其他的方法来实现这一点。
1)主动/被动负载均衡器
基本上一个负载平衡器处理一个IP地址的所有stream量。
如果该平衡器失效,被动节点跳入并接pipeIP。
请记住,负载平衡器几乎只是转发stream量,所以对于中小型网站,这可以解决。

2)主动/主动负载平衡器
在两个(或更多)负载​​均衡器上configuration相同的stream量IP。
传入stream量发送到所有负载均衡器,但algorithmselect哪个平衡器应该响应,所有其他人丢弃该stream量。
简单的想法是,你有两个负载平衡器:
当请求IP以偶数结尾时,负载均衡器A应答,否则负载均衡器B应答。

当然你的基础设施必须支持这个,并且由于stream量被发送而被丢弃,所以会有开销。
更多信息,例如: http : //community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Srayray/ta-p/73867

负载平衡器的高可用性通常使用虚拟IP地址 (VIP)协议来实现,该协议允许多个主机(即负载均衡器)以多种可能的方式之一应答一个公共IP地址(主动/被动,主动/主动的变化) 。

有很多这样的协议,我常见的负载平衡器中最常见的是VRRP和NLB (以及许多在设备上的不起眼的黑盒子协议)。 扩展到路由器和防火墙也可能遇到CARP , HRSP , GLSP等。

这种策略对于DNS负载平衡具有许多好处,这是一个更简单的策略(在另一个答案中将考虑这一点)。

DNS负载平衡负担例如:

  • DNScaching机制的周转缓慢
  • 有限的负载平衡algorithm(通常只是循环)
  • 负载均衡决策外包给客户端(通过cachingdnslogging)
  • 当服务器(即负载均衡器)不能轮换时(基于由ISP和客户端处理的 DNSloggingTTL),服务队列缓慢stream失
  • 负载平衡器故障时的故障转移速度缓慢

对于HA使用虚拟IP协议,可以有以下select:

  • 负载均衡器之间的负载均衡algorithm的select
  • 以服务器为中心的负载均衡决策(例如,基于服务健康度量和路由select)
  • 当负载平衡器旋转失败时,服务队列更快耗尽。
  • 负载平衡器故障时即时故障转移

只有你知道哪个策略和协议最适合你的情况。

要求:有一个实用的解决scheme适用于云或任何types的环境,无法访问硬件负载平衡器,BGP协议和所有的东西。

申请人的收入申请号码是未知的,但是应该足够高以满足增加的负荷预期而不用担心。

让我们find一个类似负载types的应用程序,比如日志logging存储和search应用程序。 我find了一个 。

他们想要什么:

  1. 平衡收集器的负载
  2. 提供容错function,如果其中一个收集器死亡或遇到问题,我们可以继续采集数据
  3. 随着我们日志卷的增长,水平扩展

他们尝试和学习ELB的是什么:

  1. 没有按预期工作
  2. 由于负载增加导致延迟问题
  3. 没有足够的监控设施
  4. 太多的限制(开放端口和协议号码)

他们为什么selectRoute53:

  1. “循环法是非常基本的负载平衡,但从效率的angular度来看,它对我们来说很好”
  2. “我们利用Route 53故障转移健康检查。”
  3. “如果collections家遇到问题,Route 53将自动将其从服务中移除;我们的客户将不会看到任何影响。
  4. 路线53不需要预热

鉴于我们巨大的日志量,不可预知的变化以及业务持续增长,Route 53成为Loggly利用高性能收集器的最佳途径。 它与收集器的核心目标保持一致:以零损失的networking线速度收集数据,使我们能够从Loggly使用的所有AWS服务的弹性中受益。

这个特殊的例子表明,在一些情况下(日志采集器,广告服务或类似的)负载均衡器是多余的,“DNS健康检查循环解决scheme”很好地工作。


让我们来看看AWS 说什么重新DNS故障转移:

通过DNS故障转移,Route 53可以检测到您的网站中断,并将最终用户redirect到您指定的备用或备份位置。 路由53 DNS故障切换依赖于运行状况检查 – 定期向全球多个位置的应用程序端点发出Internet请求,以确定应用程序的每个端点是启动还是closures。

该技术也使得ELB(不需要,只是为了便于说明)更加健壮,同样基于RR +健康检查:

Route 53 DNS Failover通过在幕后集成ELB来处理所有这些故障情况。 启用后,Route 53将自动configuration并pipe理单个ELB节点的运行状况检查。


现在让我们看看它是如何在幕后工作的。 显而易见的问题是如何处理DNScaching:

但是,如果客户端和Route 53之间的所有层都不遵守TTL,那么DNScaching仍然可能成为一个问题(请参阅我们之前的post,其中“long tail”问题已经涵盖)。然后,您可以应用“caching清除”技术:发送一个请求到一个唯一的域

("http://<unique-id>.<your-domain>") 

并定义一个通配符资源

 Record "*.<your-domain>" to match it. 

Algolia 引入了 “客户端重试策略”,如果你的客户端(你的情况下的JS)能够处理这个问题,

我们最终在我们的API客户端实现了一个基本的重试策略。 每个API客户端都是为了能够访问三台不同的机器而开发的。 三个不同的DNSlogging代表每个用户:USERIDID-1.algolia.io,USERID-2.algolia.io和USERID-3.algolia.io。 我们的第一个实现是随机select其中一条logging,然后在发生故障的情况下用不同的logging重试。