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

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

如何在两台运行 Apache Web 服务器的独立硬盘存储的独立机器之间复制 /var/www/html/。我计划在这两台 Apache 服务器之间设置负载平衡,并将 Nginx 配置为这两台 Apache 服务器的前端,文件应从服务器 1 同步到服务器 2,反之亦然

答案1

我想到了很多选择/解决方案:

  • NFS

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

  • DRBD 又称分布式复制块设备

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

  • csync2

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

还有其他可用选项,只需将此作为起点即可。

答案2

与设置双向同步相比,管理、推广和部署代码和内容到所有服务器是更好的解决方案。考虑将服务器资产部署到池中的所有服务器,而不是在一台服务器上更新,并依赖同步/复制,或管理共享文件系统。

这样您就可以单独管理内容/代码,以便您可以查看/管理/回滚更改。无意的编辑或删除不会对您造成伤害。

这还将允许您启动其他节点并通过可重复的过程帮助部署。

最简单的迭代就是让你的 Web 服务器定期执行git pullrepo 的特定分支的操作​​。

在此过程中,执行git pull到暂存位置,然后 rsync 到您的 httphome 目录。这将允许您排除诸如 repo.git目录和 README 文件之类的内容。

例如:

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

至于使用 NGINX 作为 Apache 前端,为什么?你希望从中得到什么?它们都是可以执行反向代理并运行应用程序的 Web 服务器。除非你真的有充分的理由,否则请选择 Web 服务器,然后让负载均衡器平衡负载。

相关内容