如何提高启动PHP + MySQL应用程序的可用性?

昨天,Rackspace DFW数据中心出现了几个小时的停顿,让我想到了在那里改善服务器结构的延迟行动。 到目前为止,我一直在使用一个CentOS实例来处理PHP + MySQL应用程序的基本LAMP设置。 所以昨天我的申请连续下了三个多小时,真是太糟糕了。

我想到:

  • 至less有两个实例处理跨至less两个数据中心(Rackspace或不)的应用程序。
  • 拥有至less两个MySQL主/从configuration实例来托pipe数据,至less分成两个数据中心。
  • 在应用程序实例之前放置一个负载均衡器,以避免处理DNS传播,并能够按照我的意愿无痛添加或删除应用程序实例。

所以我的问题是:

  • 上述三项措施如何发挥? 还有什么可以做的?
  • 什么是没有停机时间的最佳方式?
  • 如何处理代码部署
  • 任何书籍/白皮书/等你可以推荐来帮助我在这里?
  • 奖金:如何做到这一点? :P

底线

@ HTTP500是正确的:可伸缩性是一个不平凡的任务。 即使一切都基于EC2 LoadBalancer&co等基础设施工具,您仍然需要一个小小的专家团队来操作它。

LAMPnetworking托pipe的高可用性

假设您要确保您的网站可以快速扩展X个网站展示次数。 但是,为了帮助您,您需要更多关于您的应用程序的信息。 我仍然会推荐看看Amazee , fortrabbit等团队提出的解决scheme。

给你一些关于“入门”的想法,这里是一张图( Amazee提供 ):

LAMP HA计划

Scheme很好地说明了HTTP请求如何被服务(从负载平衡器开始)。 这样的解决scheme需要很多好的计划,这将有助于你决定你是否还真的要去做。

要实现一个原始的乒乓和重生 – 你将需要一个心跳的故障转移。 我会build议尝试http://www.keepalived.org/ 。 对于您的LAMP,您可以拥有以下类别的VM实例:

  • 一个负载平衡器(就像在diagramm – 我推荐ngnix ,由俄罗斯智能屁股写)
  • Apache(PHP应用程序Web服务器)
  • Memcache或其他types的caching服务器(这里你的应用程序可以更聪明,如果它知道内存caching)
  • 类似NFS的文件系统,但不是NFS! GlusterFS是一个很好的候选人。
  • Mysql从 – 主数据库集群

正如你所看到的,你将不得不自动化监控,即做一些基于Keepalive的脚本,确保一切都是活的。 该脚本可以检查每个实例的毫秒“可用性分数”。

PS

继续阅读幻灯片http://www.slideshare.net/AmazeeAG/php-high-availability-high-performance希望能够让你更深入地了解如何实现你的目标。