OpenStack是一個開源的雲計算管理平台項目,支持幾乎所有類型的雲環境,項目目標是提供實施簡單、可大規模擴展、豐富、標准統一的雲計算管理平台。本文我們來談談DevStack安裝和配置OpenStack開發環境。
OpenStack的安裝和配置有一點復雜,特別對於初學者來,第一次安裝OpenStack時經常會碰到很多的問題。不過在Openstack社區中,一些開發者開發了一些自動化腳本來方便搭建OpenStack的開發環境,其中,DevStack是其中相對比較完善的,也是OpenStack官方網站推薦的用於了解OpenStack時搭建環境的方法。
DevStack是由Rackspace公司開源的一套用Bash編寫的自動化腳本,用於為OpenStack構建和配置一整套完整的開發環境。DevStack的官方網站為http://devstack.org/,可以到該網站上查看DevStack腳本的使用方法及其工作原理。
目前,DevStack對Ubuntu 12.04和Fedora 16及以上的Ubuntu和Fedora系統有比較完善的支持,選擇在其他操作系統上使用DevStack可能需要做一些修改才能正常工作。所以,這裡的示例以在Ubuntu 12.04 系統上使用DevStack腳本來搭建OpenStack開發環境,其過程非常簡單,只分為如下兩個步驟:
(1)下載DevStack的代碼倉庫,命令行如下:
git clone git://github.com/openstack-dev/devstack.git
(2)運行stack.sh腳本,命令行操作如下:
jay@my-ubuntu:~$ cd devstack/
jay@my-ubuntu:~/devstack$ ./stack.sh
Horizon is now available at http://192.168.158.31/
Keystone is serving at http://192.168.158.31:5000/v2.0/
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: admin
This is your host ip: 192.168.158.31
stack.sh completed in 1663 seconds.
#看到最後這樣的信息,說明OpenStack已經成功安裝和配置
由於stack.sh腳本會自動下載大量的被依賴的軟件包和OpenStack源代碼,還要進行各種配置文件和數據庫的初始化,所以第一次執行stack.sh腳本比較花費時間,大約需要幾十分鐘到一個小時不等(根據處理器速度和網絡帶寬的不同而不同)。
在Ubuntu系統中運行stack.sh腳本過程中,因為需要經常使用“sudo”命令去安裝軟件包和寫配置文件,所以可能會提示輸入當前用戶的密碼;因為需要配置一些數據庫、OpenStack的認證,所以可能會有一些數據庫用戶名、密碼的確認需要與用戶進行交互。在執行DevStack的stack.sh之前,用戶也可以填寫本地自己配置的文件名為localrc的配置文件,示例如下:
DATABASE_PASSWORD=123456 #請根據需要修改此配置文件
RABBIT_PASSWORD=123456
SERVICE_TOKEN=123456
SERVICE_PASSWORD=123456
ADMIN_PASSWORD=admin
HOST_IP=192.168.111.111
如果准備了這樣的本地配置文件,那麼在運行stack.sh腳本時就會減少這些密碼和認證信息的確認過程。關於Hypervisor的配置,在DevStack源代碼庫的默認配置文件stackrc中有如下的兩行配置:
VIRT_DRIVER=${VIRT_DRIVER:-libvirt}
LIBVIRT_TYPE=${LIBVIRT_TYPE:-kvm}
所以,DevStack安裝OpenStack時,默認是設置libvirt作為Hypervisor的驅動的,使用QEMU/KVM作為Hypervisor,只有在不能成功加載“kvm”模塊時才會退回到使用QEMU純軟件模擬的虛擬化方式。在執行完stack.sh腳本安裝好OpenStack之後,也可以查看“kvm”和“kvm_intel”(或“kvm_amd”)模塊是否成功加載,還可以查看/etc/nova/nova.conf文件中有如下兩項:
libvirt_type=kvm
compute_driver=libvirt.LibvirtDriver
一般來說,正常執行完DevStack中的stack.sh腳本後,OpenStack的各項服務(如計算、鏡像、控制面板、網絡等)都已經正常打開處於可用狀態。當然,如果安裝過程中有一些錯誤出現,則可以根據其源代碼進行相應的修改來解決或繞過一些問題。當時需要管理這些OpenStack服務時,或者運行stack.sh前需要清理環境時,可以執行DevStack中的unstack.sh腳本來停止OpenStack相關的服務和清理一些中途安裝出錯的環境。
當然,DevStack這一套腳本一般用於部署的是OpenStack開發環境,對於在實際生產環境中大規模部署OpenStack雲計算基礎架構來說,還並不夠完善。不過,可以根據OpenStack官方的一些部署參考文檔(見本章末尾的“參考閱讀”)和實際的應用場景,以DevStack為基礎來構建一套個性化的OpenStack生產環境。