有一项服务全天候运行,停机时间极其昂贵。此服务部署在Amazon EC2上。我知道在两个不同的可用区域甚至在两个不同的区域部署应用程序的重要性,以防止单点故障。但...
我的问题是,是否存在可能影响应用程序冗余的其他配置问题。我的意思是错误的配置(例如DNS的错误配置会导致故障转移失败)。
只是为了确保我清楚 - 我正在尝试创建一个应该进行测试的验证列表,以确保部署在EC2上的应用程序的冗余。
谢谢大家!
答案 0 :(得分:2)
正如警告一样,仅仅因为您将服务放在两个可用区域并不意味着您具有容错能力。例如,我的一个设置是在负载均衡器上有4台服务器,其中us-east-1a us-east-1b作为两个区域。亚马逊几个月前的停电导致我的软件中断,因为负载平衡器无法正常工作。他们仍在转发请求,但我在其中一个区域中遇到的两个死亡实例仍然在接收请求。负载均衡器逻辑的一部分是删除死实例,但是由于负载均衡器队列被积压,这些实例从未被删除。在我的设置中,每个区域中有两个负载均衡器,对一个负载均衡器的所有请求都超时,因为没有实例响应该请求。对我来说幸运的是,浏览器使用第二个负载均衡器重试了请求,因此我的进给仍在加载,但速度非常慢。
我的建议是确保如果您选择仅在两个区域中使用两个可用区域,则确保您的系统不依赖于另一个可用区域的任何部分,甚至不依赖于负载平衡器。对我来说,在不同区域启动两个完全独立的系统并不值得花费额外费用,我将来也无法再避免这个问题。但是,如果你的软件是至关重要的,那么放弃服务1小时就会支付运行额外硬件的成本,而不是额外的服务器正确地设置它。
我还建议支付aws支持并与他们的工程师合作,以确保您的设计没有任何高可用性的缺陷。