坏消息:Wordpress的核心开源基础确实对在单个服务器上运行做了很多假设(wp内容,用户上传和媒体库仅举几例)
好消息:几乎所有云提供商(包括Azure)都具有抽象,可让您解决这些设计限制。
从根本上讲,您将解决以下问题:
- 在两个(或更多)“前端” Wordpress Web /应用服务器之间进行负载平衡流量。除非您让用户登录到网站,否则Wordpress基本上是无状态的,这并不太难。这是通过DNS和负载平衡器的组合来完成的。您需要为应用服务器提供2个IP的支持-一组将连接到可通过Internet路由的子网(尽管希望受到下面未概述的防火墙的保护),而另外两个将位于与以下地址隔离的不同子网中另一个网络并包含数据库服务器实例,但基本概述如下:
/-(10.0.0.1-eth0)wp1.domain.com(10.0.1.1-eth2)
(公共IP)wp.domain.com
\-(10.0.0.2-eth1)wp2.domain.com(10.0.1.2-eth3)
如果允许用户登录站点,则管理会话。如果是这样,您将需要确保当他们登录到服务器1时,将来所有的请求都将路由到该服务器(粘性会话),或者访问哪个服务器都没有关系,因为会话是通过其他机制管理的(例如,通过Zend Server会话群集)。
管理管理员登录信息如果您要让某些用户登录到后端以管理内容(类似于上面的内容)。
选择还高度可用的数据库系统。如果您的数据库崩溃导致整个系统瘫痪,那么拥有两个前端服务器毫无意义。您需要通过ClearDB利用MySQL主/从复制,或者通过插件修改WordPress以利用SQL Server,以便可以使用其本机群集系统。如果要自己管理数据库层(2 x App和2 x 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)/
注意 -为确保可靠的故障转移并保护系统的安全性,通常使用THIRD网络子网通过专用通道将两个数据库节点相互连接,该专用通道与应用服务器用来与之通信的其他通信网络分开数据库和应用服务器用于与外界通信。
启用连接池可最大程度地提高应用服务器的数据库连接的性能和可靠性。
利用W3 Total Cache或Super Cache之类的缓存插件来最大程度地减少前端服务器上的负载。
以下指南提供了有关如何应对上述每个挑战的具体说明。在Azure中有多种处理方法,因此您需要决定如何攻击每个挑战,然后处理在堆栈中上下移动时这些选择所施加的约束。