我们正在从 AWS 迁移,在那里我们使用 EC2 的自动扩展功能拥有高度可用的系统设置。但是,我们并没有使用它来根据资源使用情况更改池的大小,我们只是在其中一个失败或无响应时使用它来启动新实例。
如果其他云提供商没有这种自动缩放功能(我们专门研究 DigitalOcean,但它应该适用于任何地方),有哪些选项可以实现此设置?我的第一个想法是创建一个监控其他实例的实例,但随后该服务器成为单点故障。是否有任何服务或已建立的模式来实现这一点,无论是自动化的还是将一些脚本写入 API 而不会产生单点故障?
我们最终编写了自己的解决方案,以在某种程度上模仿 EC2 中的行为。我们将其命名为healthcare.js 并在https://github.com/goldfire/healthcare.js将其开源。本质上,它使用 DigitalOcean API 和标签进行发现,然后使用demo.js监控哪些服务器正在运行。这允许一个完全分布式的自我修复系统,该系统将根据传递的服务器配置杀死/重新构建服务器。