OpenStack是一个开源的云计算管理平台项目,支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。本文我们来谈谈DevStack安装和配置OpenStack开发环境。
OpenStack的安装和配置有一点复杂,特别对于初学者来,第一次安装OpenStack时经常会碰到很多的问题。不过在Openstack社区中,一些开发者开发了一些自动化脚本来方便搭建OpenStack的开发环境,其中,DevStack是其中相对比较完善的,也是OpenStack官方网站推荐的用于了解OpenStack时搭建环境的方法。
DevStack是由Rackspace公司开源的一套用Bash编写的自动化脚本,用于为OpenStack构建和配置一整套完整的开发环境。DevStack的官方网站为//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 //192.168.158.31/
Keystone is serving at //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生产环境。