我有一台用作 web/file/svn/sql 服务器的 linux 服务器。有 100 台机器访问它,并在此服务器上存储代码文件 (svn/code/mysql)。
操作系统位于 80 GB 硬盘上。数据位于另一个 500 GB 硬盘上。哪种方式最适合构建 HA 服务器?
1:我可以使用 rsync 镜像到相同配置的复制服务器吗?还是我应该添加另一个 HDD 并设置 rsync 来复制数据。这是一台基本服务器,所以我没有硬件 RAID 1(用于镜像)。
2:此外,如果我将 rsync 设置为每 1 小时运行一次,它是否会增加服务器负载来查找过去 1 小时内更改的文件,然后复制到备份服务器?
答案1
我会远离 rsync,因为它会增加服务器负载。特别是如果您有很多非常大的 svn 存储库。rsync 必须遍历整个文件系统,并且 svn 用于分支的方式... 您谈论的是很多文件。我会设置类似 DRBD 的东西来复制到另一个节点。
话虽如此,rsync 可能适合您,并且负载可能不会对可用性产生明显的影响。
答案2
您必须区分要实现的目标。您可以使用某种复制技术将数据复制到另一台服务器,以确保当第一台服务器完全发生故障时仍可访问数据。但是,您可以引入 RAID 来防止磁盘故障。您可以mdadm
毫无问题地创建软件 RAID 来提高可用性,但您必须意识到,这并不能防止服务器发生故障。
我建议同时做两件事:配置软件 RAID1 并按rsync
预定的时间间隔测试该方法。这会对性能产生一些影响(IO 和 CPU 方面),但您可以通过阅读手册页并关闭可能需要过多 CPU 的功能(如压缩)来限制这种影响。
但是,如果你想要“实时”复制到远程服务器,请查看drbd
答案3
您可以使用 DRBD 将数据复制到另一台机器。如果您只需要备份,那就足够了。
如果您需要高度可靠的服务,您可以构建 Linux HA 集群(heartbeat、Pacemaker、DRBD)。
在这两种情况下,我强烈推荐 DRBD User's Gude。