因为最近一直在研究openstack的live-migration,配置好之后进行迁移过程中发现了一些问题,这里进行记录
首先是关于nfs,这个nfs服务器可以跑在任意一个节点上,只要配置好,不必非得将它部署子控制节点,这样可以减少controller的负担
其次是,在live-migration之前,要对计算节点的核进行检查,而且配置文件里对核的检查很苛刻。
比如我们的计算节点,有的是i3,有的是i5,这些节点之间的迁移就会因为核的检查不通过而不能进行迁移。通过看log文件,发现是/nova/virt/libvirt/driver.py文件里函数check_can_live_migrate_destination中的self._compare_cpu(source_cpu_info)导致出错,将这行注释后,满心欢喜的进行实验,发现还是有问题,这时问题变了,是在实际的迁移中_live_migration函数中的dom.migrateToURI(CONF.live_migration_uri % dest,
这一行导致的错误,错误的原因还是cpu的检查
那么要想解决这个问题,要么彻底避开对cpu的检查,要么自己设计一个检查策略,不要这么苛刻
为了省事,我们现在选择了前者,也就是完全避开对cpu的检查
通过对问题的反复求证,发现问题的根结在各个instance的配置文件上,我们打开instance的配置文件(如果你没有在nova的配置文件里进行特殊指明,一般是在/var/lib/nova/instances目录下),找到相应的目录,里面有一个文件叫libvirt.xml,打开看到第28行,一般会看到cpu的匹配规则,默认应该是host-mode
因为我们想完全避开对cpu的检查,所以要对这个配置文件进行相应的更改
那么怎么进行更改呢?不能手动的对这个文件进行更改吧?
通过查阅文件,发现我们应该改的地方是/nova/virt/libvirt/driver.py这个文件里的第1975行,注意观察发现:
if mode is None:
if CONF.libvirt_type == "kvm" or CONF.libvirt_type == "qemu":
mode = "host-model"
else:
mode = "none"
意思很明显,因为openstck默认用的大多数是kvm,所以这里的mode设置成了host-model,这里也就是上面我们提到的libvirt.xml文件里的对应的配置
那么,我们把上面这几行全都注释掉,mode就成了none,这样就完全的不对cpu进行检查
经过这一番折腾,终于可以在不同的配置的计算节点之间互相的在线迁移
下面要做到是借助于libvirt对instance进行实时的监控,希望顺利