今天无意中看到youtube上有关于openstack 虚拟机高可用的演讲视频,认真地看了一把,挺有收获的。
视频链接:https://www.youtube.com/watch?v=1lAI1_HPhd0 (来自rackspace的大牛讲的)
基本思路如下:
虚拟机故障的情况分为两种:
一、某个compute node下的某些虚拟机down了(非正常关机情况)
二、整个compute node都down了(类似断电、kernel panic等故障)
针对第一种情况,是通过libvirt event api监测vm的生命周期。
如何调用libvirt event api,这里有例子:https://github.com/wiedi/libvirt/tree/master/examples/domain-events
1、操作系统正常关机,可以通过VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN和VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED事件变量来检测,虚拟机不需要restore。
2、qemu-kvm进程crash,通过VIR_DOMAIN_EVENT_STOPPED_FAILED变量来检测,一旦检测到汇报给外部监控系统,监控系统触发虚拟机restore(从之前做的snapshot恢复)。
针对第二种情况,使用pacemaker+heartbeat或pacemaker+corosync来检测nova-compute服务,一旦检测到服务非运行状态,汇报给外部监控系统,监控系统触发nova evacuate api,来实现虚拟机的故障转移。
转载于:https://blog.51cto.com/iceyao/1670612