我有一个客户有一个流行的 Wordpress 博客,偶尔会出现短期流量高峰(当该网站在国家电视上推广时)。该博客已托管在 Amazon EC2 实例上,我们正在探索使用 Amazon 的负载均衡器来帮助应对高峰。
关于这个的两个一般的“大局”问题:
要设置它,我是否可以从现有服务器创建一个机器映像 (AMI),然后将其复制到一个新实例中,并告诉负载均衡器在两个实例之间分配流量?(或者超过两个,我想......)
当我的客户需要编辑博客上的内容时,似乎我需要一种方法将他们指向一个特定的“主”实例,以便他们可以在该服务器上使用 WordPress 管理工具,然后复制 (rsync) 内容从那个实例到其他实例,所以每个人都有相同的数据。这是正确的方法吗?
任何其他提示/建议将不胜感激。我是 Amazon 负载均衡器的新手,所以我只是想在深入了解细节之前先了解一下大局。
更新:一些静态内容位于 Amazon CloudFront CDN 上。我不熟悉 APC,但我现在正在研究它(谢谢)。WP-SuperCache 是下一个要实施的列表。我相信数据库在一个单独的服务器实例上。
谢谢你,埃里克
由于您还没有安装WP Super Cache,这真的应该是您的第一步。它安装起来非常简单,并且在负载下可以提供一些显着的改进。该插件能够自动生成页面的静态 html 版本,并将它们提供给访问者,而不需要在每次点击时启动 PHP 以动态生成每个页面。
如果这不能给您带来足够的性能提升,那么可能是时候考虑负载平衡了。标准负载平衡堆栈的基本架构类似于:
不过,我对 Wordpress 不够熟悉,不知道它处理负载平衡的能力如何。为了正常工作,每个应用程序服务器不得在本地存储任何状态(会话等),而是必须使用数据库服务器来处理所有事情。这样,客户端可以被定向到三个后端服务器中的任何一个,而不会被踢出他们登录的 wordpress 会话。
不过,在开始实施负载平衡基础架构之前,您确实需要分析您的服务器并查看它遇到了哪些瓶颈。也许瓶颈实际上在数据库服务器中。也许您看到异常高的 iowait。也许您正在耗尽可用 RAM 并迫使内核进入交换区。谁知道。其中任何一个都会显着降低性能,并且可以通过调整 EC2 实例的大小来相当容易地修复其中的任何一个。