Jun 282016
 

使用Devstack的时间其实很长。我第一次成功安装OpenStack就是使用Devstack,记忆很清楚,那时候Devstack项目刚刚成立,时间大概是2011年10月份的时候。

Devstack,只要的用户群,是开发者,直接使用源码安装,Shell的脚本,使用的出神入化,如果你希望深入了解学习如何安装OpenStack,那么代码本是就是最好的教程。

Devstack最近几年,其实变化很大,尤其在OpenStack采用大帐篷策略,项目暴涨,这也导致Devstack需要重新考虑,提供插件的机制,让更多的项目可以更加方便集成Devstack上。

这其实也导致很多以前写的文章都已经失效,很多设置已经不起作用。

真正的OpenStack玩家,一定会给Devstack折磨过。希望本文可以帮助大家减轻一点痛苦。

这篇文章是把以前的Devstack使用的文章,修改完成。

操作系统

Devstack目前是支持Ubuntu14.04和CentOS 7,不过全球的OpenStack开发者,大部分都在用Ubuntu 14.04。所以为了减少麻烦,还是建议你使用Ubuntu 14.04

详细的介绍 http://docs.openstack.org/developer/devstack/

使用trystack源

安装devstack痛苦的其中一个原因,是OpenStack代码,都需要从github下载,这样由于网络的原因,经常导致各种错误,简直让人崩溃,各种错误,也根本无法通过google来解决。

目前国内已经提供了完整的OpenStack的github的mirror。

http://git.trystack.cn

这样Devstack成功概率会大大提高。

另外devstack还会下载image,下载的过程也是非常缓慢。trystack也提供大家常用的image下载。

http://images.trystack.cn

 

指定版本

默认无论是Devstack和OpenStack,都是采用Master的代码进行安装,这样经常会出现,今天安装成功,明天失败,代码时刻在变化。所以我们不仅仅要指定OpenStack的版本,还需要指定Devstack的版本,才能提供安装成功的概率。

另外插件的版本,也是指定,如果使用master,也是可能会导致你失败。

目前Devstack的默认安装的组件,就的几个核心模块。如果你希望安装其他模块,就需要通过插件来安装。Devstack支持的插件列表

http://docs.openstack.org/developer/devstack/plugin-registry.html

目前各个项目,基本都会有一个devstack的目录,进入目录,就有介绍如何在devstack把该项目装起来。

https://github.com/openstack/rally/tree/master/devstack

 

网络环境

vmware workstation,安装ubuntu 14.04 虚拟机,记住,最小化安装,仅仅安装ssh server服务就可以。

虚拟机使用NAT网络,虚拟机默认通过dhcp获得的IP地址是

192.168.27.128/24

auto eth0
iface eth0 inet static
        address 192.168.27.128
        netmask 255.255.255.0
        network 192.168.27.0
        broadcast 192.168.27.255
        gateway 192.168.27.2
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 114.114.114.114
        dns-search test.com

vmware workstation默认设置分配的IP地址池是128开始分配。所以我的

Floating Ip是:192.168.27.102到192.168.27.110

网关是:192.168.27.2

Snap3

Snap4

看图,就应该很清楚 http://docs.openstack.org/developer/devstack/guides/neutron.html

Snap4

设置ubuntu源

对于ubuntu的系统,默认安全会从国外的源安装,导致速度比较慢。

deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

允许update

apt-get update

记得同步一下时间

ntpdate ntp.sjtu.edu.cn

 

安装

apt-get install git

下载devstack

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

目前Devstack脚本已经不支持直接使用root身份运行,你需要创建stack用户运行

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文件,最新版本的devstack,改动很大,我专门写篇文章来介绍local.conf 设置参数

这个local.conf 文件最关键的地方

更多的local.conf 例子,可以查看 https://github.com/shake/devstack  会把我验证通过的配置文件都放到github上,方便大家。

你也可以使用wget命令,直接下载我的local.conf 配置文件。

