我有三台 KVM 服务器,每台服务器都有一台客户虚拟机,直接在其本地存储上运行(因此它们实际上每台都获得了一个专用的计算能力)。如果主机发生故障,我希望客户虚拟机至少复制到其他一台主机上,这样我就可以在那里运行,直到故障主机修复。
我对 KVM 克隆很感兴趣。我可以实时克隆虚拟机,也可以在虚拟机挂起/关闭时克隆。显然,挂起的虚拟机克隆起来会更快,但这三个虚拟机构成了一个解决方案的三个部分,所以我不希望其中任何一个虚拟机关闭。
如何在服务器之间有效地克隆这些虚拟机?
我有过一些想法,但是这些想法是否疯狂,或者是否存在我错过了适合我的情况的更好的方法?
在运行 VM 1 的盒子 1 和 2 之间设置 DRDB 分区,因此在盒子 1 和盒子 2 之间进行复制,在盒子 2 和 3 之间以及盒子 3 和 1 之间重复(这可能很疯狂,我从未使用过 DRDB,只是读过相关内容)
只需使用标准 KVM CLI 克隆选项即可执行实时克隆(我对此表示怀疑,因为我不知道这需要多长时间以及在此期间对性能的影响是什么)
在至少一个其他主机上运行每个虚拟机的副本,并让一个主机上的客户机将其数据导出到另一台主机上的匹配客户机,然后可以在那里导入该数据,并在客户机上编写脚本)
还有其他方法吗?欢迎提出想法!
边注
这些服务器在 RAID 10 中配备 4x15k SAS 驱动器,因此它们的速度不会飞速提升,而且正如我所提到的,每个虚拟机都从主机的本地存储运行,没有 NAS 或 SAN 等。这就是我问这个关于客户机复制的问题的原因。此外,这与灾难恢复无关。客户机将通过 VPN 将其数据导出到 NAS,因此我正在研究如何在主机发生故障的情况下快速启动它们。
答案1
我不会乱用本地存储,而是设置一个共享集群。oVirt 和 RHEV 提供开箱即用的 VM HA 和负载平衡,您只需要设置 VM,如果主机发生故障,则随之发生故障的 VM 将自动在另一台主机上启动。
对于存储,您可以获得合适的 SAN,但如果预算紧张,那么导出 iSCSI 或 NFS 的 RHEL 盒就可以了。
此 iSCSI 或 NFS 后端可以轻松复制、备份并保持安全
答案2
@Zoredache 没有回应,但最终使用了 Ganeti 并爱上了它;
http://code.google.com/p/ganeti/
对于那些想要使用 KVM 作为具有无缝复制和迁移功能的集群虚拟机管理程序的人来说,我强烈推荐这个。