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