我一直在研究高可用性解决方案,例如 heartbeat,以及当 haproxy 负载均衡器出现故障时进行故障转移的 keepalived。我意识到,虽然我们想要高可用性,但在任何时候运行 2 个负载均衡器实例的支出范围内,这并不是真正的要求,以便我们获得即时故障转移(尤其是一磅在我们的设置中将是多余的)。
如果当前负载均衡器已停止工作,我的替代解决方案是从 AMI 启动一个新的负载均衡器 EC2 实例,并将其与我们的域名指向的弹性 IP 相关联。这应该确保停机时间限制在启动新实例和关联弹性 ip 所需的时间,鉴于我们目前的情况,这似乎是高可用性的合理成本有效的解决方案,特别是因为我们可以轻松地进行多 av区。我希望使用以下步骤来做到这一点:
- 准备负载均衡器的 AMI
- 启动一个充当负载均衡器的 ec2 实例并为其分配弹性 IP
- 让微型服务器定期 ping 当前的负载均衡器(无论如何,我们总是有一个额外的微型服务器在运行)
- 如果 ping 超时,请使用负载均衡器 AMI 启动新的 EC2 实例
- 将弹性 ip 关联到新实例
- 关闭旧的负载均衡器实例
- 对新实例重复步骤 3
我知道如何在我的脚本中运行命令来启动和关闭 EC2 实例、将弹性 IP 地址关联到实例以及 ping 服务器。
我的问题是这里合适的 ping 是什么?定期进行标准 ping 就足够了,什么是好的间隔?或者这是一种相当简单的方法,并且我应该进行更智能的健康检查?
另外,如果有人预见到这种方法有任何问题,请随时发表评论