我正在阅读虚拟化中的 HA 技术,但我看到的所有解决方案或多或少都像更专业的 VRRP 一样工作 - 当主机关闭时,VM 会在另一台虚拟化主机上启动。如果存储是共享的(例如 iSCSI),那么可以启动“相同”的 VM,因此对于来宾操作系统来说,它看起来像是一种电源故障。但是如果内存中有一些重要的数据(例如内存数据库),那么它仍然会丢失。
尽管可以以一定的间隔创建正在运行的 VM 的快照(不幸的是,创建这样的快照需要大量时间,因此实际上不能每隔 10 秒就完成一次)。然后另一个虚拟化主机可以加载这样的快照并继续“不间断地”运行虚拟机(加上减去间隔时间)。
所以我的问题是 - 是否有任何解决方案自动“镜像”虚拟机,以便在虚拟化主机故障后虚拟机可以在另一台主机上“恢复”而不会出现明显的中断?从字面上看,就像虚拟机的 RAID1。在 RAM 级别上完全同步的镜像。
1) 部署 VMware vSphere 集群并在您的虚拟机上使用容错https://www.vmware.com/files/pdf/techpaper/VMware-vSphere6-FT-arch-perf.pdf功能(如上所述)。
2) 部署 XenServer 集群并使用 Remus https://wiki.xenproject.org/wiki/Remus。
服务器不应该以您所描述的方式“失败”。大多数人并不担心这一点。
但是,这是VMware Fault Tolerance (FT)的一个用例。
这将满足您的要求。
如果需要延迟很小(如 10 秒)的异步复制,那么像Zerto这样的解决方案将是合适的。
有一些解决方案可以在不停机的情况下对虚拟机进行故障转移。至少我知道HPE VSA和Starwinds。他们也有免费版本,所以你可以看看那些。
但是,我不完全了解第一个,还没有自己测试过。关于第二个 - 有一个选项,您可以在 HA 设备上分配一定数量的 RAM,并且此 RAM 也被复制到另一个节点上。并且虚拟机无需重新启动即可进行故障转移。使用 Hyper-V 集群进行了测试。
不幸的是,没有,没有办法做到这一点,你真的根本不需要它。即使是内存数据库也可以在应用层面做镜像和HA,这样就不需要内存镜像了。只需启动内存数据库的多个实例,然后开始镜像!它具有容错性,您甚至可以在不中断的情况下进行任何升级和维护。
不幸的是,答案是否定的,至少对于商业/企业级管理程序来说是这样。好的,我的立场是正确的:我从未使用/阅读过Xen+Remus,这似乎很有趣。
我知道 VMWare FT,但它有很大的局限性,以至于我自动放弃了它。幸运的是,最近的 VMWare 版本取消了其中一些限制。但是,在网络或 I/O 绑定场景中,原始性能影响将太大而无法容忍。
无论如何,据我所知,两者都是基于检查点的概念:基本上,底层虚拟机是不断实时迁移的。真正的 RAM 锁步/镜像要昂贵得多:几年前,一个基于 Qemu/KVM 的项目尝试了同样的事情——但由于它导致的巨大性能下降,它被放弃了。