随着虚拟化技术应用的普及,虚拟机的高可靠性成为关注的重点。虚拟机热备技术,也称为虚拟机FT,借助于虚拟机本身可以跨平台移植,实现了高效率、低成本的虚拟机容错机制,成为保障虚拟机高可靠性的重要手段之一。
FT与HA相比,HA是通过虚拟机出问题后,重启虚拟机来提供高可用性。FT是提供比HA更高级别的连续高可用性。FT主机单节点故障后,备机可无缝对外提供服务,业务不中断,虚拟机不用重启。但是相应的,正常工作期间需要花不小的代价维持同步,一般适用于效率要求不是特别高,但是业务一定不能中断的场景。
基于此,本期“智汇华云”邀请到华云数据计算网络部总监仇大玉、华云数据高级工程师曲维杰为大家带来“高可靠热备(FT)虚拟机”内容分享,带大家一起解读FT。
FT的基本原理:主机和备机在准备工作完成后,通过迁移保持内存同步,通过NBD replication保证磁盘内容同步,两台机器都是运行状态,其中主机的状态会同步到备机,备机在failover独立工作前,一切操作最终都被丢弃。示意图如下:
内存同步方面,通过迁移通道完成。迁移增加新的状态:colo,此状态下迁移完成后VCPU开始工作但是通道不断开,继续接受主机同步过来的内存。主机端将收到的网络数据包复制一份,同步发送给备机,备机通过TAP发送给宿主机的网络数据包,通过重定向器发给了主机端的比较器,主机端比较器会比较主机和备机发来的两个网络包,如果一致,备机的包被丢弃,主机的包发送给TAP;如果不一致,备机包被丢弃,主机包发给TAP,同时触发checkpoint同步内存。checkpoint两种触发方式:定时器超时,和网络出包不一致。多块网卡需要有多个网络代理,比较器和重定向器都不能共用。备机虽然有网卡有MAC有IP,但是因为和TAP的连接被重定向器接管,所以无法发出网络包,也收不到网络上发来的包,收到的网络包是主机复制过来的。网络部分设计如下图:
磁盘方面,quorum保证主机读数据时,只从自己的存储上读数据,主机写入的数据,多发一份通过nbdclient发给备机的server,写入备机自己的磁盘。备机发出的磁盘写命令,写进自己的diskcache,数据同步时此部分内容被丢弃。多块盘只需要备机添加多个设备进nbdserver,主机端分别为每块盘建立nbdclient。初始化时通过driver-mirror将主机磁盘内容同步到备机,同步完成后磁盘状态一致,然后上述机制生效保证后续操作同步。磁盘部分设计如下:
华云数据已经在社区基础上完成了qemu侧完善(修复众多原生bug,更优于目前纯社区方案)以及libvirt侧功能开发支持。目前正在虚机管理平台层实现产品化,相信不久即将为大家带来华云版高可靠热备虚机(FT)功能虚机,为客户提供高可靠,不停机的持续服务能力,助力客户在新基建领域,共创未来。