这篇博客的主要讲解如何在一台笔记本电脑上搭建一个完整的OpenStack环境。
一、安装KVM和Libvirt
首先要在Ubuntu上安装KVM,其实最主要的是apt-get install qemu-kvm, libvirt-bin。
当然此前可以先检查你的CPU是否支持虚拟化;egrep -c '(vmx|svm)' /proc/cpuinfo
安裝完成后可以使用virsh或者virt-manager来管理安装上的KVM虚拟机,前者命令行,后者GUI.注意,使用这两个之前最好都加上sudo。
二、下载镜像
下载已经安装好OpenStack Grizzly的虚拟机镜像ryuvm3.qcow2
https://github.com/osrg/ryu/wiki/RYU-OpenStack-Grizzly-environment-VM-image-file-HOWTO
把镜像放在/var/lib/libvirt/images/
目录下,这里是libvirt寻找VM镜像的地方。
$ sudo cp ryuvm3.qcow2 /var/lib/libvirt/images/ryu1.qcow2
$ sudo cp ryuvm3.qcow2 /var/lib/libvirt/images/ryu2.qcow2
三、KVM相关配置
1 首先KVM虚拟机的配置文件都放在/etc/libvirt/qemu/目录下,这样virsh或者virt-manager可以找到。
$ sudo cp ryu1.xml ryu2.xml /etc/libvirt/qemu/
这里就是创建两个名字分别为ryu1和ryu2的虚拟机配置文件,其中在ryu1.xml,ryu2.xml里面分别定义了虚拟机的名字(ryu1),uuid,内存,vcpu,os,驱动(<driver name="qemu" type="qcow2"/>),虚拟机镜像(<source file="/var/lib/libvirt/images/ryu1.qcow2"/>),两块网卡NIC(<interface type="network">)以及每个接口的mac地址,所属或者所使用的网络配置(<source network="ryu_pub"/>)等等KVM相关的繁琐配置。
2 然后把上面提到的kvm虚拟机使用的虚拟网络配置文件放到/etc/libvirt/qemu/networks/目录下
$ sudo cp ryu_pub.xml ryu_priv.xml /etc/libvirt/qemu/networks/
这两个文件就是kvm虚拟机所共同使用的虚拟网络配置,其中主要是ryu_pub.xml,它主要是在宿主系统中创建了一个虚拟网桥(也可以叫做一个最简单的虚拟交换机吧)(<bridge name="br_ryu_pub"/>),为该网桥指定了对应的mac地址(<mac address="10:00:00:00:00:01"/>)和ip地址(<ip address="192.168.0.1" netmask="255.255.255.0">).最重要的的是为这个网桥下联的虚拟机指定了其DHCP所获得的IP地址。
<dhcp>
<range start="192.168.0.100" end="192.168.0.254"/>
<host mac="10:00:00:00:00:11" name="ryu1" ip="192.168.0.10"/>
<host mac="10:00:00:00:00:21" name="ryu2" ip="192.168.0.11"/>
</dhcp>
所以,如果需要创建新的虚拟机(如ryu3),不但要在/etc/libvirt/qemu/目录下
新增对应的ryu3.xml文件,而且要修改/etc/libvirt/qemu/networks/目录下
的ryu_pub.xml配置文件。
3 将第2步中的虚拟网络配置文件加载进入libvirt
使用下面两条命令之一均可把虚拟网络配置文件设置为自启动
sudo virsh net-autostart ryu_pub
$ sudo ln -s /etc/libvirt/qemu/networks/ryu-pub.xml /etc/libvirt/qemu/networks/autostart/
然后重启libvirtd
$ sudo service libvirt-bin restart
这样即可使用$ sudo virsh net-list看到虚拟网络配置已经生效。
关于kvm相关配置的其他细节信息可以参见: http://blog.chinaunix.net/uid-20917783-id-2560164.html
四 启动虚拟机并安裝openstack
1 启动kvm虚拟机
最简单的方式就是直接sudo virt-manager,这时应该可以看到ryu1和 ryu2两个kvm虚拟机,用图形化界面启动并进入即可。
如果使用命令行方式,sudo virsh start ryu1
可以启动ryu1,并可使用sudo virsh list来查看,进入虚拟机则可使用ssh的方式
:ssh ubuntu@192.168.0.10.
2 在kvm虚拟机上安裝openstack
由于是使用了已经配置好的镜像,因此直接运行devstack脚本即可
$ cd devstack
$ ./stack.sh
devstack是一套用来给开发人员快速部署Openstack开发环境的脚本,其实对于整个安装过程没有什么好说的,因为脚本写的很完善,全程无脑式安装也没什么大问题,但是根据不同的网速,可能过程会比较长。
3 控制节点和计算节点都要运行stack.sh进行初次安裝,由于日本人已经配置好了,所以ryu1和ryu2运行stack.sh后所进行的配置是不一样的。
五 使用单机虚拟版openstack
devstack运行成功后,openstack就已经安裝完成了。不过每次重新启动控制节点和计算节点的虚拟机,还都必须再次运行
$ cd devstack
$ ./stack.sh
以启动openstack,不过以后这个过程就比首次快许多,因为只是配置没有下載了。
1 命令行
重要的几个命令如下
首先切换到特定的用户,比如admin
$ cd devstack
$ . ./openrc admin admin
查看openstack各个服务是否启动,以及各个计算节点是否启动
$ nova host-list
查看openstack中已经运行着的虚拟机
$ nova list
通过下面几条命令查看创建虚拟机的镜像和网络信息:
$ nova flavor-list
$ nova image-list
$ quantum net-list
在openstack中创建虚拟机
$ nova boot --flavor m1.nano --image 6739e47b-e529-46f3-95d4-892d302c1453 --nic net-id=620f0387-2848-447c-9872-e457ba8609c9 vm1
2 GUI
当然上面的整个过程也可以在darshboard图形化界面中进行,直接lauch instance即可。
六 基于单机虚拟版openstack的虚拟机迁移
主要参考文献:
(1)官网configuring migration: http://docs.openstack.org/trunk/openstack-compute/admin/content/configuring-migrations.html
(2)博文: http://blog.csdn.net/zoushidexing/article/details/7814181
配置NFS共享存储,目标是让控制节点上存放的虚拟机实例可以被其他计算节点共享访问到。
1 首先要找到控制节点nova中的instances放在什么位置。
在NOVA配置文件/etc/nova/nova.conf中state_path指定了NOVA的安裝目录,在Ryu的虚拟机镜像里,这个目录是/opt/stack/data/nova/instances。
2 配置控制节点
在控制节点上安裝NFS
apt-get install nfs-kernel-server
在/etc/exports中加入一行
/opt/stack/data/nova/instances 192.168.0.10/255.255.255.0(rw,sync,fsid=0,no_root_squash),其中192.168.0.10是控制节点的ip地址
重新启动nfs服务:
/etc/init.d/nfs-kernel-server restart
/etc/init.d/idmapd restart
3 配置计算节点
在计算节点上安裝NFS
sudo apt-get install nfs-common
确保计算节点有执行和查找目录的权限。
chmod o+x /var/lib/nova/instances
在计算节点的/etc/fstab的目录中加入一行192.168.0.10:/opt/stack/data/nova/instances /opt/stack/data/nova/instances nfs defaults 0 0
挂载目录:
mount –a -v
检查NFS共享目录是否挂载成功。
df -k
最后一行应该可以看到
4 配置计算节点libvirt
这个步骤上面两个参考文献中都是一样的,这里就略去了。
七 再增加一个计算节点
除了按照https://github.com/osrg/ryu/wiki/RYU-OpenStack-Grizzly-environment-VM-image-file-HOWTO文档中第7步进行配置外,注意两点:
1 所有virsh前都记得加sudo,要不然直接sudo到virsh里面去操作也可以。
2 在最后如果virsh net-dumpxml ryu_pub查看运行时配置文件没有生效时,可以手动先删除掉原来的kvm网络配置,然后重新再创建一遍
paole@paole:~$ sudo virsh
virsh # net-destroy ryu_pub
virsh # net-start ryu_pub
其他
使用rejion-stack.sh重新登陆openstack darshboard
Horizion是基于keyston来进行认证的,devstack是基于screen session来识别服务的,因为要重启控制节点虚拟机后,运行rejion-stack.sh,这样就可以登录dashbord了。
有必要系统了解和学习一下KVM virsh工具和Openstack的常用命令都有哪些?