joebegborg07 Asked: 2016-11-09 00:36:40 +0800 CST2016-11-09 00:36:40 +0800 CST 2016-11-09 00:36:40 +0800 CST 使用 robocopy 进行 IIS 复制的 Wordpress 772 我们在 4 个 IIS 服务器上设置了一个 wordpress 环境。我们正在考虑使用触发 robocopy 脚本的计划任务每 5 分钟复制一次 wordpress 目录。 对这种做法有何看法?有没有人用过这个或类似的? windows iis web-server wordpress 3 个回答 Voted Anthony Fornito 2016-11-10T07:23:40+08:002016-11-10T07:23:40+08:00 拥有 4 个前端服务器同时共享相同的文件,并且每个都能够在不使用某种 DFS 或专用于目录同步的第三方程序的情况下进行写入,这将是一场噩梦。 使用 azure,您可以查看 3 件事。 共享存储,获得自己的专用存储可能会产生一些成本,我不确定配置,但 Azure 确实提供了这个。这将确保您的所有文件在写入后立即可供每台服务器使用。 Azure DFS,DFS 是一个基于 Windows 的目录同步工具,效果很好,也不确定成本,但配置可能会更容易一些。DFS 确实是异步工作的,所以会有一点延迟,但不会太多。 (我将解释如何做到这一点,然后再也不谈论它,因为这是一个可怕的想法并且会失败。)创建一个脚本,首先比较所有四台服务器上的数据,然后复制差异数据。您需要将每个目录共享给运行脚本的一台服务器,设置权限以便服务器可以读取和写入,然后进行故障排除故障排除、故障排除。 上面的任何一个选项都可以完成这项工作,如果您的工作依赖于这项工作,我建议您远离选项 3。 话虽如此,而且您不想花钱,请按照以下步骤操作。 查看一个名为“免费文件同步”的程序。免费版本有一些非常好的功能我相信有一个付费版本,但我不确定你得到的增强。当我试图实现与您想要做的类似的事情并且懒得设置 DFS 时,我已经在我的很多开发环境中使用了它。 只让一个服务器可写,这可以通过在每台服务器上配置一个 URI 来轻松完成,该 URI 说明是否创建文章转到 ServerA,或者在 web.config 中重写 URL,或者 WordPress 是 php 使用: header('位置: http: //myhost.com/mypage.php '); 每个都需要一点编码和PHP、IIS知识。 真正有趣的部分是,ServerA 是作者服务器(仅可写服务器),我们如何在没有负载平衡器的情况下将流量引导到 ServerB、ServerC 和 ServerD 以进行读取? 简短的回答你不能,那不完全正确,我有一个客户曾经坚持不使用负载平衡器,他能够通过一系列 powershell 脚本根据数量将连接从一个服务器移动到另一个服务器每个盒子上的工作进程或类似的东西。无论哪种方式都很难做到,不值得花费时间和精力。 看看你是否不能在服务器上配置网络负载平衡,它需要一个额外的 IP,但它只有一个 DNS 更改,并且流量可以分布在 3 台服务器上读取。 祝你好运! Best Answer joebegborg07 2016-11-15T01:37:25+08:002016-11-15T01:37:25+08:00 感谢所有建议的人。 我们的解决方案是使用名为 resilio 的工具使用对等同步方法。 Resilio 允许我们在对等同步集群中配置多台计算机(在本例中为 IIS 前端)。从集群中的每台计算机中选择一个文件夹用于同步过程。 resilio 服务(在后台运行的 Windows 服务)监视这些文件夹是否有任何更改,如果对相关前端的任何指定文件夹进行更改,resilio 会将更改推送到其他服务器。 我希望这可以帮助其他人将来面临类似问题。 Tim 2016-11-09T11:50:42+08:002016-11-09T11:50:42+08:00 我不认为计划任务和 Robocopy 是一个很好的方法。由于 5 分钟的窗口,有时会请求资源,但负载均衡器选择的服务器不提供该资源。对于大部分静态站点,这种情况发生的频率要低于频繁更改的繁忙站点。更高的频率或使用不同的同步技术,如 Bittorrent Sync(现在称为Resilio Sync)会大大改善这一点,但不能消除问题。 将您的 wp-content 或者只是 wp-content/uploads 文件夹放到共享驱动器上会是一个更好的解决方案。另一种看待这个问题的方法是让其中一个服务器托管该文件夹,并让其他服务器共享它。使用磁盘缓存,服务器上的负载不应该比其他服务器高太多。 更新 看看这篇文章,了解关于页面缓存的想法,这篇文章是关于CDN 的。它是关于 Nginx 的,所以你需要为 IIS 解决它,但它背后的理论适用于任何 Web 服务器。
拥有 4 个前端服务器同时共享相同的文件,并且每个都能够在不使用某种 DFS 或专用于目录同步的第三方程序的情况下进行写入,这将是一场噩梦。
使用 azure,您可以查看 3 件事。
共享存储,获得自己的专用存储可能会产生一些成本,我不确定配置,但 Azure 确实提供了这个。这将确保您的所有文件在写入后立即可供每台服务器使用。
Azure DFS,DFS 是一个基于 Windows 的目录同步工具,效果很好,也不确定成本,但配置可能会更容易一些。DFS 确实是异步工作的,所以会有一点延迟,但不会太多。
(我将解释如何做到这一点,然后再也不谈论它,因为这是一个可怕的想法并且会失败。)创建一个脚本,首先比较所有四台服务器上的数据,然后复制差异数据。您需要将每个目录共享给运行脚本的一台服务器,设置权限以便服务器可以读取和写入,然后进行故障排除故障排除、故障排除。
上面的任何一个选项都可以完成这项工作,如果您的工作依赖于这项工作,我建议您远离选项 3。
话虽如此,而且您不想花钱,请按照以下步骤操作。
查看一个名为“免费文件同步”的程序。免费版本有一些非常好的功能我相信有一个付费版本,但我不确定你得到的增强。当我试图实现与您想要做的类似的事情并且懒得设置 DFS 时,我已经在我的很多开发环境中使用了它。
只让一个服务器可写,这可以通过在每台服务器上配置一个 URI 来轻松完成,该 URI 说明是否创建文章转到 ServerA,或者在 web.config 中重写 URL,或者 WordPress 是 php 使用:
header('位置: http: //myhost.com/mypage.php ');
每个都需要一点编码和PHP、IIS知识。
简短的回答你不能,那不完全正确,我有一个客户曾经坚持不使用负载平衡器,他能够通过一系列 powershell 脚本根据数量将连接从一个服务器移动到另一个服务器每个盒子上的工作进程或类似的东西。无论哪种方式都很难做到,不值得花费时间和精力。
看看你是否不能在服务器上配置网络负载平衡,它需要一个额外的 IP,但它只有一个 DNS 更改,并且流量可以分布在 3 台服务器上读取。
祝你好运!
感谢所有建议的人。
我们的解决方案是使用名为 resilio 的工具使用对等同步方法。
Resilio 允许我们在对等同步集群中配置多台计算机(在本例中为 IIS 前端)。从集群中的每台计算机中选择一个文件夹用于同步过程。
resilio 服务(在后台运行的 Windows 服务)监视这些文件夹是否有任何更改,如果对相关前端的任何指定文件夹进行更改,resilio 会将更改推送到其他服务器。
我希望这可以帮助其他人将来面临类似问题。
我不认为计划任务和 Robocopy 是一个很好的方法。由于 5 分钟的窗口,有时会请求资源,但负载均衡器选择的服务器不提供该资源。对于大部分静态站点,这种情况发生的频率要低于频繁更改的繁忙站点。更高的频率或使用不同的同步技术,如 Bittorrent Sync(现在称为Resilio Sync)会大大改善这一点,但不能消除问题。
将您的 wp-content 或者只是 wp-content/uploads 文件夹放到共享驱动器上会是一个更好的解决方案。另一种看待这个问题的方法是让其中一个服务器托管该文件夹,并让其他服务器共享它。使用磁盘缓存,服务器上的负载不应该比其他服务器高太多。
更新
看看这篇文章,了解关于页面缓存的想法,这篇文章是关于CDN 的。它是关于 Nginx 的,所以你需要为 IIS 解决它,但它背后的理论适用于任何 Web 服务器。