我们在4台IIS服务器上设置了一个wordpress环境。我们正在考虑使用计划任务来触发robocopy脚本,每5分钟复制一次wordpress目录。
对这种方法有何看法?有没有人使用过这个或类似的?
我们在4台IIS服务器上设置了一个wordpress环境。我们正在考虑使用计划任务来触发robocopy脚本,每5分钟复制一次wordpress目录。
对这种方法有何看法?有没有人使用过这个或类似的?
Answers:
如果拥有4个前端服务器同时共享相同的文件,并且每个服务器都能够在不使用某种DFS或专用于目录同步的第三方程序的情况下进行写入,那将是一场噩梦。
使用天蓝色,您可以研究3件事情。
共享存储,获得您自己的专用存储可能会带来一些成本,虽然我不确定配置,但是Azure确实提供了这一点。这样可以确保所有文件在写入后立即可用于每个服务器。
Azure DFS,DFS是一个基于Windows的目录同步工具,效果很好,也不确定成本,但配置可能会容易一些。DFS确实可以异步工作,因此延迟很小,但延迟不大。
(我将解释如何完成此操作,然后再不赘述,因为这是一个可怕的想法,并且会失败。)创建一个脚本,该脚本将首先比较所有四台服务器上的数据,然后复制差异数据。您将需要将每个目录共享给运行脚本的一台服务器,并具有设置权限,以便服务器可以读写,然后进行故障排除和故障排除。
如果您的工作取决于这项工作,那么上面的任何一个选项都可以完成工作,我建议您远离选项3。
话虽如此,并且您不想花费任何金钱,请按照以下步骤操作。
看一个叫做“免费文件同步”的程序。免费版本有一些非常好的功能,我相信有付费版本,但是我不确定您获得的增强功能。当我试图实现与您要执行的操作类似的功能时,我曾在很多开发环境中使用过它,并且懒于设置DFS。
使仅一台服务器可写,这可以通过在每台服务器上配置一个URI来轻松完成,该URI上说创建文章转到ServerA,或者在您的web.config中重写URL,或者是WordPress被php使用:
header('Location:http : //myhost.com/mypage.php ');
每种方法都需要一点点编码和PHP,IIS知识。
简短的答案,你不能,那是不完全正确的,我曾经有一个客户坚决不使用负载均衡器,他能够通过一系列Powershell脚本根据连接数量将连接从一台服务器移动到另一台服务器工人在每个盒子上加工或类似的东西。每种方法都很难做到,不值得花费时间和精力。
看看是否无法在服务器上配置网络负载平衡,它将需要一个附加IP,但仅更改一个DNS,就可以分配流量以在3个服务器之间读取。
祝好运!
感谢所有提出建议的人。
我们的解决方案是使用对等同步方法和称为resilio的工具。
Resilio允许我们在对等同步群集中配置多台计算机(在本例中为IIS Front End)。从群集中的每台计算机中选择一个文件夹以用于同步过程。
resilio服务(Windows服务在后台运行)监视这些文件夹中的任何更改,如果对相关前端上的任何指定文件夹进行了更改,则resilio会将所做的更改推送到其他服务器。
我希望这可以在将来帮助其他面临类似问题的人。
我不认为计划任务和Robocopy是个好方法。由于窗口时间为5分钟,因此有时会请求资源,但负载均衡器选择的服务器将无法使用该资源。对于静态较大的站点,这种情况的发生频率要比频繁更改的繁忙站点少得多。更高的频率或使用其他同步技术(例如Bittorrent Sync(现在称为Resilio Sync))会对此有所改善,但不能消除问题。
将您的wp-content或仅将wp-content / uploads文件夹放在共享驱动器上将是一个更好的解决方案。解决此问题的另一种方法是让一台服务器托管该文件夹,让其他服务器共享该文件夹。使用磁盘缓存时,服务器上的负载不应比其他服务器高很多。
更新资料
看看这篇文章关于页面缓存的想法,这一次的CDN。它与Nginx有关,因此您需要针对IIS进行研究,但是其背后的理论对任何Web服务器都是有效的。