这是我脑海深处萦绕不去的想法之一。
我正在开发一个高可用性集群的家庭测试平台,该集群仅由计算机组成,没有用于存储的 SAN 或 NAS,只是“如果我想要一台或两台即使硬件发生故障也能使用的服务器,并且我有一些旧机器可以使用,我可以做到吗?”。想想系统硬件级别的 RAID-1。
我正在考虑尝试通过安装 Linux 发行版、使用 Pacemaker/STONITH 以主/主模式安装 DRBD、然后安装 Xen 来虚拟化实际提供要复制的系统的服务器来实现这一点。
最近在使用 VMWare ESXi 进行工作时,我想知道是否可以有某种优势,即使用 ESXi 在几台机器上安装 Linux VM,然后使用 DRBD 和 Pacemaker/STONITH 在两个 VMWare ESXi 系统上的虚拟机之间复制服务器服务(并且从等式中删除 Xen,因为我可以启动其他 VM)。
当时我认为我喜欢管理界面在 VM 端提供有关性能、磁盘使用情况等的统计数据的或多或少直接的方式,而除了命令行之外,我没有看到有关 Xen 或 DRBD 管理的任何内容(尽管我讨厌使用 Windows 系统来监控 VMWare 服务器)。
再想想,这会增加一层复杂性,并且可能增加网络难度,因为我可能更容易用专用硬件运行 Linux/DRBD 复制(每台机器都有一个用于交换机的 NIC,一个用于相互交叉的 NIC 用于磁盘 I/O)并且我想找出我可以做些什么来“免费”创建这样的集群……而 VMWare 除了 ESXi 之外的解决方案绝对不便宜。
有没有其他人尝试过类似这样的配置,在虚拟机而不是裸机硬件中运行 DRBD 的虚拟机?除了使用免费的 vSphere 客户端(或选择的“免费”虚拟化)进行性能/管理监控之外,这种配置是否还有其他优势?
答案1
至少对于 Xen,我的经验是最好让 Dom0 处理块设备。我还没有处理过 DRDB,但对于 iSCSI,最好让 Dom0 成为 iSCSI 启动器,然后让 DomU 使用生成的块设备。
DRBD 并不关心卷上运行的文件系统,因此我认为这最好在 DomO 中完成。这也使您能够让 DRBD 备份 Window DomU。
您可能还想查看这个问题因为它解决了您关于在虚拟机上运行心跳的一些问题。
答案2
我一直在按照您描述的方式进行设置,效果非常好!(Xen服务器)
我设置了一台旧但功能强大的服务器作为主主机,它运行一个仅用于 DRBD 的控制台 VM。然后,此 VM 通过 NFS 将“SharedDRBD”SR 返回给 Xen 主机。其余提供服务的运行 VM 在 SharedDRBD SR 上运行。VM 的 DRBD dev 位于 MDADM RAID 1 上的自己的 VDI 上。此 SharedDRBD SR 托管其余 VM 以提供各种服务,并使用本地更大的 RAID10 阵列进行批量文件存储。
所有 MDADM 工作都由主机完成,但 DRBD 的一侧位于 VM 中。
VM 中运行的 DRBD 与文件备份服务器上运行的 DRBD 服务同步;文件备份服务器并非故意虚拟化的,因此我们可以裸机访问所有文件,因为 XenServer 是我们通常处理的最大怪癖。
有一个虚拟化的辅助服务器,但除了主机所需的存储外没有本地存储。此服务器与主服务器一起属于一个 Xen 池,以简化故障转移。故障转移目前是手动的,但快速且简单。
首先,关闭 SharedDRBD SR 上的所有 VM,同时启动辅助 XenServer 主机。将文件备份服务器上的 DRBD 设为主 DRBD 并根据需要进行挂载。然后,将 SharedDRBD SR 指向文件备份服务器,并在辅助服务器上启动 VM;XenCenter 甚至没有意识到它正在从新位置为 VM 提供服务,因为它看到的是具有相同数据的相同 SR。 虚拟机重新启动并且一切恢复运行。
在配置、阵列、网络拓扑等方面还有很多内容;但要点是DRBD 在虚拟机中运行,并返回到其自己的主机。
总体而言,对于我们的 SMB / 家庭使用来说,它具有足够的 HA;主服务器发生灾难性故障时,停机时间为 10-20 分钟或更短,即可完全恢复在线,不会丢失数据;DRBD 意味着虚拟机是最新的!此外,除了相当强大的主服务器之外,还有大量的整体冗余。大多数主服务器本身都是冗余的,因此它几乎为所有你能想到的硬件提供了三重冗余甚至更好的冗余(PS、RAM、CPU、HDD、控制器、NIC 等)除主板之外,还只有双冗余(主/辅助 Xen 主机)。
是的,遗憾的是 XenCenter 安装在 Windows 上,其余的都是 Linux。
我知道,这个 Q 已经有 8 年了。