OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。但是安装OpenStack却不是那么容易的,让许多初学者望而却步。想体验一下OpenStack的魅力,可以使用DevStack来安装OpenStack。
概念简介
OpenStack:OpenStack是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。OpenStack是用Python编程语言编写的。
DevStack:可以自动安装OpenStack的工具。
OpenStack核心项目:OpenStack是由很多核心项目组合在一起的。
计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。
对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中。
镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。
身份服务(Identity Service):Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。
网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。
块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。
UI 界面 (Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。
pip:是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,DevStack安装OpenStack的时候会使用到这个工具。
安装准备
OpenStack部署在Linux机器上。经过我的测试在Ubuntu 14.04 Server版上安装OpenStack Mitaka版本比较稳定。为了操作方便,我的Ubuntu是安装在VMware Workstation 12虚拟机上的。
Ubuntu 14.04 Server版下载链接:https://www.ubuntu.com/download
OpenStack需要在线安装。
https://github.com/openstack
DevStack也需要在线安装。
https://git.openstack.org/cgit/openstack-dev/devstack
国外的网站在国内访问速度是非常慢的。我们需要替换为国内访问比较畅快的资源。
Ubuntu 源可以替换为国内的阿里源。
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
DNS也可以换成阿里的DNS。
nameserver 223.5.5.5
nameserver 223.6.6.6
DevStack和OpenStack源码可以替换为TryStack镜像。
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
pip源地址也可以换为国内的豆瓣源。
[global]
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
经过这些准备,OpenStack安装成功率会提高很多。
操作步骤
安装Ubuntu
下载镜像,然后在虚拟机中安装,至少需要安装OpenSSH Server,方便远程连接。
配置网络
OpenStack至少需要两个网卡,一个用于连接外部网络,一个用于连接内部网络。
外部网络
公共网络,外部或Internet可以访问的网络。
内部网络
管理网络,用于OpenStack组件以及MySQL DB Server, RabbitMQ messaging server之间的通信。
我的虚拟机网络是这样配置的。
网络 | 名称 | 类型 | 子网IP | 子网掩码 | 子网网关 |
---|---|---|---|---|---|
外部网络 | VMnet0 | 桥接模式 | 192.168.0.0 | 255.255.255.0 | 192.168.0.1 |
内部网络 | VMnet8 | NAT模式 | 10.0.0.0 | 255.255.255.0 | 10.0.0.2 |
在Ubuntu中网络是这样设置的,设置完了,可以重启一下电脑生效。
root@us14:~# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.15
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 223.5.5.5 223.6.6.6
配置pip源
root@us14:~# mkdir /root/.pip
root@us14:~# vi /root/.pip/pip.conf
[global]
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
下载DevStack
安装Git并下载最新版的devstack。
root@us14:~# apt-get install git
root@us14:~# cd /home
root@us14:~# git clone http://git.trystack.cn/openstack-dev/devstack.git -b stable/mitaka
创建stack用户
目前DevStack脚本已经不支持直接使用root身份运行,你需要创建stack用户来运行。
在非root用户下创建stack用户并设置密码。
us14@us14:~$ sudo chown –R $USER:$USER /home/devstack
us14@us14:~$ cd /home/devstack/tools/
us14@us14:~$ sudo ./create-stack-user.sh
us14@us14:~$ sudo passwd stack
授权stack用户
在root用户下给stack用户授权。编辑/etc/sudoers,找到这一行 root ALL=(ALL:ALL) ALL,在下面加上一行 stack ALL=(ALL:ALL) ALL。
root@us14:~# vi /etc/sudoers
# User privilege specification
root ALL=(ALL:ALL) ALL
stack ALL=(ALL:ALL) ALL
root@us14:~# chown –R stack:stack /home/devstack
root@us14:~# chown –R stack:stack /opt/stack
创建local.conf文件
进入/home/devstack目录,编辑local.conf文件(没有就新建)。
root@us14:~# cd /home/devstack/
root@us14:/home/devstack# vi local.conf
在文件中添加如下内容。网络的地方需要根据自己的实际情况修改。
[[local|localrc]]
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
#OFFLINE=True
RECLONE=True
# Define images to be automatically downloaded during the DevStack built process.
DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS="http://images.trystack.cn/cirros/cirros-0.3.4-x86_64-disk.img"
HOST_IP=192.168.0.15
# Credentials
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass
HORIZON_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
CINDER_BRANCH=stable/mitaka
#keystone
KEYSTONE_TOKEN_FORMAT=UUID
##Heat
HEAT_BRANCH=stable/mitaka
enable_service h-eng h-api h-api-cfn h-api-cw
## Swift
SWIFT_BRANCH=stable/mitaka
ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
SWIFT_REPLICAS=1
SWIFT_HASH=011688b44136573e209e
# Enabling Neutron (network) Service
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.0.0/24"
FIXED_RANGE="10.0.0.0/24"
NETWORK_GATEWAY="10.0.0.2"
Q_FLOATING_ALLOCATION_POOL=start=192.168.0.150,end=192.168.0.180
PUBLIC_NETWORK_GATEWAY="192.168.0.1"
Q_L3_ENABLED=True
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
# #VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
# Logging
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=/opt/stack/logs
以stack用户身份运行脚本安装
root@us14:/home/devstack# su stack
stack@us14:/home/devstack$ ./stack.sh
根据网络情况,安装速度有差别,等最后出现图中所示,则说明安装成功。
访问图中Horizon链接即可使用OpenStack虚拟一台云服务器出来。
重启机器服务不能自动重启
将/home/devstack/local.conf文件中的离线模式打开。重新以stack用户身份运行一下脚本。
#OFFLINE=True
RECLONE=True
变为
OFFLINE=False
RECLONE=False