OpenStack在线迁移live-migration(Mitaka)

live-migration:可让管理员将虚拟机实例从一台计算节点迁移到其它的节点。此特性对于当一个计算节点需要维护时特别的有用。当然迁移也可用于当某台计算节点运行了太多虚拟机实例而过载需要重新分配的情况。


我们演示最常用的基于共享存储的在线迁移,用NFS作为后端共享存储,把计算节点的instances_path放在共享磁盘。

环境说明

系统版本:CentOS Linux release 7.2.1511 (Core) 

controller 172.16.88.200
compute1   172.16.88.201
compute2   172.16.88.202
NFSserver  172.16.88.203

NFS服务器部署

yum -y install nfs-utils rpcbind
mkdir /data/nfs-storage/instances

编辑/etc/exports文件,写入:

/data/nfs-storage/instances 172.16.88.0/24(rw,sync,fsid=0,no_root_squash)

设置nfs服务开机启动

systemctl enable rpcbind.service
systemctl enable nfs-server.service

启动nfs服务

systemctl start rpcbind.service
systemctl start nfs-server.service

验证nfs服务是否正常

rpcinfo -p
exportfs

计算节点配置

每个计算节点都需要配置

挂载NFS共享磁盘到instances_path目录

yum install -y nfs-utils
systemctl enable rpcbind.service
systemctl start rpcbind.service
echo "172.16.88.203:/  /var/lib/nova/instances nfs4  _netdev,defaults   0 0" >> /etc/fstab
mount -a -v
chown -R nova.nova /var/lib/nova/*

挂载之后,可以用df -Th命令来查看挂载之后的详细信息 如果之前的/var/lib/nova/instances目录有虚拟机内容,请先关闭虚拟机,手动把相关文件移动到挂载后的目录,并修改相应的权限。

配置nova服务

编辑/etc/nova/nova.conf

instances_path=/var/lib/nova/instances
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_TUNNELLED
[vnc]
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 172.16.88.202    #该IP为当前compute节点的IP
novncproxy_base_url = http://172.16.88.200:6080/vnc_auto.html
enabled = True

配置libvirt服务

libvirt 默认情况下支持远程连接的 TLS 协议,不支持 TCP 协议,因此将 listen_tls=0 listen_tcp=1 使 libvirt 能够支持 TCP 协议。

配置/etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0"
user = "root"
group = "root"
dynamic_ownership = 1

配置/etc/libvirt/libvirtd.conf

listen_tls = 0
listen_tcp = 1
auth_tcp="none"
listen_addr = "0.0.0.0"    #注:因为认证为none,此处监听IP最好设置为本机的管理网络IP
tcp_port = "16509"

配置/etc/sysconfig/libvirtd

LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

重启服务

systemctl restart  libvirtd.service
systemctl restart  openstack-nova-compute.service

验证

[root@compute1 nova]# virsh -c qemu+tcp://compute2/system    #compute2处填写你的各个计算节点IP或主机名
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

动态迁移虚拟机

原有虚拟机需要重新启动虚拟机,才支持动态迁移,新建虚拟机则直接支持动态迁移。 查看虚拟机

[root@controller ~]# source admin-openrc 
[root@controller ~]# nova list --all-te
+--------------------------------------+------+----------------------------------+--------+------------+-------------+------------------------+
| ID                                   | Name | Tenant ID                        | Status | Task State | Power State | Networks               |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+------------------------+
| de6fcd4e-e494-4d4f-bd54-92c31d051555 | aaaa | 9eafd91dbbb048948cf2833f428d2bf5 | ACTIVE | -          | Running     | provider=172.16.89.117 |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+------------------------+

查看需要迁移的虚拟机的详细信息,可以看到当前虚拟机在compute1的host上。

[root@controller ~]# nova show de6fcd4e-e494-4d4f-bd54-92c31d051555
+--------------------------------------+----------------------------------------------------------+
| Property                             | Value                                                    |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                    | AUTO                                                     |
| OS-EXT-AZ:availability_zone          | nova                                                     |
| OS-EXT-SRV-ATTR:host                 | compute1                                                 |
| OS-EXT-SRV-ATTR:hostname             | aaaa                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | compute1                                                 |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000007                                        |

查看compute2计算节点的资源信息

[root@controller ~]#  nova-manage service describe_resource  compute2
HOST                              PROJECT     cpu mem(mb)     hdd
compute2        (total)                        16   16045      91
compute2        (used_now)                      1     576       1
compute2        (used_max)                      1      64       1
compute2                 9eafd91dbbb048948cf2833f428d2bf5       1      64       1

开始迁移

nova live-migration de6fcd4e-e494-4d4f-bd54-92c31d051555 compute2

迁移之后,可以通过nova show INSTANCES_ID来查看当前虚拟机在哪个计算节点上。INSTANCES_ID为虚拟机实例的ID。

如果迁移失败,可以查看源计算节点和目标计算节点的nova-compute.log日志来查找原因。

参考资料



反馈与建议

  • 本站内容来源于站长原创及网络整理,如有侵权,请联系站长处理.
  • 邮箱:5108926@qq.com
  • 如果帮到你,欢迎右侧扫码打赏.
打赏