最合适的回答,由SO网友:Bryan \'BJ\' Hoffpauir Jr. 整理而成
坏消息是:WordPress的核心开源基础确实对在单个服务器上运行做出了很多假设(wp内容、用户上传和媒体库等等)
好消息是:几乎所有云提供商(包括Azure)都有抽象,允许您绕过这些设计限制。
基本上,您将解决以下问题:
两个(或多个)之间的负载平衡流量;“前端”;WordPress web/应用服务器。不太难,因为WordPress基本上是无状态的,除非您允许用户登录到这些站点。这是通过DNS和负载平衡器的组合实现的。您的应用程序服务器需要支持2个IP-1组将连接到可通过Internet路由的子网(虽然希望受到下面未列出的防火墙的保护),另外两个将位于与其他网络隔离的不同子网上,该子网包含数据库服务器实例,但基本轮廓如下所示:
/-- (10.0.0.1 - eth0) wp1.domain.com (10.0.1.1 - eth2)
(Public IP) wp.domain.com
\\-- (10.0.0.2 - eth1) wp2.domain.com (10.0.1.2 - eth3)
<如果您允许用户登录站点,请管理会话。如果是这样,您需要确保当他们登录到服务器1时,他们将来的所有请求都会路由到该服务器(粘性会话),或者他们访问哪个服务器无关紧要,因为会话是通过其他机制管理的(通过
Zend Server Session Clustering, 例如)。
如果您允许一些用户登录到后端来管理内容,请管理管理员登录(与上文类似)。
选择同样具有高可用性的DB系统。如果数据库崩溃导致整个系统瘫痪,那么使用两个前端服务器没有任何意义。您需要通过ClearDB或modify WordPress via plugin to leverage SQL Server 所以你可以使用native clustering systems. 这意味着如果您想自己管理DB层(2个应用程序和2个DB),则至少需要4个VM。下面是可能的情况:
/-- wp1.domain.com (10.0.1.1)\\---/(10.0.1.3) db1.domain.com (10.0.2.3)\\
wp.domain.com X |
\\-- wp2.domain.com (10.0.1.2)/---\\(10.0.1.4) db2.domain.com (10.0.2.3)/