Cha*_*ish 3 amazon-ec2 amazon-web-services amazon-elb
我试图弄清楚 Amazon Web Services Elastic Load Balancing 如何不造成停机。
Elastic Load Balancing 每隔一段时间(通常几秒钟)就会 ping 您的服务器路径。如果它在设定的时间段内(通常是一两秒)没有收到响应,它将使服务器脱机,并且在它重新联机之前不再向该服务器发送流量。
让我感到困惑的是,尽管该服务器将脱机,但 AWS Elastic Load Balancing 需要几秒钟的时间才能对其进行 ping 操作,并且实际上将其脱机。我假设有一种方法可以消除这种需要 ping 的差距,并且只将流量发送到真正的活动服务器,并消除 Elastic Load Balancing 将流量发送到有问题的服务器的机会。如何实现这一点并在我的应用程序中创建 0 停机时间?
网上有关于此的相互矛盾的信息。一些资源说,如果在从服务器收到响应之前超过默认的 60 秒超时,ELB 会重试请求,但这些都是少数。有人说 ELB 不会重试请求。该AWS文档没有说明何时会发生什么的ELB超时-一个相当显著遗漏。根据我所读到的内容,我倾向于认为,如果您的后端服务器超时,客户端会发送一个错误代码,可能是 408 超时。你应该对此进行测试,我下面的建议就是基于这个假设。如果 ELB 重试,那么我下面的建议是不正确的。
由于缺乏重试,我不相信将 ELB 用于标准 Web 应用程序是不可能的。更大的图景,你不能保证 100% 的可用性,这几乎是不可能的。您需要将可用性设置为现实水平,然后构建您的系统以实现这一目标。例如,您可能有两个活动区域,Route 53 使用故障转移进行地理负载平衡。但是,您不会得到 100% 的结果,因为它被设置为测试并将请求发送到被认为是健康的实例,而不是在请求失败时重试请求。
如果服务器关闭或超时,ELB 不会重试请求。您必须放入自己的逻辑或负载平衡器,这本身可能会失败。AWS 之外的硬件可能会工作,但不是一个好主意,您在 AWS 内部自己的负载均衡器是一个坏主意,因为您不太可能创建一个像 ELB 一样可靠的负载均衡器。
我建议您专注于使您的 Web / 应用程序服务器稳定、可扩展和无状态,以便它们可以根据需要进行扩展和缩减。
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |