我正在考虑如何最好地设置我的 SaaS 应用程序以实现自动扩展,但目前还不知道该如何解决。为了正确描述这个问题,我最好先解释一下我如何看待整个过程:
首先,我将在一个单独的 VPS 上托管主站点,该 VPS 负责处理注册,并包含实际应用服务器的所有信息、负载和用户数量等。我想用 cron 作业或其他东西来检查,以便始终有空间容纳更多用户,如果低于该数字,则自动启动设置新 VPS 实例的过程。
我决定使用 DigitalOcean 及其 API 来设置 droplet,然后通过在 DigitalOcean 上创建 droplet 时将 ServerPilot 设置脚本作为 CloudInit 用户元数据发送来连接到 ServerPilot。
然后我可以结合使用 ServerPilot 和 DigitalOCean API 来检查服务器、创建“应用程序”、数据库、连接域等等。
现在到了棘手的部分。我需要以某种方式在新创建的服务器上设置 Git 存储库,而无需手动通过 SSH 连接它。
我在这里的选择似乎有限。我无法从一开始就设置某种常规的 web-api 来管理 git 和应用程序部署,因为 ServerPilot 在 CloudInit 运行时还没有完成它的工作。
一种可能性是将自定义脚本包含在 CloudInit 中,作为设置和部署 PHP 应用程序的基本 Web API。这时我开始研究用于 Ruby 的 Sinatra 或用于 Python 的 Flask/Bottle。如果我理解正确的话,它们可以在尚未安装 nginx/apache 的情况下提供 API 端点。或者也许我完全错了?
在继续之前,我想先听听大家对我目前的想法的意见。
这个计划听起来合理吗?
对于这种用途,有没有比 ServerPilot 更好的替代品,我自己宁愿远离配置文件?
是否最好只为新的 droplet 创建我自己的自定义图像文件而根本不使用 ServerPilot,并让它在普通 PHP 中包含一个“管理器”应用程序 API 来设置用户应用程序?
不过,我有点喜欢让 ServerPilot 处理设置的想法,因为我主要不是服务器人员。任何意见都值得赞赏。