我目前在 HostingRails.com 上有一个 VPS,但对这项服务相当失望,所以我一直在考虑改用 linode。我有三个 rails 应用程序(我的实时应用程序、实时应用程序的 QA 版本和一个redmine) 在 Apache 上的 Passenger、phpbb 安装和一个 mysql 数据库上运行,目前它们在我的 VPS 上运行,总共占用了大约 400MB 的 RAM。
我想知道是最好弄一个 720MB 的节点,把所有东西都放在那里,还是弄两个 360MB 的节点,一个节点上放实时站点,另一个节点上放 QA 站点和 redmine(在这种情况下,你会建议两个独立的数据库,每个节点一个)?有人建议我拆分我的应用程序是个好主意,但我不知道这是否正确;我认为如果我有一个节点,如果实时应用程序需要更多内存,它可以从我的 QA 安装和 redmine 可能不会完全使用的 360MB 中拿出来。
此外,我目前将我的 SVN(1 个活动项目、几个不活动项目、两个用户)托管在 Dreamhost 上,因为我已提前支付了计划费用并将我的 SVN 留在那里,而不是将其移动到我的 VPS。将 SVN 移动到 linode 会影响您的答案吗?
答案1
使用两个节点,您不仅可以获得相同数量的内存,还可以获得两倍的 CPU 时间和 IO 令牌。SVN
可以在与 Passenger 相同的 apache 实例中运行,而不会对性能造成太大影响。
另外,您可能需要考虑不同的设置:一个数据库节点和一个 Web 服务器节点。两者都不会未得到充分利用(毕竟 Apache 相当繁重),并且如果它们位于同一个数据中心,您可以将两个公共 IP 都指向 Web 服务器节点(Linode 允许这样做),并让它通过 Linode 的 LAN 与数据库节点通信(避免传输配额)。
答案2
从为几家基于 Rails 的企业提供托管服务的经验来看,将数据库和应用程序分开总是被证明是成功的(正如 fahadsadah 指出的那样)。
但是我不会运行 Apache和在同一台机器上同时运行 nginx,尤其是在资源有限的 vps 环境中。如前所述,Apache 本身相当繁重,但它可以处理您对所有 Passenger、svn、php 的需求。所以我不会将 nginx 添加到组合中。毕竟,它是需要维护(配置、更新/修补等)的另一款软件。
此外,我个人倾向于不是将我的源代码托管在与我的应用程序运行相同的设置中。我对我们代码的稳健性和安全性非常有信心,但如果有人设法通过应用程序和服务器找到方法,他也可以完全访问我们的源代码。而你的数据和你的代码修订版本可能是你最不想让破解者得到的东西……
我知道这是无耻的推销,但我的公司以该品牌提供捆绑的 Redmine 和 SVN 托管服务普莱尼奥。应该还有其他类似 Planio 的服务,所以你可以做出选择。我的主要建议是:尝试将支持系统的托管委托给可信赖的外部方,并将托管工作重点放在核心内容(即你的应用程序)上。