我正在考虑构建一个小集群(可能在Linode上):
>一个Linode NodeBalancer,用于平衡应用服务器之间的负载.它可以将来自特定客户端的所有流量保持到一个应用服务器,但WP通过cookie处理会话,因此不那么重要.
>两个(或更多)应用服务器 – Linode(512?)VPS运行Debian6 / Apache2 / PHP5 / wordpress,但是nginx for caching.
>一个MysqL(或MariaDB?)数据库服务器(同样是一个VPS),也许是HyperDB的奴隶.
>开发是在一个普通的旧FBSD / Apache2 / MysqL / PHP5内部完成的,部署只会将新代码一次推送到所有应用服务器,并且任何数据库都会更改为数据库服务器.
>备份将存储在本地.我们可以在低流量时备份一个应用服务器(它们应该是相同的?)以保持负载.
>电子邮件通过MailChimp处理.简单.
WP本身正在运行带有Xcache的W3 Total Cache,我正在考虑用于图像和其他静态文件的CDN,缓存头已经被用于那些静态文件……
计划是,随着我们的扩展,我可以根据需要添加更多的应用程序和/或数据库服务器.
简而言之:这个设置会起作用吗?会有效吗?我以前从未建造过这样的东西,所以我想确保我没有错过任何东西.
解决方法
>我不知道linode的负载平衡器的成本,但我发现我喜欢控制运行HAProxy或Nginx的通用VPS的配置以实现负载平衡(我选择了HAproxy).
>确保您有足够的RAM.不幸的是,到目前为止我发现的公开产品不允许你调整RAM和HDD的数量(我需要更多的RAM,但不是那么多HDD.哦,好吧).
>确保您的VPS持久.如果关闭或硬件故障,您不希望丢失在VPS上运行的数据(特别是对于MysqL). This is MySQL’s documentation for EC2,但有些相同的概念适用).
>一定要确保将MysqL复制到其他服务器,甚至是多个从属服务器.不想丢失数据.
>一定要确保将备份检索到非现场服务器.
>如果要部署到多个负载平衡的服务器(2个或更多应用服务器),请使用备份rsync的“主”服务器来更新代码.这简化了你的dev-push进程(采用master out out of load balance方案,确保slave不与旧master进行rsync,将代码推送到master,确保一切正常工作,将rsyncing从master转为slaves,然后将master添加回loadbalance方案).
我相信还有更多,但问题中概述的设置似乎很好.