本文共 2662 字,大约阅读时间需要 8 分钟。
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 nfs2.在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/flase3 改后:
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-keygencd到~/.ssh/,并用scp命令将产生的公钥发送到另一台compute节点的.ssh/authorized_keys文件里面:
1 scp id_rsa.pub nova@192.168.100.57:~/.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 = 03 改前 : #listen_tcp = 1
4 改后 : listen_tcp = 15 添加(有了的话,不需要添加): 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=303 live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
live-migration在Juno默认支持的。
上述方法是用controller直接作为NFS的,当然你也可以用openfiler来做。参考下面几篇文章应该就可以了。
下载openfile Openfile配置nfs转载地址:http://oznqi.baihongyu.com/