【问题标题】:Apache (PHP) & Mysql - Ideal 2 Server SetupApache (PHP) & Mysql - Ideal 2 服务器设置
【发布时间】:2015-05-12 10:08:51
【问题描述】:

我的客户目前只有一台服务器,上面同时运行着 MySql 和 Apache,在一年中的繁忙时间,他们偶尔会看到 Apache 因为连接太多而崩溃。

它们运行两个应用程序;他们繁忙的基于 PHP 的公共电子商务网站和他们(仅在工作时间忙碌)内部订单处理类型的应用程序,有 15-20 个并发用户。

我已经设法让他们增加足够的预算来购买两台服务器。我正在考虑: A) 一台运行 Apache/PHP 的服务器,另一台作为专用 MySQL 服务器,或 B) 一个只运行他们的公共网站,另一个运行 MySQL 和内部应用程序。

我看到 A) 的好处是 Mysql my.cnf 可以调整为使用该服务器的所有资源,但它的缺点是只有一个 Apache 实例运行。

B) 会将 Apache 上的负载分散到两台服务器上,但会限制 MySQL 在该服务器上的资源,即使在不使用内部应用程序的工作时间之外。

我只是无法决定采用哪种方法,如果您有任何反馈,我将不胜感激。

【问题讨论】:

    标签: php mysql apache centos mariadb


    【解决方案1】:

    这两种方法都是错误的。

    您在这里有 2 个目标;可用性和性能(在这种情况下,我认为容量是性能的一个方面)。

    为了提高可用性,您应该确保架构中没有单点故障。但是对于您提出的模型,您实际上是在创建多个单点故障 - 因此您的 2 个服务器模型的可用性低于您的单个服务器。

    从性能的角度来看,您希望将工作负载分散到可用资源中。您不能在服务器之间移动 CPU 和内存,但可以移动流量。

    因此,最佳解决方案是在两台服务器上运行这两个应用程序。设置 MySQL 集群有点复杂,但开箱即用的异步复制可能就足够了 - 将节点配置为 master-master(但从 2 个应用程序写入目标是明智的)。

    可能还有很多空间可以进一步提高系统的容量,但没有更多的细节(在本论坛中超出了适当的范围,并且可能超出了您的客户愿意支付的费用),因此很难提出建议。

    【讨论】:

    • 感谢您的回复。我以前涉足过 mysql 复制,但没有使用主-主设置。我有点担心复制的冲突和速度(例如,用户将一个项目添加到购物车,然后通过负载均衡器发送到查看购物车页面到其他服务器并且项目不存在),但会进一步研究这个.. .
    • 对此有一些解决方案 - 这与如何实现负载平衡这一更困难的问题相关联。我会推荐一本涵盖其中一些内容的书,但我可能会被指控公然植入产品(请参阅我的个人资料:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2016-07-16
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多