這篇博客的主要講解如何在一臺筆記本電腦上搭建一個完整的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 [email protected].
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的常用命令都有哪些?