Openstack计算节点迁移云主机需要一定的方法,分成冷迁移和在线热迁移,对于shut off状态的云主机使用冷迁移,对于处于Running状态的云主机使用在线热迁移。具体迁移步骤如下:
1.查看计算节点的云主机实例。
nova hypervisor-servers node-XX.XX.cn(计算节点名称)
列出所有计算节点上的资源使用情况
# nova hypervisor-list
# nova hypervisor-show 计算节点
2.登录到具体的计算节点,查看云主机状态:
virsh list --all
加上管道可以过滤出running或者shut off的实例的instance_id:
virsh list --all |grep running|awk '{print $2}'
virsh list --all |grep shut|awk '{print $2}'
3.进行冷迁移shut off状态云主机和在线热迁移running状态云主机。
running状态的云主机执行在线热迁移:
nova live-migration d0bd9fd5-b123-49eb-8e1b-fcac49a4b5b2(云主机实例的UUID)
shut off状态的云主机执行在线热迁移:
nova migrate 6cd793a5-a522-4f15-9182-1747dcd4c712
4.在计算节点迁移完云主机后,执行virsh list --all确认下不存在云主机。
5.通过在控制节点,停止计算节点的nova-compute服务,改计算节点为维护模式。
nova service-disable node-XX.XXX.com nova-compute
6.迁移中遇到热迁移时某台云主机迁移很慢,nova show 云主机状态还没改变active可以在该计算节点执行如下命令:
virsh migrate-setmaxdowntime instance-00009b28 --downtime 100
原因是此云主机资源使用比较高。表现为 cpu 内存使用率高。此处设置,是短暂的将云主机设置成关机状态,100是毫秒,可根据具体情况调试时间。
在线热迁移过程中如果发现虚拟机已经迁移到目的节点,但是出现novnc无法访问及在源物理机上找不到instance-XXXXXXXX的情况下,说明是token超期引起了错误。需要更新数据库解决:
#update instances set power_state=1,vm_state='active',host='controller', node='controller',task_state=NULL where uuid='504664d2-5890-439a-a6f6-f929ef60833b';
7.最后登录到计算节点,通过执行top命令M查看内存使用情况。