热迁移(Live Migration)也称动态迁移、实时迁移。其过程是:首先保存实例的所有运行状态,然后快速地恢复,甚至恢复到新的计算节点,并且在整个过程中,用户是无感的。
要使用热迁移的最基本条件是实例存放在共享存储中,且所有计算节点都能访问共享存储,否则只能采用块迁移,符合该基本条件后,再检查如下关键条件:
- 所有计算节点的nova用户的uid和gid是否相同
- 所有计算节点的nova和libvirt的参数配置是否正确
- 所有计算节点的openstack-nova-compute服务是否正常运行
- 所有计算节点是否能相互访问
- 待迁移的虚拟机的运行状态是否正常
- 目标宿主机的资源是否充足
配置
修改所有计算节点上的nova配置/etc/nova/nova.conf,并重启compute服务:
[libvirt] live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
修改所有计算节点的libvirt配置/etc/libvirt/libvirtd.conf,并重启libvirtd服务:
listen_tls = 0 listen_tcp = 1 tcp_port = "16509" listen_addr = "172.16.101.34" #本机IP auth_tcp = "none"
修改配置/etc/sysconfig/libvirtd:
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf LIBVIRTD_ARGS="--listen"
检查免密登录是否正常,在各计算节点上访问其他计算节点:
virsh -c qemu+tcp://node34/system
迁移
在控制节点通过如下步骤对实例进行热迁移:
#查看所有实例 nova list #查看实例详情 nova show <实例ID> #查看可用的计算节点 nova-manage service #查看目标节点资源 nova-manage service describe_resource <目标节点> #热迁移实例至新计算节点 nova live-migration <实例ID> <目标节点>
也可以在Dashboard中对实例进行热迁移操作。
重要说明
以上方案仅实现了计划内热迁移,如果计算节点意外宕机,且该节点不在集群内,则实例无法自动漂移至新节点。
还请各位高手指点如何实现自动迁移!
原创文章禁止转载:技术学堂 » Openstack云平台性能优化·热迁移