我们的一些应用程序要求它们“大多数时间都在工作”。它们没有完整的多可用区和 ELB 处理以实现高可用性。
EC2 令人恼火的是,当单个实例消失时,它需要手动干预来恢复,或者使用第三方服务来执行相同操作。
输入 AutoScaling (AS)。
AS 的基本原则是,它将确保您的 AMI 至少有 [x] 个实例始终在运行 - 负责启动(和终止)实例以满足该目标。
这听起来像是一种解决上述问题的非常有效的方法,而不需要第三方服务或处理大量代码。
但是在此主题中我们有一位亚马逊员工建议 OP 手动进行故障转移!
您是否同意 AS 似乎是解决此问题的合适方法?有人有以这种方式使用它的经验吗?
答案1
AutoScaling 听起来是个好主意。我也有类似的情况。我有一个 ami,它没有有为了 100% 保持正常运行,我仅将 AutoScaling 与竞价型实例结合使用。我将所需实例数设置为 1,并将所有 us-east-1 可用区纳入我的 AS 组。对我来说,它运行良好。除了根据负载进行扩展之外,我还看到它在 AWS 确定特定区域超载时切换使用的可用区。
答案2
我认为关键点在于当主机自动启动时,将特定的 IP(弹性 IP)固定到您的主机上。
考虑到您的情况,您可以尝试编写一个在启动时运行的脚本并将其嵌入到 AMI 中 -
- 使用弹性 IP – 从任何正在运行的机器(如果有)重新分配特定的弹性 IP 并将其分配给自身。
- 使用 DNS - 将您的 A 或 C 记录更新为实例 IP/主机名。Route 53 有一个 API,不确定您的 DNS 主机是否提供该 API。