OpenStack mitaka DevStack 部署

Posted Mr_扛扛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack mitaka DevStack 部署相关的知识,希望对你有一定的参考价值。

一、写在前面

这篇文章主要介绍了通过DevStack进行OpenStack mitaka 版本的部署,学习过程中主要参考网上资料以及自己实际的部署,整理成笔记以便后续自己查阅。
如果转载,请保留作者信息。
邮箱地址:jpzhang.ht@gmail.com

二、介绍

Devstack是每个OpenStack开发者必备的工具,通过devstack能够快速部署指定版本的openstack,以前整个安装过程过程受限于各种网络环境,整个部署比较耗时,很难一次快速安装完成,总会出现各种各样的问题,一方面openstack 部署复杂性确实比较高,另一方面国内的网络环境我只能呵呵,往往很多依赖包总是下载超时。openstack最新版本(mitaka)发布之际,尝试进行了安装,整个部署过程一个小时以内,可以看出随着国内近几年有更多的企业、工程师拥抱openstack,国内的发展异常迅猛。

三、物理环境

通过在一台物理PC机进行部署,原考虑通过虚拟机部署,虚拟机部署之前遇到过许多问题,这次改为用物理PC部署。
配置:内存:8G, 磁盘:500G, 网卡: eth0 操作系统:Ubuntu 14.04.1 LTS (3.13.0-32-generic)

注意,无论是虚拟机还是物理机,内存至少在2G以上,之前用虚拟机部署all in one 遇到内存资源不足,导致很多组件运行出错。

四、设置ubuntu源

对于ubuntu的系统,默认会从国外的源安装包,导致速度比较慢,在这里进行修改,调整到国内的源。
备份原有源的配置文件:

cp /etc/apt/sources.list /etc/apt/sources.list.bak

修改:

vim /etc/apt/sources.list

删除原有配置信息,添加阿里的源,国内还有很多其他的源,例如163等,在这里请注意的你的linux版本号,我这里是ubuntu 14.04(代号“Trusty Tahr”)。
aliyun:

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

修改完成之后进行系统更新,update:

apt-get update

同步一下时间:

ntpdate ntp.sjtu.edu.cn

五、安装环境

下载Git:

apt-get install git

下载devstack

cd /home
git clone http://git.trystack.cn/openstack-dev/devstack.git

这里部署openstack mitaka 版本,那么使用的Devstack,也需要使用相同的版本,这样才能避免安装失败可能性。

git clone http://git.trystack.cn/openstack-dev/devstack -b stable/mitaka

如果已经把devstak master上的代码clone想到本地了,也不必担心,通过git branch -a 查看devstack git 远程代码仓库是否已经有相对应的openstack部署版本,默认大家都是使用devstack的master。
例如在我这里:

git branch  -a
* (detached from origin/stable/mitaka)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/stable/kilo
  remotes/origin/stable/liberty
  remotes/origin/stable/mitaka

很幸运,目前已经有mitaka部署版本,通过checkout切换至指定版本即可:

git checkout remotes/origin/stable/mitaka

目前Devstack脚本已经不支持直接使用root身份运行,你需要创建stack用户运行,devstack已经提供脚本帮助我们。

cd /home/devstack/tools/
./create-stack-user.sh

修改devstack目录权限,让stack用户可以运行

chown -R stack:stack /home/devstack
chmod 777 /dev/pts/0

切换的stack用户下

su stack
cd /home/devstack

进入devstack目录下,创建local.conf文件,这里主要参考沙克老师的博文。

配置文件第一行必须是,否则不会生效:

[[local|localrc]]

修改github源:
默认Devstack会从github下载所有需要的代码,包括OpenStack。这其实是导致Devstack安装时间太长的一个重要原因。目前国内已经有多个地方提供了下载源,例如git.trystack.cn、git.oschina.net,能够比较及时的通过openstack官方源,在这里我使用git.trystack.cn 提供OpenStack的所有github的mirror。对于Devstack来说,只需要在配置文件增加3行就可以。

# 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

主机IP
这个是必须指定,否则会报错。

HOST_IP=192.168.27.128

镜像下载
安装devstack的时候,默认会下载相应的镜像,这些镜像都在国外,我们可以指定连接来下载相关镜像。下一步trystack会提供相关的镜像下载。

# Define images to be automatically downloaded during the DevStack built process.
DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

如果想加快下载镜像的速度,可用在运行devstack之前先把要使用的镜像下载下来,下载后可以直接放在devstack/files中

当前主要使⽤用的镜像:

加速devstack安装速度其他几点建议,可按照个人实际情况进行配置,本次部署仅仅只是修改了openstack 下载源为git.trystack.cn未做其他方面的优化:

  • 国内代码源:git.trystack.cn、git.oschina.net
  • 从github上⼿手动同步方式下载需要安装的openstack代码包,之后放⼊在local.conf中定义的目录,默认/opt/stack/
  • 在本地搭建git环境
  • 缓存get-pip.py,修改tools/install_pip.sh,手动下载下来,创建Apache环境。

    
    #PIP_GET_PIP_URL=https://bootstrap.pypa.io/get-pip.py
    
    PIP_GET_PIP_URL=http://localhost/get-pip.py
  • 优化pip源,使⽤用国内源(豆瓣)

    /root/.pip/pip.conf
    [global]
    index-url = http://pypi.douban.com/simple
  • 缓存pip,并使⽤用apache提供服务

    cd /opt/stack.kilo/requirements
    mkdir -p cache
    pip install -r global-requirements.txt -d cache
    pip install tox -d cache
    /root/.pip/pip.conf
    [global]
    find-links = http://localhost/pip
    no-index = true
    pre = true

