openstack live-migration

1.安装NFS服务器
由于迁移(migrate)需要用到共享存储,所以我们必须得配置一个能够被compute节点共同使用的存储服务。共享存储服务有很多种,也不只限于NFS服务。但是考虑到NFS的方便性,我采用了NFS。我选择在controler节点上配置一个NFS服务,用apt-get安装:
1 apt-get install nfs-kernel-server
安装后,创建一个文件夹,将此文件夹作为后面nfs服务要挂载的目录,我是创建在这里的:
1 mkdir -p /var/nfs-storage

然后编辑/etc/exports文件,在上面配置好nfs的访问规则,我直接在上面添加了如下的一句话,便于学习测试,对于ip地址的限制等安全问题我就没设置了:
1 /var/nfs-storage *(insecure,rw,sync,no_root_squash)
保存退出,重启nfs服务:
Systemctl restart nfs
Systemctl status nfs

2.在compute节点上挂载NFS目录
在controler节点上配置好NFS服务后,要在compute节点上挂载这个目录,但是挂载点是有要求的,一定要挂载在 nova.conf的配置文件中所指的那个instances目录下。除非你已经修改了上面的默认配置。而且,在不同的compute节点上,这个路径必 须一摸一样。默认的路径是
“/var/lib/nova/instances”。
由于原来的compute节点上就有instances目录,所以我把原来的更名,然后重新创建了一个新的instances目录。注意修改权限,下面是我的文件夹的权限(我用root创建的,但是把owner改成了nova),给大家作为参考:

改好权限后,再计算节点上安装nfs-common:
1 apt-get install nfs-common
然后用下面的命令挂载:
1 mount 192.168.100.51:/var/nfs-storage /var/lib/nova/instances
为了防止每次开机都要重新手动挂载可以把它添加到fstcb文件上,这样每次开机都会自动挂载:
1 192.168.100.51:/var/nfs-storage /var/lib/nova/instances nfs defaults 0 0
接着我们要修改passwd文件,允许su nova用户,vim /etc/passwd,找到下面的行:
1 改前:
2 nova:x:109:116::/var/lib/nova:/bin/flase

3 改后:
4 nova:x:109:116::/var/lib/nova:/bin/bash或nova:x:109:116::/var/lib/nova:/bin/sh

前面的数字没关系的(各个compute的nova的ID要一致)
如果以前没有设置过nova账号的密码,切换到root下,用passwd nova设置一个密码,后面会用到。
在另外的compute节点上也同样的配置

3.让compute节点能够互相免密码ssh登录
先切换到nova用户,然后用ssh-keygen产生一个公钥一个私钥一路直接回车就行:
1 ssh-keygen

cd到~/.ssh/,并用scp命令将产生的公钥发送到另一台compute节点的.ssh/authorized_keys文件里面:

1 scp id_rsa.pub [email protected]:~/.ssh/authorized_keys

如果你原来的authorized_keys里面有内容,请不要这么操作,先scp到另一个文件,然后再用cat添加公钥到末尾,注意权限问题,下面是我的文件权限(包括.ssh文件夹的权限):

在另一台compute节点上配置好权限后,用ssh尝试一下是否可以免密码登陆,可以则表示成功,否则失败。成功后,在另一台compute节点上按上面的教程重新配置(注意是在nova用户下),直到所有的compute节点能够互相面密码ssh登录。

4.配置libvirt的相关文件
每个compute节点都是同样的配置,我这里只配置一台。
修改/etc/libvirt/libvirtd.conf文件:
1 改前 : #listen_tls = 0
2 改后 : listen_tls = 0

3 改前 : #listen_tcp = 1
4 改后 : listen_tcp = 1

5 添加(有了的话,不需要添加): auth_tcp = “none”

修改/etc/init/libvirt-bin.conf文件:
1 改前 : env libvirtd_opts=”-d ”
2 改后 :env libvirtd_opts=”-d -l”
修改/etc/default/libvirt-bin:
1 改前 :libvirtd_opts=” -d”
2 改后 :libvirtd_opts=” -d -l”

用uuidgen产生一个uuid号,
1 root@g-compute3:/var/lib/nova# uuidgen
2 f4ef4243-1ad4-4818-a4cf-abfc1979a7ce
复制常生的uuid号,并修改/etc/libvirt/libvirtd.conf文档,将上面的host_uuid 改成刚刚产生的那个号,并把注释去掉。
现在重新启动libvirt-bin:

1 service libvirt-bin restart
5.修改nova.conf文件
到这里,基本就差不多了,现在要做的就是修改nova.conf文件,并添加如下的内容到nova.conf文件上。
1 live_migration_bandwidth=0
2 live_migration_retry_count=30

3 live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE

live-migration在Juno默认支持的。

上述方法是用controller直接作为NFS的,当然你也可以用openfiler来做。参考下面几篇文章应该就可以了。
下载openfile
http://www.openfiler.com/community/download/
Openfile配置nfs
http://blog.sina.com.cn/s/blog_92e9262b0101q9wq.html
http://blog.csdn.net/tianlesoftware/article/details/8176859

你可能感兴趣的:(openstack,nfs,openfiler,热迁移)