wget -O - https://raw.githubusercontent.com/shake/devstack/gh-pages/local.conf-sample-mitaka > ./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.27.128


# 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.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"
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.sh

安装过程,你很可能遇到错误,重复运行就可以,一般错误都会通过。如果反复,还是停留在相同的错误,那么你很可能就需要重新干净的系统再来一遍,这个主要是因为网络的bridge设置有关。

看看结果

Snap3

装完后,虚拟机是不能重启的,所以你最好是当前状态做一个快照。都是采用暂停。

测试

用admin登录Dashbord,为了测试,我们创建一个project:test,给project创建一个用户

Snap5

使用该该账户重新登录Dashboard

大概的步骤

  1. 创建lan,分配内网IP地址段,记得设置dns
  2. 创建router,连接外网,同时连接lan
  3. 创建test安全组,允许tcp,udp,icmp全部访问
  4. 上传秘钥,或者创建秘钥
  5. 创建虚拟机,分配floating IP,验证网络所有功能

我是用vmware workstation做实验,我在我的笔记本上,可以直接ssh到虚拟机上,那么基本所有的问题都解决,最好是使用秘钥的方式,这样基本各种功能都测试了一遍。

 

 

 

参考文章

http://docs.openstack.org/developer/devstack/guides/neutron.html

http://blog.chinaunix.net/uid-13152448-id-2906443.html

关于如何重启服务等相关问题

http://www.unixarena.com/2015/08/how-to-stop-and-start-openstack-on-ubuntu.html

http://zqfan.github.io/openstack/2015/01/10/devstack/

Nov 272013
 

我以前一直使用一个脚本下载Ubuntu的源,Ubuntu 12.04的源,全部大概是120G,我1M带宽,要下载完,真的要10天时间。脚本运行过程中经常因为网络各种原因,中途退出和中断。

Ubuntu 源下载脚本http://www.chenshake.com/centos6-x-production-of-ubuntu12-04-source/

如果能让脚本退出后,自动继续运行呢?这是困惑我很久的问题,今天请教同事,终于搞定。

原理就是设置Crontab,检查一下脚本是否在运行,如果没有运行,就运行该脚本。如果在运行,就不进行任何操作。

Continue reading »

Nov 222013
 

估计刚开始使用Openstack用户,一定会比较困惑Openstack的镜像的初始化密码是多少? 不同的镜像初始化密码是不一样,这里做一个总结。

虚拟机登陆方式

对Openstack来说:访问虚拟机提供了两种方式,

  • ssh方式
  • Dashboard的console。

Console方式,相当于你服务器前面直接登陆。有些虚拟机镜像处于安全考虑,不允许root的账号直接远程ssh登陆。

Ubuntu镜像

下载地址

http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

这个是非常有名的镜像,大家用来测试也比较多。这个镜像默认是无法使用密码登陆,只能使用密钥登陆。所以你在console,也是无法登陆到虚拟机。

默认的用户名是:ubuntu,你需要使用密钥才能登陆。

如果你希望console可以登陆,那么你就需要想点办法

Snap6

这个时候,创建完的虚拟机,在console,就可以用 user:ubuntu,pass:ubuntu 登陆,不需要密钥。

不过这个时候,你还是无法通过ssh访问虚拟机,因为ssh默认设置是禁用密码认证,所以你需要多做点工作。

#!/bin/sh
passwd ubuntu<<EOF
ubuntu
ubuntu
EOF
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart

这样你就可以使用ssh登陆到虚拟机,不需要通过console。

用root登陆

如果你希望直接使用root登陆,那么你就需要给root设置一个密码。

Snap7

这里设置的密码,就是镜像管理员的密码,也就是root的密码。

默认Redhat的RDO配置是不支持这个功能,你需要修改所有节点的nova.conf 文件

# Inject the admin password at boot time, without an agent.
# (boolean value)
#libvirt_inject_password=false
libvirt_inject_password=true

记住,是所有的节点,都是需要修改的。重启compute服务

/etc/init.d/openstack-nova-compute restart

