利用两台服务器 (LAMP)

利用两台服务器 (LAMP)

我目前在单个云服务器上有我的 Web 应用程序。已经这样做了几个月,我在这个实例上拥有一切(应用程序、cron 脚本、mysql、svn、开发环境等)。

网站现在越来越大,我要打开一个新的服务器实例。利用它的最佳方法是什么?我有几个选择:

  1. 将我的开发环境连同生产 cron 脚本一起移至新实例(脚本将对数据库执行操作)。生产应用程序和数据库本身仍将保留在旧服务器中。如果我想在开发服务器上执行任何操作,此选项将有助于最大限度地减少生产服务器的意外崩溃。但这不会是纯粹的生产/开发分离,因为我仍将运行 cron 脚本,并且可能考虑在新实例上托管一些静态资产(尝试充分利用此设置)。

  2. 将数据库移至新实例。根据我所做的研究,这似乎是一个标准选项。但我想到了一些问题:应该如何处理开发/生产分离(我是否真的需要将两者分开)?静态资产——保留在应用服务器还是数据库服务器中?

目前我只能买得起两台服务器。我很想买三台,但目前我只能用这些了。

感谢您的反馈意见!

答案1

我怀疑我的回答是否“标准”,但另一种观点也许不会有害。

我建议使用第二个实例来尝试实现高可用性。使用 HAProxy 在两个服务器之间进行负载平衡,并使用分布式文件系统 (Gluster) 在实例之间复制文件。让每个服务器监视另一个服务器(例如 Corosync/Heartbeat/Keepalived),如果其中一个服务器出现故障,则让另一个服务器接管并启动新实例。如果您到目前为止一直使用单个实例,那么简单地将数据库移动到一个服务器似乎是一种浪费,因为它可能不会得到充分利用。

本质上,我的建议是完全冗余 - 这会将负载分摊到两台服务器之间。您可以设置权重,让“主”机器处理更多 Web 请求,让“辅助”机器处理更多数据库请求,或者让它们保持相等。

我认为这样做的最终结果将比仅仅将处理的一个方面转移到另一台服务器、不成比例地使用服务器以及出现多个故障点更有益。

至于开发环境,我可能会认为这更棘手。生产机器上的开发环境可能会出错。(另一方面,如果安全措施得当,在上面保留 SVN 存储库可能没有那么危险)。

相关内容