更新、添加、删除负载均衡器后的插件、主题或WordPress

时间:2016-11-16 作者:theyuv

我在两台相同的服务器上运行wordpress。两者都位于负载平衡器后面。两者都使用相同的数据库。

我该如何更新插件或wordpress?

我目前的想法是:

断开其中一台服务器与LB的连接-以便我知道我正在使用哪台服务器plugins/some_plugin) 并替换非活动服务器上的该文件。(因为已经对DB进行了更改,所以我不想使用仪表板来更新其他服务器)

我认为这是建立wordpress的一种常见方法,但我没有找到太多关于它的文档。是否有首选设置?

谢谢

5 个回复
SO网友:Jen

这是一个很好的问题-我个人以前从未遇到过这个问题,但以下是我会尝试的,假设:

您有一个用于启动新实例的服务器映像,您正在使用CDN和云存储进行映像和上载(而不是使用本地上载文件夹),这意味着您可以启动和关闭服务器实例,而无需担心数据丢失-每台服务器之间的文件和配置都是相同的。

  • 启动服务器的新实例,但不要将其添加到负载平衡器
  • 将主机文件指向实例的IP
  • 更新实例上的插件,确保一切都按预期工作,创建更新服务器的映像,根据更新的映像再启动一个实例,将LB指向新实例,这是一个有点痛苦的过程,我认为下一步还将研究自动化部署工具,例如Capistrano,或者类似Deploy的服务。

SO网友:Mark Kaplun

这需要分几个步骤完成

复制数据库(如果您还没有数据库)仅将管理区域连接到该服务器(在本地主机文件中定义IP或任何其他方式并进行升级)

  • 更新另一台服务器上的插件(基本上,更新代码就足够了)
  • 将另一台服务器连接到“新”DB
  • 更改LB配置以启用另一台服务器
  • 由于这不是一个非常快速的过程,您应该尽量减少作为纯插件使用的插件数量,或者尝试同时升级尽可能多的插件。

    (我写了插件,但它也适用于主题和核心)

    SO网友:Erik Kangas

    我多年来一直处于这种情况——负载平衡器后面有3台服务器。不同的磁盘子系统。共享数据库。实际上,我是通过寻找一些简化管理的方法来发现这个问题的。多年来,我一直在做的事情(以及一直工作良好的事情)如下:

    确保所有内容(数据库和文件)都有自动备份。。。以防万一。我从来都不需要它们,但这始终是一个先决条件

    最好的解决方案是执行上述操作,但首先让您没有更新的服务器停止服务,然后在负载平衡器上重新启用它们之前对其进行更新。我想这取决于你是否适合你博客的“快速简单”与“风险”曲线。

    SO网友:indextwo

    大多数答案似乎都是基于这样一种假设,即您只是在远程服务器上运行/更新您的网站;因此,一些解决方案似乎非常复杂。我有两个站点都运行在负载平衡器之后——一个有2台服务器,另一个有4台;它们都可以根据需要扩展到任意多个服务器。维护这两个站点(&P);使用本地构建Git和Jenkins进行了几次点击更新。

    我有一份网站的功能副本localhost 正在运行XAMPP. 数据库不同,但文件结构不同。我还有一个私人BitBucket帐户和.gitignore 忽略像我的本地wp-config 以及/uploads/ 文件夹(我不想或不需要与服务器同步)。

    每当有插件更新时,我都会在我的localhost 正常情况下。完成后,我打开Git客户端并将更改推送到BitBucket。

    在服务器上,我有一个Jenkins 设置为从我的BitBucket源构建到实时站点的服务。我单击“构建”,等待几分钟,就完成了。Jenkins构建到所有服务器,并且有rsync可用于确保一切都是simpatico。

    所以我的整个更新过程是Update local -> Git push -> Jenkins build

    这取决于你是否有localhost 或者其他可以用Git推动的可控构建,但一旦它建立并运行,更新负载平衡的Wordpress站点就变得非常容易。

    SO网友:Barry Chapman

    这个问题已经有一段时间没有得到回答了,但我有一些想法,我想补充一下——在过去几年中,我不得不多次处理同样的情况。它涉及几个流量极高、可见性很高的站点,每个站点都有三到四个节点进行负载平衡。

    我做的第一件事是编写了一个linux脚本,基本上每天作为cron作业运行两次。它使用wp-cli 工具它在作为LB节点的每台服务器上运行。它(当时)与一个插件一起工作,可以限制自动更新的插件。

    我最近做的一件事是有一个登台服务器,我们可以访问它进行内容/代码更改。然后将该环境上的更改同步到当时处于活动状态的任何活动节点。这是在AWS EC2实例中使用RDS for DB完成的。它允许相对无缝的更新。我们必须围绕DB推送进行一些定制,以保留尚未同步到登台环境的生产数据。