当然你这样肯定还是无法ssh,使用root登陆,你就需要结合一下上面的一个例子,你就可以。

Snap8

就是输入下面的代码

#!/bin/sh
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart

这个时候,你就可以ssh,用root的身份登陆进去。

Cirros

Openstack的开发,基本都使用这个image来测试,因为他比较小,只有10M。

镜像介绍 

镜像的地址:

https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img

Cirros,是可以使用用户名和密码登陆,也可以使用密钥登陆

user:cirros
password:cubswin:)

这个密码比较特别,所以你可以使用上面的方法来设置这个镜像的root的密码,实现ssh登陆。

CentOS Gold Image

国内用CentOS比较多,不过在Openstack上的CentOS image,以前都只能自己去制作。这个需要一个大家信任的第三方来完成。最近有了一个选择

http://catn.com/labs/centos-images/

http://catn.com/2013/04/18/building-a-virtual-machine-image-for-centos/

教你如何制作CentOS的image,并且提供现成的image下载

镜像下载地址:

http://mirror.catn.com/pub/catn/images/qcow2/centos6.4-x86_64-gold-master.img

镜像账号

  • user:root
  • pass:changeme1122

你是可以在创建虚拟机的时候,直接把这个root的密码修改。默认是运行root登陆。

不过这个image,没有集成cloud-init。导致你看到的虚拟机名字,不是你设置的计算机名。

 

其他image资源

http://docs.openstack.org/image-guide/content/ch_obtaining_images.html

http://openstack.redhat.com/Image_resources

附录

你需要设置安全组,打开22端口才能ssh登陆。

Snap9

Nov 202013
 

采用豆瓣的pypi进行安装。

目前Devstack脚本已经支持Centos 6.5,那么你可以选择是在Ubuntu 12.04或者CentOS 6.5下来安装,步骤基本都是一样。就是一个git命令安装的区别.

最小化安装CentOS 6.5,我是关闭了selinux,不关闭应该也是可以的。,用root账号登陆。

对于CentOS6.5来说,devstack脚本会添加EPEL和RDO源。

2014年6月6日:文档更新,已经可以支持siwft和trove。不过安装过程,你可能会遇到cliff的bughttps://review.openstack.org/#/c/95916/,如果你遇到horizon无法启动,那么你就去 /etc/httpd/conf.d/ 里把那个配置文件后缀disable去掉就ok。还有就是安装过程,由于启用了heat,会下载一个heat的镜像,会导致安装过程很慢,可以考虑修改stackrc文件,不让下载。另外csdn的git源,也应该没法使用,因为项目太多没有同步了。

修复cilff的bug,估计上游很快就会merge

cd /opt/stack/cliff/
git fetch https://review.openstack.org/openstack/cliff refs/changes/16/95916/4 && git checkout FETCH_HEAD

Continue reading »

Sep 212013
 

上次看到Rackspace的官方blog,介绍如何利用Rackspace的公用云来测试Openstack,这个倒是比较有意思,当年测试vmware的ESX的过程,浮现在眼前。个人观点,一个IAAS是否成熟,就看能不能自己测试自己。现在外面讨论Openstack培训很多,我比较关心的问题就是:是否可以在Openstack的环境下进行配置,让学员搭建自己的Openstack环境。总不能天天喊虚拟化,但是培训的时候,却要使用实体服务器,有点说不过去。

原文:http://www.rackspace.com/blog/installing-rackspace-private-cloud-in-20-minutes-or-less/

Rackspace的公用云,是基于Openstack搭建,底层使用的是Xen Server。而Rackspace推出Openstack私有云,是采用KVM。目前Rackspace的私有云,是Grizzly版本,只支持Nova network。采用Chef管理。

除了测试Rackspace的私有云,也顺便体验了一下Rackspace的公用云,发现改变还是很大的。

 

Continue reading »

Jun 052013
 

Grizzly 是4月5号发布,不过我一直折腾Quantum网络是有问题的。其实我相信解决这些问题,应该有很多办法,需要的其实是时间。