IPV4
现在默认会创建网络是支持ip v6,通常我们是用不到。我是希望仅仅支持ip v4。

# only support IP v4
SERVICE_IP_VERSION=4

Keystone版本
现在默认就是支持keystone v3,除非你需要使用v2。

# only support keystone v2
ENABLE_IDENTITY_V2=True

网络
默认Devstack会创建一个网络,如果你不需要创建

#not create default network
NEUTRON_CREATE_INITIAL_NETWORKS=False

我们也可以指定相关的网络

# instead of default network
FLOATING_RANGE="192.168.27.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.27.102,end=192.168.27.110
PUBLIC_NETWORK_GATEWAY="192.168.27.2"

指定版本安装
对于普通用户,想了解某个版本的功能,可以在配置文件指定版本

# Branches
KEYSTONE_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
SWIFT_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
CINDER_BRANCH=stable/mitaka

Neutron网络
这是最复杂的地方,目前devstack默认的网络还是nova network,所以你要采用Neutron,你必须

# 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

vlan模式

# VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=1100:2999

附上个人部署配置的devstack 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

# Define images to be automatically downloaded during the DevStack built process.
DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"

# Credentials
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass
#FLAT_INTERFACE=eth0

HOST_IP=172.16.19.41
SERVICE_HOST=172.16.19.41
MYSQL_HOST=172.16.19.41
RABBIT_HOST=172.16.19.41
GLANCE_HOSTPORT=172.16.19.41:9292

# Database Backend MySQL
enable_service mysql

# RPC Backend RabbitMQ
enable_service rabbit

# Enable Keystone - OpenStack Identity Service
enable_service key

# Horizon - OpenStack Dashboard Service
enable_service horizon

# Enable Glance - OpenStack Image service
enable_service g-api g-reg

# Enable Cinder - Block Storage service for OpenStack
VOLUME_GROUP="cinder-volumes"
enable_service cinder c-api c-vol c-sch c-bak

# Enable Heat (orchestration) Service
enable_service heat h-api h-api-cfn h-api-cw h-eng

# Enable Tempest - The OpenStack Integration Test Suite
enable_service tempest

# Enable NoVNC
enable_service n-novnc

# 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="172.16.19.0/24"
FIXED_RANGE="10.0.1.0/24"
NETWORK_GATEWAY="10.0.1.254"
Q_FLOATING_ALLOCATION_POOL=start=172.16.19.200,end=172.16.19.210
PUBLIC_NETWORK_GATEWAY="172.16.19.254"
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

# Branches
KEYSTONE_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
CINDER_BRANCH=stable/mitaka
HEAT_BRANCH=stable/mitaka
HORIZON_BRANCH=stable/mitaka

# Select Keystone's token format
# Choose from 'UUID', 'PKI', or 'PKIZ'
# INSERT THIS LINE...
KEYSTONE_TOKEN_FORMAT=$KEYSTONE_TOKEN_FORMAT:-UUID
KEYSTONE_TOKEN_FORMAT=$(echo $KEYSTONE_TOKEN_FORMAT | tr '[:upper:]' '[:lower:]')

# Work offline
#OFFLINE=True
# Reclone each time
RECLONE=yes

# Logging
DEST=/home/stack.mitaka
LOGFILE=/home/stack.mitaka/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=/home/stack.mitaka/logs

devstack 下载的安装包默认是放置在/opt/stack/下,我这里配置到/home/stack.mitaka,并且在后面添加了版本号,方便自己在各个版本之间切换不搞混。

运行

./stack.sh

安装过程,你很可能遇到错误,遇到错误请不到担心,仔细看一下错误引起的原因,devstack安装过程不仅会在控制台打印消息,还会把消息记录到/opt/stack/log/stack.sh.log,我这里是进行了重新配置。

========================
DevStack Components Timed
========================

run_process - 79 secs
test_with_retry - 3 secs
apt-get-update - 6 secs
pip_install - 74 secs
restart_apache_server - 10 secs
wait_for_service - 9 secs
git_timed - 1 secs
apt-get - 8 secs



This is your host IP address: 172.16.19.41
This is your host IPv6 address: ::1
Horizon is now available at http://172.16.19.41/dashboard
Keystone is serving at http://172.16.19.41:5000/
The default users are: admin and demo
The password: pass

出现以上消息即表示openstack已经安装完成,通过http://172.16.19.41/dashboard 进行访问,以及默认账户信息。

以上是关于OpenStack mitaka DevStack 部署的主要内容,如果未能解决你的问题,请参考以下文章

体验devstack安装mitaka

CentOS7使用DevStack安装Mitaka allinone

sexi部署openstack (devstack) 二

用devstack安装openstack出错了,求助

DevStack部署Openstack环境

OpenStack —— DevStack一键自动化安装