如何在两台运行 Apache Web 服务器的独立硬盘存储的独立机器之间复制 /var/www/html/。我计划在这两台 Apache 服务器之间设置负载平衡,并将 Nginx 配置为这两台 Apache 服务器的前端,文件应从服务器 1 同步到服务器 2,反之亦然
答案1
我想到了很多选择/解决方案:
NFS:
网络文件系统 (NFS) 是一种分布式文件系统协议,最初由 Sun Microsystems 于 1984 年开发,[1] 允许客户端计算机上的用户通过计算机网络访问文件,就像访问本地存储一样。
-
DRBD® 软件是 Linux 平台的分布式复制存储系统。它以多个用户空间管理应用程序和一些 shell 脚本的形式实现,通常用于高可用性 (HA) 计算机集群。
-
Csync2 是一个集群同步工具。它可用于使集群中多个主机上的文件保持同步。Csync2 可以处理远不止 2 个主机的复杂设置,处理文件删除并检测冲突。
还有其他可用选项,只需将此作为起点即可。
答案2
与设置双向同步相比,管理、推广和部署代码和内容到所有服务器是更好的解决方案。考虑将服务器资产部署到池中的所有服务器,而不是在一台服务器上更新,并依赖同步/复制,或管理共享文件系统。
这样您就可以单独管理内容/代码,以便您可以查看/管理/回滚更改。无意的编辑或删除不会对您造成伤害。
这还将允许您启动其他节点并通过可重复的过程帮助部署。
最简单的迭代就是让你的 Web 服务器定期执行git pull
repo 的特定分支的操作。
在此过程中,执行git pull
到暂存位置,然后 rsync 到您的 httphome 目录。这将允许您排除诸如 repo.git
目录和 README 文件之类的内容。
例如:
rsync -art --delete --delete-excluded --exclude='.git/' --exclude='README*' #{repo_path}/ #{site_path}
至于使用 NGINX 作为 Apache 前端,为什么?你希望从中得到什么?它们都是可以执行反向代理并运行应用程序的 Web 服务器。除非你真的有充分的理由,否则请选择 Web 服务器,然后让负载均衡器平衡负载。