过去如果测试Qauntum和OVS,我们需要一台服务器有3块网卡,这样很多朋友是不具备这样的条件,大家的情况都一样,都是只有一台服务器,2块网卡。我这次安装是使用老外的脚本去安装,目前脚本是支持GRE和VLAN模式,如果脚本装完后没问题,那么step by step的安装,其实也就简单。

文档更新记录

2013年6月5日:完成了基本文档,虚拟机可以创建成功,可以ping通虚拟机,不过meta有问题,密钥无法注入。看了一下quantum的配置,发现和Folsom版本差异不小。改天就研究。

网络拓扑

对于Quantum来说,他是至少需要3个网络,

  1. 管理网络(Management/API Network )例如消息队列,mysql访问的网络
  2. 数据网络(Data Network)就是虚拟机间的通讯网络
  3. 公共网络(Public / API Netwrok)  就是外界可以访问的网络
+------------------- Public/API Network
|
+------------+
|vm|vm|...   |
+------------+
| all in one |
+------------+
|     |      
+-----)------------- Management/API Network
      |             
      +------------- Data Network

当服务器只有两块网卡的时候,把Data Network和Management合并。

我的网络设置 /etc/network/interface

auto lo
iface lo inet loopback

# this NIC must be on management network
auto eth0
iface eth0 inet static
address 10.1.199.8
netmask 255.255.255.0
network 10.1.199.0
gateway 10.1.199.1
dns-nameservers 8.8.8.8 8.8.4.4


# this NIC will be used for VM traffic to the internet
auto eth1
iface eth1 inet static
    up ifconfig $IFACE 0.0.0.0 up
    up ip link set $IFACE promisc on
    down ip link set $IFACE promisc off
    down ifconfig $IFACE down
    address 192.168.98.8
    netmask 255.255.255.0

eth0,是管理网络,不过他是需要访问外网,安装的源,需要通过管理网络访问。如果你通过eth1去访问外网,会导致安装到一半的时候中断,因为脚本会对eth1设置bridge,导致网络无法使用。

简单点说,就是管理网络的网关是10.1.199.1,192.168.98.1是公网的IP的网关,这个在脚本里指定。

使用脚本

git clone git://github.com/jedipunkz/openstack_grizzly_install.git
cd openstack_grizzly_install

设置 setup.conf,你需要根据你的情况调整

#HOST_IP='10.200.10.57'
#HOST_PUB_IP='10.200.9.57'
#PUBLICNETWORK_NIC='eth0'
HOST_IP='10.1.199.8'
HOST_PUB_IP='192.168.98.8'
PUBLICNETWORK_NIC='eth1'

#CINDER_VOLUME='/dev/sdb'
CINDER_VOLUME='/dev/sda7'

# ---------------------------------------------------------------
# quantun parameters
# VM will be on this networks
# int_net : internal network
# ext_net : external network (floating ip range)
# ---------------------------------------------------------------
# NETWORK_TYPE must be 'vlan' or 'gre'
NETWORK_TYPE='gre'
INT_NET_GATEWAY='172.24.17.254'
INT_NET_RANGE='172.24.17.0/24'
EXT_NET_GATEWAY='192.168.98.1'
EXT_NET_START='192.168.98.220'
EXT_NET_END='192.168.98.229'
EXT_NET_RANGE='192.168.98.0/24'

# ---------------------------------------------------------------
# OS image paramters
# ---------------------------------------------------------------
#OS_IMAGE_URL="https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
#OS_IMAGE_NAME="Cirros 0.3.0 x86_64"
OS_IMAGE_URL="http://10.1.199.5/image/ubuntu-12.04-server-cloudimg-amd64-disk1.img"
OS_IMAGE_NAME="Ubuntu 12.04 x86_64"

运行脚本

脚本会自动添加Grizzly的源。

./setup.sh allinone

附录

https://bugs.launchpad.net/quantum/+bug/1160955