在群集(复制)服务器上的wordpress

我们有一个集群环境,我们的网站运行。 有两个负载均衡的Web服务器和一个数据库服务器。 所有代码都部署到主服务器,并使用同步软件自动复制到辅助服务器。 这是一个Windows环境。

除了编辑主题和上传媒体之外,Wordpress在这种环境下效果很好。 问题是任何上传的内容都需要上传到主服务器,以便将其复制到辅助服务器。 复制不是双向的。 在辅助服务器上上传或更改的文件不会同步到主服务器。

在网站的pipe理端请求被发送到主服务器的情况下,事情按预期工作。 上传的图像上传到wp-content / uploads的path,然后复制到辅助服务器。

编辑主题文件也是如此。 WordPresspipe理员编辑当前活动主题的正确文件。

如果负载平衡器将请求发送到辅助服务器,则会暴露问题。 如果用户通过pipe理员上传文件或编辑主题文件,则这些文件将进入辅助服务器,不会复制到主服务器,并且网站不同步。 我已经尝试在其他设置对话框中inputnetworkingpath(\ primary_server \ c $ \ inetpub \ wwwroot …),但WordPress似乎不喜欢networkingpath。 我试图上传图片时出现错误,并且99%确定这不是安全问题。 它与path的格式有关。

即使我成功地为图片上传inputnetworkingpath,我也不确定如何将主题编辑器指向networking位置,以便对主服务器上的文件进行编辑而不是本地编辑。

我们最初设置了一个规则,告诉负载均衡器“如果请求是以www1的子驻留进来的,向主服务器发送请求”,认为我们可以通过让最终用户转到主服务器上强制进行所有编辑www1.domain.com/wp-admin/。 问题是,wordpress然后想写的内容中的所有链接是绝对的www1这不是意图。 如果所有链接和内容都转到www1,那么站点就不再为所有意图和目的进行负载均衡。

wordpress可以像我所描述的那样在一个集群环境中工作吗? 使用mod_rewrite是没有太大的select,因为在IIS上,我知道有插件,使这个function。

如果您的负载均衡器允许您执行此操作,请在url中查找完整的pipe理path:“www.domain.com/wp-admin/”,并将请求发送到主服务器。

当你在它的时候,你应该把wp-admin文件夹改成其他一些随机的名字以保证安全。

我通过使用GlusterFS来解决这个问题,以提供两个服务器通用的安装点。 它比使用rsync更好,因为它正确地处理删除操作并支持故障转移 – 任一节点都可能失败,并且所有节点都能正常工作,而当它恢复时,它将自动修复任何丢失的文件。

在您的lod平衡器中插入透明cookies或使用IP粘性来解决会话问题。

处理主题和插件更新比较困难,特别是如果您使用标准软件包进行wordpress安装。 这也可以被放在gluster,但有保持它的性能优势。