OpenStack之虚拟机热迁移

这里的环境是centos7版本,openstack K版

1.在各个计算节点设置权限

chmod 755 /var/lib/nova/instances

2.修改各个节点的nova.conf(/etc/nova/nova.conf)

vncserver_proxyclient_address=虚拟机IP  #
vncserver_listen=0.0.0.0

3.修改所有计算节点libvirt

3.1 修改/etc/libvirt/libvirtd.conf文件:

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"  #将此四行的注释去掉
auth_tcp = "none"         #新增

3.2 修改/etc/libvirt/qemu.conf文件:

vnc_listen = "0.0.0.0"
user = "root"
group = "root" #去掉此三行的注释

3.3 修改/etc/sysconfig/libvirtd文件,用来启用tcp的端口

LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf 
LIBVIRTD_ARGS="--listen"  #同样,去掉注释

4.重启libvirtd

systemctl restart libvirtd.service

测试:

virsh -c qemu+tcp://服务器IP/system #请在服务器IP处填写你的服务器IP

无错误提示的话即可进行迁移工作,若有错,可能是防火墙的问题。简单粗暴的做法是:





方法1:直接关闭防火墙

方法2:放行对应端口

1.查看端口号
[root@agent ~]# netstat -tulnp | grep libvirt tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 31704/libvirtd

附加:

root@node1:~# nova list 查看实例

root@node1:~# nova show 11fd9622-a948-4cdb-94d0-d8f2558cf179 查看需要迁移的实例

root@node1:~# nova-manage service list 查看可用的计算节点

root@node1:~# nova-manage service describe_resource node2 查看目标节点资源

root@node1:~#nova live-migration 11fd9622-a948-4cdb-94d0-d8f2558cf179 node2 迁移成功,没有输出

附上配置:

[root@compute11 ~]# egrep -v "^#|^$" /etc/nova/nova.conf 
[DEFAULT]
allow_resize_to_same_host=true
allow_migrate_to_same_host=true

[libvirt]
virt_type = kvm
inject_password=false
inject_key=false
inject_partition=-2
disk_cachemodes="network=writeback"
images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf= /etc/ceph/ceph.conf
hw_disk_discard= unmap
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337


[root@compute11 ~]# egrep -v "^#|^$" /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none" 

[root@compute11 ~]# egrep -v "^#|^$" /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
user = "root"
group = "root"


[root@compute11 ~]# egrep -v "^#|^$" /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf 
LIBVIRTD_ARGS="--listen"

 注意:不同CPU的计算有可能只能单向动态迁移;因为指令集少的计算节点可以向指令集多的计算节点迁移,而多的不能往少的计算节点迁移;

参考:

http://www.cnblogs.com/voidy/p/4041391.html

原文地址:https://www.cnblogs.com/zhongguiyao/p/7920655.html