如何在双向的两台独立的Apache机器之间复制文件

如何复制/ var / www / html /两个单独的机器之间有独立的硬盘存储运行Apache Web服务器。 我打算在这两个Apache服务器之间设置负载均衡,并将Nginxconfiguration为这两个Apache服务器的前端,这些文件应该从服务器1同步到服务器2,反之亦然

我想到了多种select/解决scheme:

  • NFS :

    networking文件系统(NFS)是Sun公司最初于1984年开发的一种分布式文件系统协议,它允许客户端计算机上的用户通过计算机networking访问文件,就像访问本地存储一样。

  • DRBD aka分布式复制块设备 :

    DRBD®软件是Linux平台的分布式复制存储系统。 它被实现为几个用户空间pipe理应用程序和一些shell脚本,通常在高可用性(HA)计算机集群上使用。

  • csync2 :

    Csync2是一个群集同步工具。 它可以用来保持群集中多个主机上的文件同步。 Csync2可以处理复杂的设置,而不仅仅是2台主机,处理文件删除,并可以检测到冲突。

还有其他的select,只要把它作为一个起点。

将代码和内容pipe理,升级并部署到所有服务器是build立双向同步的更好的解决scheme。 考虑将服务器资产部署到池中的所有服务器上,而不是在一台服务器上更新,并指望同步/复制或pipe理共享文件系统。

这使您可以将您的内容/代码分开pipe理,以便您可以查看/pipe理/回滚更改。 不经意的编辑或删除也不会伤害你。

这也可以让你启动额外的节点,并通过可重复的过程帮助部署。

最简单的迭代就是让你的Web服务器周期性地对你的repo的一个特定分支进行git pull

在这个过程中,请将git pull临时位置,并将rsync放到您的httphome目录中。 这将允许你排除像repo的.git目录和README文件。

例如:

 rsync -art --delete --delete-excluded --exclude='.git/' --exclude='README*' #{repo_path}/ #{site_path} 

至于使用NGINX前面的Apache, 为什么 ? 你希望从中获得什么? 他们都是可以做反向代理和运行应用程序的Web服务器。 除非你有一个很好的理由,否则select一个networking服务器,并让负载均衡负载。