我对使用 Rackspace 云服务器 API 为自己构建动态可扩展的托管服务感兴趣。云服务器 API 允许我以编程方式添加和删除服务器实例。
系统要求
大多数情况下,会有一个共享服务器,但也可能是专用服务器,当带宽超过某个目标时,会配置一个新服务器,并从某个地方复制或恢复 Web 目录(可以使用 Cloud Files、svn、git 等)。可以使用 puppet 或一些自定义脚本来配置文件。
理想情况下,每个域或域组都有带宽配额,一旦超出,就会触发部署新服务器,该服务器仅包含该域的文件,持续 1 小时。如果在该目标之后带宽仍然超出,则服务器将继续有效一个小时,依此类推,直到不再需要它,此时它将从服务中移除。
如果有人已经部署了这样的系统或者可以提供一些帮助,我们将不胜感激!
关键问题:
1. 如何确定多个实例之间的带宽使用情况?
2. 当某个服务器仅运行一小时时,如何避免出现 DNS 缓存问题(我可以在这里使用代理服务器吗)?
3. 怎样才能最好地保证文件快速部署到每台新部署的服务器?
4. 使用像这样的动态集群,我如何支持 FTP(我不喜欢使用 FTP,但有些项目可能需要它)。
答案1
我正在使用 Amazon EC2,但此建议也适用于 Rackspace 或其他提供商:
如何确定多个实例的带宽使用情况?指标,我建议使用 Cacti、Ganglia 和 Nagios 设置监控服务器来测量带宽、CPU、内存等。
当给定服务器仅运行一小时时,如何避免出现 DNS 缓存问题(我可以使用代理服务器吗)?将负载平衡放在代理服务器后面。如果您的提供商没有自己的解决方案,您可以使用 HAproxy 或 nginx 进行负载平衡。
确保将文件快速部署到每个新部署的服务器的最佳方法是什么?我正在使用 rsync 并且运行良好,但我仍在寻找其他解决方案。
使用这样的动态集群,我如何支持 FTP(我不喜欢使用 FTP,但有些项目可能需要它)。您的提供商应该提供一种方法来创建 IP 地址和端口的访问列表(Amazon 允许通过其 API 创建 ACL)。
答案2
以下是我对类似问题的看法:VPS 解决方案可匹配云的可扩展性和可靠性